Code Monkey home page Code Monkey logo

school-api's Introduction

School Management System

Description

I have created a basic API to showcase some cool features that I have developed in past projects. Although I can't share the actual codebases due to legal and ethical reasons, this API demonstrates my skills and experience in various aspects of software development.

Features

  • API + JWT (Bearer Authentication)
  • API Rate Limit for Auth and Anom users
  • API versioning example StudentViewSet
  • Custom queryset (Students)
  • Model Validation (Attendance)
  • Email for stake holder when trigger activated
  • RabbitMQ queue to handle user creation
  • Django Commands to populate database and call consumers
  • Pytest
  • Read CSV Files from commands
  • Linter and Code Quality with Ruff
  • Docker and Docker Compose Features

Requirements

  • Python 3.10+
  • Django
  • PostgreSQL
  • Docker

Databases

Students (1 - N) -> Enrollments (1 - 1) -> Classes (1 - N) -> Attendances

Teachers (1 - N) -> Classes

img.png

Setup

Clone the repository

git clone https://github.com/yourusername/school-management-system.git
cd school-management-system

Create .env

SECRET_KEY=your-secret-key
DEBUG=True
ACCESS_TOKEN_LIFETIME=5
REFRESH_TOKEN_LIFETIME=1
POSTGRES_DB=mydatabase
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_HOST=db
POSTGRES_PORT=5432
DJANGO_TEST_ENV=True
CELERY_BROKER_URL=amqp://guest@rabbitmq//
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest

Run this project with Docker

docker-compose build

Everytime that you apply new features, make sure to run the build command to build a new docker instance with the latest features

docker-compose up

or

docker-compose up --build

Populate Database

docker-compose run web python manage.py populate_db src/students/temp/students_2024_07_15.csv

Call Producer/Consumer

docker-compose run web python manage.py send_students
docker-compose run web python manage.py consume_students

You can check the messages at RABBITMQ Interface

user: guest password: guest

Semantic Commits Flag

feat: for new features test: when increasing or fixing testing coverage fix: for fixing issues or mismatching characters doc: for document related issues or features

school-api's People

Contributors

vinicodex avatar

Watchers

Lucian avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.