Event-CRUD-Flask-python3-API/README.md
2024-01-09 11:22:53 +02:00

2.4 KiB

Flask-API managing Users And Events

A RESTful API that manages events, offering users the ability to schedule, retrieve, update, delete, and be reminded of events with additional advanced features.

Flask-API - Interface

  • The User Will be able to retrieve upcomming event/s

    • sort by
      • popularity
      • date
    • filter by:
      • location
  • The User will be abale to create/update a new event

  • The User will be able to login/out

  • The Anonymous User will be able to create a new user

  • Event:

    • (Auth Users) An event is an upcomming Party/Concert/Sport event/etc. It is tied to a user that created this event.
  • Authentication:

    • The User will be able to login:
      • The API will generate a JWT token and set the userId inside the Flask session.
      • The API will return the JWT token in the response cookie header.

Backend-reminder

  • The Users will be able to be reminded of upcoming events.
  • The backend will Send reminders 30 minutes before the event's scheduled time based on there location and the event location.

Database

  • Sqlite(for simplicity use)

Schema

  • User -

    • Id (UUID, primary key)
    • Name (string, required)
    • Email (string, required, unique)
    • Password_hash (string, required)
    • location (string, required)
  • Event

    • Id (int, primary key)
    • Title (string, required)
    • Description (string, required)
    • Location (string, required)
    • Deleted (bool, required)
    • DueDate (string, required)
    • User_id (string, required, foreign key)
  • User Event Association (Many to Many) - this table will hold the notifyed users to the event

    • User_id (string, required, foreign key, primary key)
    • Event_id (Integer, required, foreign key, primary key)

API EndPoints

  • GET /events (Optional: ?['location' = String, 'sort_by' = Enum('date'/'popularity'/'creation' ) ])

  • GET /events/{id} - returns a single event

  • POST /events - create a new event (Auth)

  • PUT /events/{id} - update an event (Auth + authorized)

  • DELETE /events/{id} - (Soft)delete an event (Auth + authorized)

  • GET /user - returns all users

  • GET /user/{id} - returns a single user

  • POST /user - create a new user

  • PUT /user/{id} - update an user (Auth + authorized)

  • DELETE /user/{id} - (Soft)delete an user (Auth + authorized)

Application init flow

  • init schaduler
  • run the flask app

how to run?

  • pip install -r requirements.txt
  • flask db upgrade
  • flask run