Skip to content

fossguild/joynride

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

joynride

Joynride is a community hitchhiking app.

joynride is a project that aims to integrate a hitchhiking system into different communities.

Being developed for the Distributed Computing subject, with the guidance of professor Francisco José Monaco and the participation of the students, joynride aims to provide a platform where you can connect with members of your community, such as university students, and provide a system for providing free rides between members.

About

The project, developed by engineering and computer science students from USP São Carlos, aims to promote an application that allows providing or receiving free rides between community members, facilitating mobility and encouraging drivers to share routes that have already been planned, using micro-rewards as a way of encouraging continuous use of the application.

Goals and Motivation

Encouraging the integration of shared rides between community members makes it easier to get around and promotes sustainable mobility. The app plans encourage people who are already going to make the journey and have spaces available in their cars to offer rides on a non-profit basis, but there may be incentives within the community to encourage travel.

How It Works

Within the app, the user can be a passenger, a driver or even both depending on the context, offering or asking for a ride in exchange for micro-rewards in order to stimulate shared rides between the community members. The app design will be similar to relationship apps, in which will be possible to find available rides to reach the most frequent destinations, also providing departure points.

The passengers can apply for available rides according to their interests, which will display the number of available car seats, times, and locations specified by the driver. There will also be ratings of the driver, as well as comments on behavior and driving skills to provide a better experience.

On the other hand, the drivers will be able to see all the users who applied for the ride that they are offering, as well as the passenger's information, ratings, and comments. Based on that, the driver will decide who to accept for the ride.

It is also intended to allow communication between the driver and the hitchhiker via messages, specifying or negotiating departure and arrival locations, to make the journey better for everyone.

Community

In this context, a community is a group of people with shared interests, needs, or connections, who are willing to offer or request rides, using the platform to facilitate mobility through ride-sharing. These communities can be defined by criteria such as:

  • Geographical proximity, such as university students, neighborhood residents, or company employees;
  • Common interests, such as participation in events or specific groups;
  • Institutional requirements, like the use of verified emails within an institutional domain (e.g., USP emails), ensuring security and trust among members.

This identification system helps create a reliable environment tailored to the needs of each community.

Authentication

The users will be able to join the desired community through institutional emails.

System Architecture

Frontend

The "to-be" model of the interface is shown in the project's Figma, and it can be seen in the docs/figma folder. The development of the frontend is inside of the app folder.

The joynride_app frontend, developed using Flutter, is structured to facilitate scalability and maintainability. Here's an overview of its architecture:

  1. Project Structure:

The lib directory contains the main application code, organized into subdirectories to separate concerns and enhance modularity.

  1. Core Components:

    Main Entry Point: The main.dart file serves as the application's entry point, initializing necessary configurations and running the app.

    UI Components: The widgets directory houses reusable UI components, promoting consistency across the app.

    State Management: The app employs a state management solution to handle application state efficiently, ensuring responsive and interactive user experiences.

    Routing: Navigation between different screens is managed through a routing system, defining the flow and accessibility of various parts of the app.

    Services: The services directory includes classes responsible for handling data retrieval, such as API calls and database interactions, abstracting business logic from UI components.

    Models: Data models representing the application's core entities are defined here, facilitating type safety and data manipulation.

  2. Design Patterns:

    Separation of Concerns: By dividing the codebase into distinct layers (UI, business logic, data), the app adheres to the separation of concerns principle, enhancing readability and maintainability.

    Reactive Programming: The app utilizes reactive programming paradigms, allowing for efficient state management and real-time UI updates in response to data changes.

  3. Dependencies:

    Third-Party Packages: The app integrates various Flutter packages to extend functionality, such as provider for state management and http for network requests.

  4. Best Practices:

    Responsive Design: The UI is designed to be responsive, ensuring compatibility across different device sizes and orientations.

    Error Handling: Comprehensive error handling mechanisms are implemented to manage exceptions and provide feedback to users.

    Testing: Unit and widget tests are written to ensure code reliability and facilitate continuous integration processes.

This architecture aligns with Flutter's best practices, promoting a clean, efficient, and scalable codebase for the joynride_app frontend.

Backend

The backend details are in the serv folder.

Database

To store information such as:

  • Drivers and passengers profiles
  • Ride history
  • Ratings and comments

Features

  • Drivers and passengers registration
  • Offering rides with details of time and place
  • Passenger application for rides
  • Rating system and comments
  • Message exchange between users

Functional and non-functional requirements

...

Schedule

About

Joynride is a community hitchhiking app.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 15