Started with a software design report (UML & MVC diagrams), then delivered features over two sprints using Scrum agile project management. Tracked work in Jira (boards + Gantt), used GitHub flow (feature branches & PRs), reassessing progress at Scrum meetings.
Worked full-stack on React interfaces with Tailwind and shadcn/ui, backed by a secure role-based JWT-authenticated Node.js and MongoDB backend with Joi validation. Real-time features were handled through a WebSocket layer; payments were processed via Stripe Checkout; map guidance was powered by Google Maps. Sentry monitoring and some unit/integration tests using Vitest and Supertest were added.
Features
- User dashboard showing active, upcoming and past parking space bookings, with receipts.
- Stripe-integrated checkout experience for parking space bookings.
- Google Maps integration showing the route from current location to an active booked parking space. Geofenced check-in on arrival so you can only mark yourself as arrived if you are physically near the space.
- Real-time messaging system with a contact admin channel, one-to-one conversations with other users, and an emoji picker. Real-time features include new message alerts, message receiving, read receipts, and creating/deleting conversations.
- Authenticated admin dashboard with ability to select/create/edit parking lots. Dashboard displays visual analytics with charts, and has notifications of recent bookings.
- The admin panel has operational controls for temporarily blocking spaces for maintenance; reserving spaces for events; viewing all bookings; accessing the admin live chat; temporarily or permanently banning users from the parking management system.
- Core pages included landing page, terms, privacy, help center, authentication, and password reset.
Error monitoring is via the external monitoring service Sentry - to easily trace where errors are coming from. Server-level file system error handling is also implemented.

My favourite feature is a WhatsApp-style real-time messaging system built on WebSockets, supporting new message alerts, message receiving/sending, read receipts, and conversation creating/deleting.

