The project for my Master's in Software Engineering was building a web application that allowed users to build web applications. This was back 2007 and while it worked, it was very hacky. Now with tools like MongoDB, building software like this is much easier.
There is also a HUGE opportunity for a platform like this as it lowers the barrier for the level of skill it takes to create applications.
What it does
Our project allows a user to build custom applications by defining the data model and creating customized forms and views for managing the data. It supports file collaborators, attachments, photos and links between data models.
The platform also supports dynamic filtering and sorting of data within the platform.
How I built it
Our platform was built using Ruby on Rails for the application layer with MongoDB for our dynamic database. Mongo's flexibility is crucial to this platform given that we allow users to create their data models at runtime.
Ruby on rails supports and MVC architecture and in our case we've created our own object oriented abstraction of the components of models and views (we have a Model model and a View model etc). This is a powerful idea when combined with MongoDB.
Challenges I ran into
There were a few challenges to building this platform. The most significant was how to links between data objects. We decided to make relationships between objects bi-directional. So each link makes a connection between both data types. This requires us to do additional data management on the server, but makes it very easy for a end user to see how data is related.
Support for attachments was also mildly complicated. We decided to use S3 from AWS for file storage for attachments and photos and have references to attachment metadata within our collections that host files.
The final challenge is fairly broad, but building a great UI for a platform like is this a challenge. We are happy with the solutions we can up with to support various views and customization of the UI, but this was difficult.
Accomplishments that I'm proud of
Honestly I am very proud of everything we built here. It truly does allow a user to create great looking CRUD applications that serve very useful purposes.
One thing our platform does that is not common among tools in the market today is supporting this customizing of views display the data model. Our UI for customization is simple, but it works and the resulting views work well on both desktops and on mobile.
What I learned
We have built dynamic applications like this in the past but nothing quite like this. We learned that it is truly possible to create a great platform for building applications without writing code. There is still a significant amount of work to make our platform world-class and support more general use-cases, but it is very possible to build this platform and 10x the usage of MongoDB with great UI tooling.
What's next for NimbleHQ
NimbleHQ needs a few things to take it to the next level. Support for Notifications and Integrations (with 3rd party platforms like GitHub or Twilio) are some of the features currently on our roadmap.
We also have an idea for branding this platform that would make it way more mainstream (like was the case with Trello which became very mainstream despite developer roots).