Case Study: Building a Full-Stack University Shuttle App on AWS

View on GitHub

Every computer science student eventually faces the capstone challenge: moving from theoretical knowledge to a tangible, working application. For my Software Engineering II course, our team undertook this challenge by building a comprehensive University Shuttle Bus App from the ground up. This project was more than just an academic exercise; it was a full-scale simulation of a real-world development lifecycle, from initial requirements gathering to a live deployment on the cloud.

As the team’s Project Manager and lead developer, I was responsible for the foundational architecture and infrastructure, steering the project from a static prototype to a dynamic, database-driven web application. For a high-level summary, you can view the project page in my portfolio.

The Challenge: Real-Time Information for a Busy Campus

Our goal was to create a centralized solution to a common campus problem: knowing where the shuttle is and when it will arrive. We designed a system with three distinct user roles, each with a secure, dedicated dashboard:

  • Users: Students and faculty who could view announcements and see real-time shuttle schedules.
  • Drivers: Could log in to post updates and announcements, such as delays or route changes.
  • Admins: Had full CRUD (Create, Read, Update, Delete) control over the system’s routes, schedules, and users.
User Dashboard
Admin Dashboard for Route Management
AWS EC2 Instance Console
Click any image to enlarge. From left to right: The User Dashboard, the Admin's CRUD Dashboard, and the AWS EC2 console showing our production server.

From Localhost to the Cloud: The Tech Stack

To bring this project to life, we chose the robust and industry-standard LAMP stack, which I provisioned and deployed on an AWS EC2 instance.

  • Infrastructure: Amazon Web Services (AWS) EC2 running Ubuntu Linux. I configured an Elastic IP to ensure our application had a stable, public-facing address.
  • Back-End: PHP for server-side logic and MySQL for the relational database. The web server was powered by Apache.
  • Front-End: HTML, CSS, and JavaScript, built with the Bootstrap framework for responsiveness.
  • Version Control: All code was managed through a Git repository under a shared GitHub organization.

My Role: From Infrastructure to Implementation

My contributions spanned the full lifecycle of the project:

  • Infrastructure Lead: I personally provisioned, configured, and deployed the Ubuntu EC2 instance and the entire LAMP stack. I managed the security keys for SSH access and administered the server throughout the project.
  • Project Architect: I designed the complete MySQL database schema, defining the relationships between users, routes, stops, and announcements. A key part of my role was enforcing consistent naming conventions for database columns and PHP variables, which was critical for successful team integration.
  • Back-End Development: I wrote the core authentication logic in PHP, handling user registration with password hashing and building the session-based login system that redirected users to their specific dashboards based on their assigned role (admin, user, or driver).
  • Project Management: I managed the GitHub repository, led team meetings, and was responsible for integrating the front-end and back-end code from all five team members into a single, functional application on the production server.

Key Lessons Learned

This project was an invaluable lesson in the difference between writing code and building software. My biggest takeaway was the critical importance of a solid foundation. A well-designed database schema and clear naming conventions, established before the majority of coding began, saved us countless hours of debugging during integration. Leading the team through this process highlighted how clear communication is just as vital as clean code in a collaborative environment.

This experience solidified my passion for overseeing a project’s full journey—from a sketch on a whiteboard to a live application serving users on the internet.




Enjoy Reading This Article?

Here are some more articles you might like to read next: