Pedal-Pact
Overview:
Pedal Pact is a full-stack web application I developed as my capstone project for the AAS in Web & Software Development program. Designed for cycling enthusiasts, it provides a platform for riders to create, join, and manage group rides;complete with interactive route mapping and ride registration features. You may log in with 'steve@example.com' password '123456' or you may register a new user.
Key Features:
- Interactive Google Maps Integration: Users can draw custom bike routes directly on the map, view terrain and elevation, and save those routes to share with others.
- Role-Based Access Control: Public visitors can browse rides, members can join them, and admins can create and manage routes and events.
- User Authentication & Authorization: Secure login and registration with email verification, password reset, and CAPTCHA protection using Resend and Cloudflare Turnstile.
- Responsive Design: Mobile-first, fully responsive UI built with React and Tailwind CSS for a seamless experience across devices.
- Modern Tech Stack:
- Frontend: Next.js 15, React 19, Tailwind CSS
- Backend: Node.js, Prisma ORM, PostgreSQL (hosted on Neon)
- APIs: Google Maps JavaScript API, Maps Elevation API, National Weather Service, UploadThing
- Deployment: Vercel with a custom domain configured via SiteGround
Challenges Solved:
- Developed a route-saving mechanism that converts drawn map paths into GeoJSON and stores them in the database for later use.
- Designed and implemented role-based page protection and server-side logic for user actions using NextAuth.js.
- Optimized map performance and implemented static map generation for fast-loading previews.
- Addressed accessibility issues to ensure keyboard navigation, ARIA compliance, and visual contrast met usability standards.
Takeaways:
Building Pedal Pact taught me how to structure and scale a real-world full-stack application. I deepened my knowledge of relational databases, RESTful API design, secure authentication flows, and geospatial data handling. It also gave me firsthand experience with performance optimization, usability testing, and deploying a production-ready app.
