RidECI is the official web platform for shared mobility at the
Escuela Colombiana de IngenierΓa Julio Garavito.
The frontend enables students, professors, and administrative staff to easily use the web application through an interactive interface that allows them to:
- π Authenticate using institutional credentials.
- π Browse, create, and book trips.
- πΊοΈ View routes in real time through geolocation.
- β Rate trips and check other usersβ reputations.
- π¨ Report alerts, use chat features, and access safety tools.
- π Access administrative dashboards and advanced statistics.
All the members of the CVDS / DOSW 1 team.
Participating squads:
- ποΈ TROYA
- π POSEIDON
- βοΈ NEMESIS
- π§ ATENEA
- πͺ KRATOS
- π± HADES
- Project Architecture
- Microservices Integration
- Technologies
- Branch Strategy
- System Architecture & Design
- Connections with External Services
- CI/CD Deployment
- Demos
- Getting Started
RidECI have a unacoplated hexagonal - clean architecture where looks for isolate the business logic with the other part of the app dividing it in multiple components.
This architecture allows:
- β Separation of Concerns: Distinct boundaries between logic and infrastructure.
- β Maintainability: Easier to update or replace specific components.
- β Scalability: Components can evolve independently.
- β Testability: The domain can be tested in isolation without a database or server.
This project uses a modular per functionality structure dividing the big system in modules, each one responsible of a functionality. This structure allows to organize the code and construction of components, easying the reuse of components, maintenance and project scalabilty.
π RIDECI_FRONTEND
β£ π public/ # π Static public assets (favicon, manifest, etc.)
β β π index.html
β£ π src/
β β£ π assets/ # πΌοΈ Images, logos, static resources
β β£ π components/
β β β π ui/ # π¨ Reusable UI components
β β£ π hooks/ # β»οΈ Reusable special functions
β β β π use-mobile.ts # π± Detects mobile viewport usage
β β£ π lib/ # π§° Utility functions, helpers, shared config
β β£ π modules/
β β β£ π administration/ # π’ Administration module
β β β£ π authentication/ # π Login, register, sessions, roles
β β β£ π geolocalization/ # π Location handling, maps, tracking
β β β£ π payments/ # π³ Payment flow and transactions
β β β£ π reputation and profiles/ # β User profiles and reputation system
β β β£ π security/ # π‘οΈ App-wide security and permissions
β β β£ π statistics and sustainability/ # π Metrics, analytics, sustainability tracking
β β β£ π trips/ # π§ Trip creation and management
β β β π users/ # π€ User management
β β β£ π components/ # π§© UI components specific to this module
β β β£ π hooks/ # π Custom hooks used inside the module
β β β£ π pages/ # π Page-level views (routed screens)
β β β£ π types/ # π TypeScript types & interfaces
β β β£ π utils/ # π οΈ Helper functions and module utilities
β β β π index.ts # π Barrel file exporting module resources
β β£ π App.tsx # π§ Root application component
β β£ π AppMainCard.tsx # π³ Main card layout/UI container
β β£ π AppSidebar.tsx # π Main sidebar navigation
β β£ π Home.tsx # π Home / main dashboard view
β β£ π Layout.tsx # π§© Global layout wrapper
β β£ π main.tsx # π Application entry point
β β π index.css # π¨ Global styles
β£ π .gitignore
β£ π components.json # βοΈ UI config (e.g., shadcn)
β£ π eslint.config.js # π§Ή ESLint rules and configuration
β£ π package.json # π¦ Project dependencies
β£ π package-lock.json
β£ π pnpm-lock.yaml
β π README.md # π Main documentation
The frontend does not work alone. It interacts with the RidECI Ecosystem via REST APIs, Message Brokers and API Gateway.
These are the functionalities associated with each resposible module:
| Functionality | Backend Module |
|---|---|
| π Login & Verification | KRATOS_AUTHENTICATION_BACKEND |
| π Travel Management | NEMESIS_TRAVEL_MANAGEMENT_BACKEND |
| π Reservations | POSEIDON_SEARCH_AND_BOOKING |
| π¨ Alerts & Notifications | ATENEA_NOTIFICATIONS_BACKEND |
| β Profile & Reputation System | TROYA_REPUTATION_BACKEND |
| π Geolocation & Tracking | NEMESIS_ROUTES_AND_TRACKING_BACKEND |
| π³ Payments | POSEIDON_PAYMENTS |
| π Statistics & Sustainability | TROYA_STATISTICS_SUSTAINABILITY_BACKEND |
| π± Security & Communication | HADES_COMMUNICATION_SECURITY_BACKEND |
The following technologies were used to build and deploy the project:
Used for new features or non-critical improvements.
Format:
feature/[shortDescription]
Examples:
feature/authenticationModulefeature/securityService
Rules:
- π§© Case: strictly camelCase (lowercase with hyphens).
- βοΈ Descriptive: Short and meaningful description.
This module follows a strict branching strategy based on Gitflow to ensure the ordered versioning,code quality and continous integration.
| Branch | Purpose | Receive of | Sent to | Notes |
|---|---|---|---|---|
main |
π Stable code for preproduction or Production | release/*, hotfix/* |
π Production | π Protected with PR y successful CI |
develop |
π§ͺ Main developing branch | feature/* |
release/* |
π Base to continous deployment |
feature/* |
β¨ New functions or refactors to be implemented | develop |
develop |
π§Ή Are deleted after merge to develop |
release/* |
π¦ Release preparation & final polish. | develop |
main y develop |
π§ͺ Includes final QA. No new features added here. |
bugfix/* o hotfix/* |
π οΈ Critical fixes for production | main |
main y develop |
β‘ Urgent patches. Highest priority |
Used for new features or non-critical improvements.
Format:
feature/[shortDescription]
Examples:
feature/authenticationModulefeature/securityService
Rules:
- π§© Case: strictly camelCase (lowercase with hyphens).
- βοΈ Descriptive: Short and meaningful description.
Used for preparing a new production release. Follows Semantic Versioning.
Format:
release/v[major].[minor].[patch]
Examples:
release/v1.0.0release/v1.1.0-beta
Used for urgent fixes in the production environment.
Format:
hotfix/[shortDescription]
Examples:
hotfix/fixTokenExpirationhotfix/securityPatch
We follow the Conventional Commits specification.
<type>(<scope>): <short description>
This section provides a visual representation of the module's architecture ilustrating the base diagrams to show the application structure and components flow.
This screen flow shows how the system will appear from the perspective of a driver or a lead escort. It illustrates trip creation and the various options that will appear if all fields are not completed, such as canceling or confirming the trip. We handle these processes. Similarly, we have the trip details screen, which displays information such as origin, destination, departure date and time, confirmed passengers, and vehicle details. Pop-ups are used appropriately in case the driver needs to take action before moving on to options in other modules.
The diagram illustrates a navigation flow focused on safety and usability during a trip, where the main go-location and interactive map interface acts as a command center, adapting the experience to the user's situational needs. From this real-time data visualization, the system branches out to cover three critical scenarios: enabling emergency management through a sequence of pop-ups to share tracking information; facilitating interaction with the driver via chat, referencing the communication module; and providing trip details, referencing the trip management and creation module.
This demonstrates that CRUD actions related to profiles are concentrated on the View Profile screen. From here, users can access options such as creating, updating, or deleting a profile, as well as viewing their travel history, badges, and comments associated with their reputation, all via distinct buttons. After creating or updating a profile, or reviewing reputation information (trips, comments, badges), the flow always returns to the main profile view screen, keeping the user at a clear point of reference. In contrast, when a profile is deleted, a password verification is performed to ensure security. Once the process is complete, the flow redirects the user to the login screen, indicating that their previous identity no longer exists within the system.
The diagram shows the navigation flow between the main screens of the Statistics and Sustainability module. From the Individual Statistics screen, the user can use the buttons at the bottom to navigate to General Statistics (swipe left), Download Reports (swipe right), or Filter Statistics (swipe down). Each arrow indicates that the screen change occurs when the corresponding button is selected at the bottom of the interface, thus illustrating how the user moves between the different functionalities of the module.

Drivers
For drivers, the first step (and obviously) is to log in with their credentials to access the features based on their role. Once inside the platform, drivers can offer a trip from the homepage to begin receiving bookings from passengers looking to join the trip. After creating the trip and ensuring it has at least one booking, the driver can communicate with the passenger(s) via chat to coordinate the journey (note that the chat will be available until the trip is complete). Additionally, once the trip begins, the driver can access the emergency button from the geolocation screens, and an automatic deviation alert will also be enabled. Finally, at the end of the route, drivers can rate the passengers and, if they deem it necessary, submit a report for any incidents or inappropriate behavior during the trip.
Passengers
As we specified previously in the flowcharts, access to functionalities by role is similar in some aspects. Thus, passenger users will also need to log in to the platform using their credentials.
Subsequently, they will seek to reserve a spot on one of the available trips already created by the drivers so that (in a process similar to the previous one) these passengers can access the chat corresponding to the route to communicate with the driver.
Likewise, when the trip begins, passengers can access the chat from the geolocation screens and press the emergency button when necessary.
Of course, an automatic alert is enabled in case the driver deviates from the route, and when the trip ends, passengers can rate their driver and the other passengers; if they need to fill out a report, they can also do so.
Companions
Again, a situation similar to the two explained previously. The accompanying user logs into the system and decides whether to create or join a group route.
Regardless of the action they take, the companion will have access to a group chat to plan the trip with the other members. Similarly to the previous cases, they have access to the emergency button, automatic alerts for deviations, and, at the end of the trip, the rating and reporting system corresponding to each of the other individuals.
This section is accessed by logging into the admin account and features a main screen where you can review metrics, validate or reject drivers, and review reports to take action based on their severity.
Next, there's the user screen, where you can also validate or reject drivers, suspend accounts or profiles, reactivate accounts, and view user details.
We also have general application statistics.
The admin has a reports screen where they can take action by suspending the account or profile depending on the severity of the issue. They can also export these reports to Excel or PDF for archiving.
Finally, there's the settings screen where you can set driver schedules and enable or disable notifications.
In this section, we will address the deployment and continuous integration of the frontend where we can see the workflow in pre-production and production.
This section provides a visual demostration of how the web application will work showcasing the design, features and functionality.
π Login & Verification (Kratos team)
π Travel Management (Nemesis team)
π¨ Alerts & Notifications (Atenea Team)
Aminnistrator Panel & Notifications Demo
β Profiles & Reputation System (Troya Team)
π Geolocation & Tracking (Nemesis Team)
π³/π Payments & Reservations (Poseidon Team)
π Statistics & Sustainability (Troya Team)
π± Security & Communication (Hades Team)
https://www.youtube.com/watch?v=YdA5qlW7NCg
This section guides you through setting up the project locally. This project requires Node.js, please ensure you have it installed on your system before running the project commands.
git clone https://github.com/RIDECI/RIDECI_FRONTEND.gitcd RIDECI_FRONTENDYou can open it on your favorite IDE
Download dependencies before compile the source code
npm installTo run the project locally enter the following command
npm run dev





