← All projects
Software engineering capstone project
GlobalTrotter
A full-stack travel and itinerary planner with interactive maps, real-time chat, and a microservices backend.
Summary
GlobalTrotter helps travelers discover destinations, plan itineraries, and navigate with interactive maps, starting with a focus on Yaoundé, Cameroon. It began as a monolith and was fully decomposed into microservices behind an API gateway, then deployed to a production server with Docker, Nginx, and HTTPS. Development continued after deployment with social and real-time features.
Key features
- Destination discovery with tag-based filtering
- Itinerary creation and editing
- Interactive maps with routing for walking, driving, motorbike, and bicycle
- Custom starting point chosen by address search
- Optional “nearby services” layer, off by default to control paid API usage
- Real-time chat with voice notes and photo, video, and file attachments
- Friends system with a request / accept flow
- In-app notification system
- Fully bilingual interface (English / French)
- User accounts with JWT authentication, including admin users
Screenshots
Demo
Architecture
- Frontend: React single-page application.
-
Backend: five Flask services —
api-gateway,user-service,itinerary-service,destination-service,chat-service. - The frontend sends HTTP requests through the API gateway, which routes them to the right service.
- The chat service is exposed alongside the gateway (not behind it) so it can handle WebSocket connections directly.
- Every service runs in its own Docker container, with separate docker-compose configs for development and production.
- Nginx acts as reverse proxy with a Let's Encrypt TLS certificate on an Ubuntu VPS.
Tech stack
Frontend
- React 19
- Vite
- React Router
- MapLibre GL
- Jest
- ESLint
Backend
- Python
- Flask
- Flask-SocketIO
- Flask-JWT-Extended
Maps & routing
- Geoapify geocoding
- Geoapify routing
- Geoapify nearby places
Infrastructure
- Docker
- docker-compose
- Nginx
- Let's Encrypt / Certbot
- Ubuntu VPS