M3 - Construction
Updated Architecture
This updated diagram imploved the data flows and made some interactions clearer and easier to understand, as well as adding some interactions that were necessary, mainly to add a component that allows plugins to communicate with each other, this is mainly for plugins like the points system plugin that can be developed in the future.
Repository Division
As reflected in our project architecture, the CoffeeBreak platform adopts a plugin-oriented design, emphasizing modularity, scalability, and maintainability. Thus, our repository division closely mirrors this architectural approach, clearly distinguishing between core services, frontend interfaces, and dynamically integrated plugins.
Core Repositories
The project consists primarily of three fundamental repositories:
core
The core repository contains the foundational backend functionalities required by the system, such as:
- RESTful APIs (FastAPI)
- User authentication and authorization (Keycloak)
- Database integrations (PostgreSQL and MongoDB)
- Core business logic
- Plugin management and orchestration
- Activities and users management
frontend
The frontend repository provides the web interface tailored for event organizers and staff. Its key features include:
- Event creation and editing capabilities
- The ability to create and manage custom pages with components
- Authentication via Keycloak
event-app
A Progressive Web App (PWA) dedicated to end-users attending events, offering functionalities like:
- Viewing event activities
- Real-time notifications
- Can have other functionalities depending on the plugins used
Plugin Repositories
These repositories encapsulate individual plugins, each providing specific functionalities:
event-schedule-plugin
Manages and displays event schedules to attendees.
registration-system-plugin
Handles attendee registration and related processes.
sponsors-promotion-plugin
Allows management and promotion of event sponsors.
speaker-presentation-plugin
Manages profiles and information about event speakers.
floor-plan-plugin
Facilitates visualization and management of event floor plans or venue layouts.
activities-feedback-plugin
Collects attendee feedback through ratings and descriptions.
Notifications and Alerts
Plugins and services related to notifications:
webpush-notifications-plugin
Wrapper providing simplified integration of web push notifications.
webpush-sender
Dedicated service responsible for dispatching web push notifications using RabbitMQ and Node.js.
alert-system-plugin
Supports the creation and management of user alerts and notifications.
Others
Additional repositories supporting infrastructure, documentation, and reporting:
orchestrator
Facilitates the deployment of the entire ecosystem through container orchestration.
api-application-deployment
Bundles all necessary modules for streamlined deployment.
pi-coffeebreak.github.io
Mini-website containing all project-related information and documentation.
diagrams
Contains architectural diagrams and visual documentation of the project.
report
Repository dedicated to formal documentation such as the final report.
Advantages of Plugin-Oriented Repository Division
- Scalability: Allows independent scaling and deployment of individual plugins.
- Maintainability: Facilitates simpler, targeted updates and bug fixes.
- Flexibility: Easily add or remove features without affecting core functionalities.
- Collaboration: Encourages parallel development by distributed teams.
This modular structure provides clear delineation of responsibilities, simplifies maintenance, and significantly enhances the extensibility of the CoffeeBreak ecosystem.