I have just deployed a note taking web app, novusnotes.
The project is relatively large, it used postgres, auth0 for the auths, express/nodejs for the API, and react & redux for the client.
I wanted to share, more than the project, the key takeaways that I had in order to develop a big scale project efficiently.
Planning and organization are essential.
In larger projects you will have lots of interacting parts, which requires you to give extra effort in looking ahead and planning things out if you want things to go down smothly.
In my case, planning exactly what the API would do, how it would interact with the Auth0 service, and which endpoints would be available, made the job of building both the server and the client much more straightforward.
Keep things small.
That is an axiom in programming. It helps a lot, makes the project more manageable, loosely coupled and reusable.
When I started out the project, I was consistently asking myself “Ok, what’s the best way to implement this?”, and spending a lot of time thinking of the cleanest and most solid way to implement things. I think now that this is inefficient. I found that I was much more productive implementing things that worked and keep moving, whenever I saw that I had to decouple or change something, that could be easily done. That is not to say to do things in the worst way, but to focus on getting things done.
Building a bigger project is an excellent learning experience that every learning developer should have.
For me, it was an extremely beneficial, enjoyable and of course frustrating at times.
I learned to deploy on linux servers, use nginx as a reverse proxy, use rate limiters and much else.
I would recommend everyone that have not yet built a real deployable project do so.
The last take away is to keep things simple, straight-forward and manageable.