A free ride-share platform built for the Kirksville community, connecting students and community members who need rides with those willing to offer them.
BulldogRides aims to provide a completely free ride-sharing platform for the Kirksville community. Our goal is to make transportation accessible to everyone while fostering community connection and collaboration.
- Interactive Map Interface: Visualize pickup and destination locations using Leaflet maps
- Real-time Notifications: Stay updated on ride requests, approvals, and driver assignments
- User Profiles: Manage your profile and view ride history
- Ride Management: Create, view, and join ride requests
- Secure Authentication: AWS Cognito-based user authentication
- Responsive Design: Mobile-friendly UI built with Mantine components
- Framework: React 19 with TypeScript
- Build Tool: Vite
- UI Library: Mantine UI v8.3
- Routing: React Router v7
- Maps: Leaflet & React Leaflet
- Icons: Tabler Icons
- State Management: React Context API
- Date Handling: Day.js
- Authentication: AWS Cognito (via Amplify Auth)
- Database: AWS DynamoDB
- API: AWS AppSync (GraphQL)
- Serverless Functions: AWS Lambda
- Infrastructure: AWS CDK
The backend includes several Lambda functions for secure server-side operations:
ride-operations: Create and manage ridesride-request-operations: Handle ride join requestsnotification-operations: Manage user notificationsassign-driver: Assign drivers to ridesapproved-riders-operations: Manage approved riders list
- Language: TypeScript 5.9
- Linting: ESLint with TypeScript support
- Package Manager: npm
- Version Control: Git
BulldogRides/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API service layer
│ ├── contexts/ # React context providers
│ ├── types/ # TypeScript type definitions
│ └── lib/ # Utility libraries
├── amplify/
│ ├── auth/ # Cognito auth configuration
│ ├── data/ # GraphQL schema & DynamoDB config
│ └── functions/ # Lambda function handlers
└── public/ # Static assets
- Node.js (v18 or higher recommended)
- npm
- AWS Account (for Amplify deployment)
- Clone the repository:
git clone <repository-url>
cd BulldogRides- Install dependencies:
npm install- Set up AWS Amplify:
npm install -g @aws-amplify/cli
amplify configure- Start the development server:
npm run dev- Deploy the backend (if needed):
npx ampx sandboxnpm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
BulldogRides uses a modern serverless architecture:
- Frontend: React SPA hosted on AWS Amplify Hosting
- API Layer: GraphQL API via AWS AppSync with custom Lambda resolvers
- Authentication: AWS Cognito user pools with post-confirmation triggers
- Database: DynamoDB with single-table design pattern
- Real-time Updates: AppSync subscriptions for live data
The application uses a DynamoDB single-table design with the following main entities:
- Users: User profiles and authentication data
- Rides: Ride requests with pickup/destination coordinates
- Notifications: User notifications and alerts
- RideRequests: Join requests for rides
- ApprovedRiders: List of users approved for specific rides
We welcome contributions from the Kirksville community! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available for the Kirksville community.
For questions or support, please open an issue on GitHub.
Demo: here
Built for the Kirksville community