Community Café
Snack bar management application and digital ordering system.
01 — The Context
The project consisted of modernizing an old student project (a snack bar management application) using more recent technologies. The main objective was to create a robust platform to manage a snack bar and offer students the ability to order snacks digitally, significantly reducing queue times.
The payment system is entirely fictitious and serves as a financial simulation for the university project’s needs, allowing users to top up a virtual wallet.

02 — Registration and Authentication
To join the system, a user must register with an association as a volunteer. Authentication is protected by a backend JWT token.
The login interface was designed to be clear and immediate. Once logged in, each user is linked to the overall balance of their association, enabling centralized transactions.

03 — Association Management
Administrators (Super Admins) have a comprehensive dashboard to manage the lifecycle of associations.
This view allows browsing active associations, tracking their statistics, and interacting with each organization’s profile. On the user side, the interface also allows browsing the product catalog, adding items to the cart, and using the fictitious balance.

04 — Request Processing
Creating an association or adding a member is not automatic: everything relies on an approval request system.
This interface lists pending requests. Here, the administrative team can approve or reject new associations. User orders go through a similar process with real-time status tracking (PAID, PREPARING, READY, COMPLETED, CANCELLED) powered by Socket.IO.

05 — Technical Architecture
To support this real-time application, the project was split into two distinct applications requiring rigorous communication:
The Frontend (Angular): The client-side architecture was modularly divided:
core: Authentication services, cart management, and Socket communication.features: Business components.layout&shared: Reusable interface elements.
The Backend (Flask):
The Python REST API was domain-modeled (authentication, products, orders, user). All endpoints are documented via Swagger.
Challenges encountered:
One of the major challenges was the integrity of the relational database (PostgreSQL). For instance, a bug prevented the proper deletion of rejected association requests from the request table. This foreign key constraint issue was diagnosed at the ORM level (SQLAlchemy) and then fixed with appropriate cascading deletions.