This is the roadmap I would take, and I would recommend if someone asked me how to learn to make back-end servers using ExpressJS and PostgreSQL (or any other databases, I’m going to use PostgreSQL as an example here).\n
Keep in mind, the goal of this roadmap or any tutorial, especially in coding, is NOT to create the next best application, software or program. The actual goal lies in the knowledge you gain along the way.
Starting Point #
In here we are going to build a basic foundation to make simple requests from the front-end and handle them in our back-end.
- Front-end Ready: Ensure you have a basic front-end (HTML/JavaScript or a cloned app from Github) to display your to-dos.
- Back-End Setup: Use ExpressJS for server-side logic and PostgreSQL for data storage. Consider
Sequelize
if you like ORM’s orpg
for easier database interactions. - CRUD Endpoints: Create API endpoints in ExpressJS to Create, Read, Update, and Delete to-dos in your PostgreSQL database.
- Connect the Dots: Use the Fetch API or
Axios
to connect your front-end to the back-end, allowing data exchange between your app and the server.
Checkpoint #
Congratulations! You’ve built a clean REST API, reusable for future projects.
Useful features #
Once you acheive the Starting Point you can either stop and have a nice and simple API that can do the basic of any back-end. But if you want to learn more, then we need to spice things up and increase the complexity a little bit.
The features listed here are not in any order what so ever, these are just some features that will surely be very benefitial to learn how to code.
- Pagination: Enhance your to-do list by adding pagination to the \“GET all\” endpoint, managing large data sets efficiently.
- Search, Filter & Order: Implement an advanced search endpoint, allowing users to find specific to-dos with ease. ( filtering, ordering and searching )
- Medias: Elevate your app by adding image upload functionality with Multer. YouTube is your friend!
- Authentication: Secure your app with either sessions or the popular JWT approach. Protect sensitive routes and personalize to-dos based on users.
This last point about authentication is a bit tricky. You will need to make changes to your database so that a to-do is assigned to a specific user.
Checkpoint #
You learned about middlewares & http-only cookies I presume? If not, it might be a good idea to do some research about them.
Good Job! Now you have a REST API with authentication, advanced research, pagination & media upload.
More! #
Having only finished the \“starting point\” section, or having finished both, or just the \“useful features\” one, you should be proud of yourself! Show it to the world and don’t be afraid of criticism. Take the criticism as fuel and make things even better next time.
By showing it to the world, I mean deploying your project on the internet, for free of course.
You can do so by using Vercel for your front-end and back-end, and your database in Render.
Self Host #
I like when I host my own things.
It IS more work, but I like to have more control over my applications. And if you like to have more control and see what’s behind the scene like me, then self hosting is a nice path to take.
This will probably cost you some money. Free servers can be found, but they usually don’t retain your data. So I recommend getting yourself the cheapest VPS possible to play with that.
- Docker: Leverage Docker, Dockerfiles and Docker Compose for efficient containerization of your front-end and back-end.
- CI/CD: Master GitHub Actions or Gitlab CI for automated builds and deployments, ensuring a seamless workflow.
Checkpoint #
You learned how to use Docker and how to deploy applications. You might even
Real Nice! Getting here means you are capable of hosting or self hosting anything you want.
The End. #
Remember, this is just the beginning.
Keep building, exploring new technologies, and don’t be afraid to experiment. The world of back-end development awaits, and with dedication, you’ll soon be crafting powerful and secure applications!
If you think this needs any tweaks or adjustments, please let me know. We are all learning, so thank you in advance for sharing your knowledge with me.
See ya 👋