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

79 lines
2.4 KiB
Markdown

### 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