Users will be able to register, login, out, to attend to events, and to unattend to events.
Events CRUD
API Flask-python3
middlewares | ||
migrations | ||
routes | ||
services | ||
.gitignore | ||
app.py | ||
config.py | ||
models.py | ||
README.md |
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
- sort by
-
The User will be abale to create/update a new event
-
The User will be able to login/out
-
The User can
Attend
/UnAttend
to an event -
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.
- The User will be able to login:
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.
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)
- User_id (string, required, foreign key)
- Event_id (Integer, required, foreign key)
- Notifiyed Made (bool, default: false)
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)