GitHub

Trot: University Scooter Sharing Software Project

Note that, as this is a University project, you will need to request access to the repository to view the code.

This project is a University coursework for a course named "Software Engineering." It is a 7-person group project focused on building a Scooter Sharing software. This project marked our first experience working on a fully-fledged frontend-backend system, with each team member taking on specific roles. I was responsible for the database and backend architecture, mailing systems, various smaller features, and unit testing.

Features

This project includes several features implemented by our team:

  • User Authentication: Secure login and registration for users.
  • Scooter Booking: Allows users to book scooters for a specified duration.
  • Payment System: Integrated for secure financial transactions.
  • Mailing System: Sends notifications and updates to users via email.
  • Admin Panel: Provides administrative control for managing users and scooters.
  • Unit Testing: Ensures the reliability of backend functions.

For more details, please check the assignment brief that we followed. While we did not implement every feature, we successfully incorporated many, achieving a 77% grade.

Technologies

The project was written in Python and utilized multiple libraries to build specific features. The main libraries used were:

  • Flask: For web framework.
  • Flask-Mail: For email handling.
  • Flask-RESTful: For building REST APIs.
  • Flask-SQLAlchemy: For database management.
  • Flask-Testing: For unit testing.

The frontend was built using HTML, CSS, and JavaScript. For the database, we used SQLite. To facilitate easier deployment, we utilized Docker/Docker-Compose and a Bash script to streamline the setup process.

Results

Overall, the project was a success, earning us a 77% final grade. Working with a diverse team on this project highlighted the importance of communication and collaboration. It was an invaluable learning experience in both technical and interpersonal skills.

Here are a couple of screenshots of the software in action:

Trot 1 Main dashboard of the app

Trot 2 Book a scooter page

Trot 3 Past bookings page

Trot 4 User profile page

Challenges and Learning

Throughout the project, we faced several challenges, such as integrating the payment system securely and ensuring smooth communication between frontend and backend. These challenges taught us a lot about debugging, secure coding practices, and the importance of thorough testing.