Coder Social home page Coder Social logo

ablasko32 / tutoring_school_system-fastapi-googlecalendarapi Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 412 KB

Tutoring school system designed in FastApi, integrated with Google Calendar Api

License: MIT License

Python 99.63% Dockerfile 0.26% Shell 0.11%
calendars fastapi python rest-api schoolsystem sqlalchemy-python googlecalendarapi booking-system

tutoring_school_system-fastapi-googlecalendarapi's Introduction

๐Ÿ“š TUTORING SCHOOL SYSTEM


This is a project i built for learning purposes, it uses FastApi to create a tutoring school backend system integrated with Google Calendar API.

Main idea is to create a ERP system to make it easier to manage tutoring school needs. Api is built on FastApi with Pydantic models for json serialization, async Sqlalchemy orm for database interaction, and Docker for easy deployment.


๐Ÿ’ก Features:

  1. Log in

    • Login/logout using google Oauth
  2. Keep track of students and teachers

    • Add, update and delete student and teacher data
    • filter students and teachers based on email, phone, or last name, pagination via page and limit
  3. Add new classes

    • filter classes based on name, date or description, pagination via page and limit
    • each class is registered on Google calendar
    • set size of class,name,description, start and end times
    • add atendees
    • set optional recurring frequency
    • delete and update events
  4. Student reservations

    • link student to new class, update Google calendar automaticaly
    • remove student from class
    • class size limit
    • all atendees recive notifications via email/popup
  5. Keep tracks of student invoices

    • filter invoices by date of creation or payment status, pagination via page and limit
    • get all invoices for student
    • organize invoices in one place
    • auto create invoice when class is booked
  6. Keep track of teacher finances

    • keep track of teacher work hours
    • generate paychecks, with payment amount, work hours
    • filter work hours by teacher id, start and end date of date range,pagination via page and limit
    • filter paychecks by teacher id ,payment status,start and end date of date range,pagination via page and limit
    • pay paychecks

๐Ÿ“– User guide:

Get ready:

  • First go to your Google Calendar page
  • Create new calendar, and copy calendar ID
  • in .env.example you have fields for configuring CALENDAR_ID and TIME_ZONE
  • delete .example part so you are left with .env file containing your data
  • You need to create a Google Cloud project ,enable Calendar API and get OAuth credentials

Copy your OAuth json file contents to creds.json, remove .example extension

Code will automatically create token.json in same folder to store session token


๐Ÿš€ Run with Docker:

  • Api is dockerized with docker-compose, one command runs the Api server, Postgres server and PgAdmin
  • Make sure to have Docker installed, if on Windows use Docker Desktop
  • Navigate to your project directory and run command
docker compose up
  • Verify the compose containers running with:
docker ps
  • Thats it!
  • School System Api is available on localhost:8000, PgAdmin is available on localhost:8080
  • Postgres Database is externally available on localhost:5433, while for containers use db:5432

For running without docker, you can set .env USE_LOCAL_DB=True, which will instead use local sqlite database

Use uvicorn api.server:app --reload for running without Docker


๐Ÿ“ƒ Docs:

  • Visit localhost:8000/docs for interactive Swagger UI docs, or localhost:8000/redoc for ReDoc docs.


In development! :)

tutoring_school_system-fastapi-googlecalendarapi's People

Contributors

ablasko32 avatar

Stargazers

 avatar

Watchers

 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.