Skip to content

RIDECI/RIDECI_FRONTEND

Repository files navigation

πŸš—βœ¨ RidECI Frontend

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.

πŸ‘₯ Developers

All the members of the CVDS / DOSW 1 team.

Participating squads:

  • πŸ›οΈ TROYA
  • 🌊 POSEIDON
  • βš”οΈ NEMESIS
  • 🧠 ATENEA
  • πŸ’ͺ KRATOS
  • πŸ”± HADES

πŸ“‘ Content Table

  1. Project Architecture
  2. Microservices Integration
  3. Technologies
  4. Branch Strategy
  5. System Architecture & Design
  6. Connections with External Services
  7. CI/CD Deployment
  8. Demos
  9. Getting Started

πŸ›οΈ Project Architecture

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.

πŸ“‚ Modular Per Functionality Structure

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

πŸ”— Microservices Integration

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

Technologies

The following technologies were used to build and deploy the project:

πŸš€ Frontend

React Vite shadcn/ui Supabase React Router Google Maps API

GitHub Actions Vercel

🧩 Backend & Core

Java Spring Boot JWT Maven

πŸ—„οΈ Database

MongoDB PostgreSQL

πŸ› οΈ DevOps & Infrastructure

Docker Kubernetes Railway Vercel

πŸ”„ CI/CD & Quality Assurance

GitHub Actions SonarQube JaCoCo

πŸ“˜ Documentation & Testing

Swagger Postman

🎨 Design

Figma

πŸ’¬ Communication & Project Management

Jira Slack

✨ Feature Branches

Used for new features or non-critical improvements.

Format: feature/[shortDescription]

Examples:

  • feature/authenticationModule
  • feature/securityService

Rules:

  • 🧩 Case: strictly camelCase (lowercase with hyphens).
  • ✍️ Descriptive: Short and meaningful description.

🌿 Branches Strategy & Structure

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

🏷️ Naming Conventions

🌿 Branch Naming

✨ Feature Branches

Used for new features or non-critical improvements.

Format: feature/[shortDescription]

Examples:

  • feature/authenticationModule
  • feature/securityService

Rules:

  • 🧩 Case: strictly camelCase (lowercase with hyphens).
  • ✍️ Descriptive: Short and meaningful description.

πŸ“¦ Release Branches

Used for preparing a new production release. Follows Semantic Versioning.

Format: release/v[major].[minor].[patch]

Examples:

  • release/v1.0.0
  • release/v1.1.0-beta

πŸš‘ Hotfix Branches

Used for urgent fixes in the production environment.

Format: hotfix/[shortDescription]

Examples:

  • hotfix/fixTokenExpiration
  • hotfix/securityPatch

πŸ“ Commit Message Guidelines

We follow the Conventional Commits specification.

🧱 Standard Format

<type>(<scope>): <short description>

System Architecture & Design

This section provides a visual representation of the module's architecture ilustrating the base diagrams to show the application structure and components flow.

Travel Management Screen Flow Diagram

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.

Screens Flow Travel Management Diagram

Geolocalization & Tracking Screen Flow Diagram

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.

Screen Flow Geolocalization & Tracking Diagram

Login & Verification Screen Flow Diagram

Profiles & Reputation Screen Flow Diagram

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.

Profiles & Reputation Screen Flow Diagram

Statistics & Sustainability Screen Flow Diagram

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. Statistics & Sustainability Screen Flow Diagram

Security & Communication Screen Flow Diagram

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.

Security & Communication Driver Screen Flow Diagram

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.

Security & Communication Passenger Screen Flow Diagram

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.

Security & Communication Companion Screen Flow Diagram

Institutional administration Flow Diagram

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.

Institutional administration Flow Diagram

Continious Integration & Continious Deployment

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.

Functional Demos

This section provides a visual demostration of how the web application will work showcasing the design, features and functionality.

πŸ” Login & Verification (Kratos team)

Login / Verification Demo

🚘 Travel Management (Nemesis team)

Travel Management Demo

🚨 Alerts & Notifications (Atenea Team)

Aminnistrator Panel & Notifications Demo

⭐ Profiles & Reputation System (Troya Team)

Reputation System Demo

πŸ“ Geolocation & Tracking (Nemesis Team)

Geolocation & Tracking Demo

πŸ’³/πŸ“… Payments & Reservations (Poseidon Team)

Payments & Reservations Demo

πŸ“Š Statistics & Sustainability (Troya Team)

Reputation System Demo

πŸ”± Security & Communication (Hades Team)

Security & Communication Demo


πŸ‘Ύ WEBSOCKET

https://www.youtube.com/watch?v=YdA5qlW7NCg

πŸš€ Getting Started

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.

Clone & open repository

git clone https://github.com/RIDECI/RIDECI_FRONTEND.git
cd RIDECI_FRONTEND

You can open it on your favorite IDE

Install dependencies

Download dependencies before compile the source code

npm install

Run the project locally

To run the project locally enter the following command

npm run dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 21

Languages