Rework the project description in readme
This commit is contained in:
parent
7191e9ab09
commit
e47c2a33d7
73
README.md
73
README.md
|
@ -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
|
||||
higher. To facilitate MongoDB connection, I will be using the [motor](https://pypi.org/project/motor/) library with
|
||||
[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.
|
||||
- Invalidation endpoints allow users to revoke access to individual tokens (e.g., in case of a lost device).
|
||||
- Session endpoints provide details on token creation, expiration, and active sessions
|
||||
|
||||
- **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
|
||||
|
||||
|
|
Loading…
Reference in a new issue