It was exactly one month ago that our newly-formed team was together brainstorming for a mobile web application to work on. 275 commits and 18 days later, Ideary was born.
People meet to brainstorm all the time — whether for new and innovative business ideas or little solutions to everyday problems. Brainstorming happens in the context of small school projects or even in large corporate environments. It’s ironic how our team came up with this idea as we too were brainstorming for a project to do, a problem to solve, something that would make lives easier for others.
Once the idea was conceived, work started quickly. After the initial experience with Project 1, I decided that trying to learn a completely new framework for a 3-week project was a big NO. Learning takes time, and while CS3216 is all about learning, this is just not the right time to learn a new framework. So, I chose to stick with something that I was at least familiar with — the MEAN stack.
There are three parts of this project that I would consider most challenging.
- Real-time. Libraries like Socket.IO makes things a whole lot easier, but implementing real-time features is still a pain. Apart from making sure the UI for all users are updated correctly when data changes, I also had to write checks to make sure users cannot listen to activities on other projects they do not belong to.
- Offline. If an offline mode wasn’t required for the project, I honestly would not have bothered with it. Making a real-time web-app is challenging on its on — making it work offline, too, is a whole new thing to me.
- Nesting of ideas. It started off as a simple idea that we wanted to have in our project. We never thought it was going to be so difficult to implement. When users create ideas in a project, we thought that grouping similar ideas together could be a good feature (something we ourselves would use). The difficult part for this was coming up with the schema and validating inputs so that the database would be consistent (for example, preventing a user from moving an idea to another project, or nesting an idea within another nested idea).
So, what have I learnt? Initially, I held that thought that CS3216 would have been much more effective in helping us come up with high-quality projects if we were to focus on just 1 or 2 projects through the term. However, having such tight deadlines for this project has somewhat given me the ability to rapidly scaffold and come up with working web-apps in a time-span much shorter than I thought I could finish.
Looking back, I’m really pretty happy with what I have achieved in the past weeks — a simple but fully-functional real-time web-app complete with a decent UI/UX.