Backend API for a Carpooling & Local-Places Community App
A seaside-town tourism / community app
Overview
This is the server-side API powering a seaside-town tourism and community mobile app, combining ride-sharing (carpooling) coordination with a directory of local places and offers. It is built on AdonisJS with a relational data model and realtime group chat.
The Challenge
A small coastal community needed a single backend to coordinate shared rides between residents and visitors, surface local places and offers, and let travel groups communicate in real time, all behind authenticated, mobile-friendly endpoints.
What We Built
A structured AdonisJS API organized into Controllers, Models, Services, Middleware and Commands. HTTP controllers cover the core domains: Users, PlaceListings, Offers, Map, Rooms (travel rooms) and Notifications. The Lucid migration history models users and auth tokens, place categories and place listings, travel rooms, travel offers, travel intentions and the room/user join tables, plus a notification store. Realtime group chat for travel rooms is delivered through Pusher ChatKit. The service ships with a Dockerfile and build script, and supports both PostgreSQL (production) and SQLite (local/dev).
Technologies & Approach
AdonisJS (framework, auth, bodyparser, CORS, Ignitor) with the Lucid ORM over PostgreSQL, SQLite for local development, and @pusher/chatkit-server for chat. Axios and jsonpath support outbound integrations and payload shaping. The MVC structure keeps routing, business logic (Services) and data access cleanly separated.
Outcome / Impact
Provided the authenticated backbone for the companion mobile app and admin dashboard, exposing rides, places, offers, invitations and notifications through a single consistent API and powering in-app group conversations.
Capabilities Demonstrated
- Designing a domain-rich REST API (rides, places, offers, notifications) on AdonisJS
- Relational schema design and migrations with Lucid ORM
- Integrating third-party realtime messaging (Pusher ChatKit)
- Dual-database setup (PostgreSQL / SQLite) with Docker packaging
- Token-based authentication and middleware-driven request handling