Rework the project description in readme

This commit is contained in:
Peter Vacho 2024-12-30 16:10:24 +01:00
parent 7191e9ab09
commit e47c2a33d7
Signed by: school
GPG key ID: 8CFC3837052871B4

View file

@ -1,19 +1,72 @@
# Backend for the Event Management System project # Event Management Backend
This project was created as a part of the final assignment for AP7PD, alongside the frontend that is tracked in a separate repository. The Event Management Backend is a REST API developed using the FastAPI framework. It serves as the backend for the Event
Management System, providing the essential data and functionality for a calendar-based event management application.
This project is also a dependency for the frontend project, which is re-used as the final project for AP7MP as well. This project was created as part of the final assignment for **AP7PD**, which specifically required a backend
implementation. For **AP7MP**, the focus was on the frontend, however, since the same frontend project is being reused,
this backend is introduced as a dependency. While not formally part of the graded assignment for AP7MP, the backend
plays a crucial role in providing the necessary functionality.
## Description ## Overview / Key Features
This backend facilitates an Event Mangement System application, which is essentially a calendar-like application, where people can track various events. The backend is designed with robust and secure API functionality to support the Event Management System. It includes the
following key features:
## Technology - **User Management:** Provides endpoints for user registration and login. Passwords are securely stored as salted
bcrypt hashes, ensuring strong protection against unauthorized access.
- **Token-Based Authentication:** Implements JWT tokens using the Bearer scheme for secure and stateless authentication.
The system supports both access tokens (short-lived, typically one hour) and refresh tokens (long-lived, typically one
month), allowing users to obtain new access tokens without reauthentication.
- **Session and Token Management:** Tokens are server-side validated and tracked in a dedicated database table, enabling
advanced session management features:
The backend uses the [FastAPI](https://fastapi.tiangolo.com/) framework with [Python](https://www.python.org/) 3.12 or - Invalidation endpoints allow users to revoke access to individual tokens (e.g., in case of a lost device).
higher. To facilitate MongoDB connection, I will be using the [motor](https://pypi.org/project/motor/) library with - Session endpoints provide details on token creation, expiration, and active sessions
[Beanie](https://beanie-odm.dev/) object-document mapper (ODM). The project will also contain a Dockerfile and a
docker-compose file, which will make starting it very easy and reproducible. - **Security-First Design:** Every endpoint includes proper security measures to prevent unauthorized access to user
data. While the architecture is built to potentially allow for future admin-level accounts, no such functionality is
included in this implementation.
- **Category Management:** Users can manage their categories through dedicated endpoints, including creating, viewing,
and deleting their custom categories.
- **Event Management:** Includes comprehensive endpoints for managing events. Events support multiple categories and can
be customized to suit various use cases.
- **Invitation System:** Provides endpoints for inviting users to events. Invitations generate notifications, and
invitees can accept or decline invitations. Accepted invitations automatically add the invitee as an attendee, allowing
events to appear on their calendar.
- **Notification System:** Notifications are produced for specific actions, such as:
- A user being invited to an event.
- The invitor being notified when the invitee accepts or declines their invitation. Notifications can be retrieved through dedicated endpoints.
- There is currently no support for creating custom notifications (e.g. by an administrator) through endpoints,
however, the project is designed with scalability in mind and support such functionality would be fairly easy to add
in the future, if needed.
- **Logging Support:** Basic logging functionality records important actions and aids in debugging. While functional,
logging could be expanded for more comprehensive coverage in future iterations.
- **Deployment Ready:** The backend includes a Dockerfile and docker-compose configuration for simple and reproducible
deployment, complete with a MongoDB instance.
## Technology Stack
The backend is implemented using the following technologies:
- **[Python](https://www.python.org/):** Version 3.12 or higher.
- **[FastAPI](https://fastapi.tiangolo.com/):** A modern, fast (high-performance), web framework for building APIs with
Python.
- **[MongoDB](https://www.mongodb.com)**: NoSQL database used to store events, users, and categories.
- **[motor](https://pypi.org/project/motor/):** Asynchronous MongoDB driver for Python.
- **[Beanie](https://beanie-odm.dev/):** An async ODM (Object Document Mapper) for MongoDB with Motor.
- **[Rye](https://rye.astral.sh/):** A dependency management tool for Python.
- **[Docker](https://www.docker.com/):** Used for containerization and deployment.
## Frontend Integration
This backend is designed to work seamlessly with the Event Management Frontend, a native Android application written in
Kotlin. The frontend interacts with this backend to manage users, events, attendees, and categories.
You can find the source code and detailed information about the frontend at: [Event Management Frontend
Repository](https://git.itsdrike.com/ap7pd/event-management-frontend)
## Installation ## Installation