Building Educational CMS API - Part 1: Project Setup

Building Educational CMS API - Part 1: Project Setup

I started to build an API using Django and I will be documenting all the processes that I go through for myself and maybe others who are interested.

In this article, we'll go through what I have done so far and explain them as we go. Before that let me quickly introduce the project's main goal.

Link to repository: github@khasizadaj/edu_cms_api

Introduction

Educational Content Management System API (from now on edu_cms_api) is going to be an API designed for course creation, student enrollment, quiz administration, and progress tracking.

This reminds me good old Quizzen than I attempted to build few years back... 🥹 It failed successfully :) You can have a look at its still existing LinkedIn page from this link. Those days were amazing!

Updates: Project Setup

At the moment I have only worked on project setup and initial documentation of the project. As I want to experiment further with Django, that's gonna be our web framework of choice. Because I am building an API, djangorestframework library was the man of the show in that regard. It has lots of built-in functionalities that make creating API much easier.

Other changes are development related and they consist of:

  • poetry: to manage dependencies

  • mypy: to apply static type checking to the codebase

  • flake8 & black: for linting and code formatting

  • pre-commit: to enforce linting and code formatting before every commit

  • unittest: to test the project (Note: It's a built-in package)

  • python-dotenv: to manage environment variables

You can refer to REAADME.md file of the project to see how you can run the project locally.

Conclusion

This was a summary of the changes I made to the project. From time to time I will come to you with new updates! See you in the next part. Ciao!

References

  1. What is poetry?

  2. dotenv

    1. What is dotenv

    2. dotenv tutorial by "neuralink"

  3. The easy way to keep your repos tidy, i.e. pre-commit

Did you find this article valuable?

Support Javid Khasizada by becoming a sponsor. Any amount is appreciated!