GoTogether is a smart, AI-driven travel management platform tailored for both local and foreign travelers in Sri Lanka. Designed with modularity, scalability, and real-time intelligence at its core, it offers seamless web and mobile interfaces, dynamic itinerary generation, transportation data integration, and social features that collectively redefine how people explore the island.
Tourists visiting Sri Lanka frequently encounter significant challenges including language barriers, inefficient route planning, and lack of accessible transportation information. These difficulties result in wasted time, increased travel costs, and suboptimal travel experiences. Similarly, Sri Lankan travelers face comparable obstacles due to the absence of optimized trip planning tools tailored to local conditions. The current travel landscape is characterized by fragmented information sources, manual planning processes, and limited access to real-time transportation data, creating a clear need for an integrated, intelligent travel solution.
GoTogether is designed to serve two primary user segments:
- Foreign Travelers: International tourists visiting Sri Lanka who require comprehensive travel guidance, cultural context, and language support to navigate the country effectively and safely.
- Local Travelers: Sri Lankan residents seeking efficient trip planning, optimized routes, and access to comprehensive transportation information for domestic travel within the country.
The application delivers six core functionalities designed to address specific travel pain points:
- Personalized Tour Planning: Enables users to create customized itineraries by selecting starting points and destinations, with intelligent route optimization and personalized recommendations.
- Transport Details: Provides comprehensive information about available transportation options between destinations, including schedules, fares, and real-time availability.
- Travel Guidance: Offers curated recommendations for cultural sites, entertainment venues, and hidden attractions, enhancing the discovery aspect of travel.
- Trip Review & Travel Feed: Creates a social platform where users can share trip plans, engage through comments and reactions, and follow other travelers for inspiration and insights.
- Emergency Support: Ensures traveler safety by providing quick access to essential services including hospitals and police stations during emergencies.
- Food/Stay Suggestions: Delivers location-based recommendations for accommodations and restaurants tailored to specific travel destinations and user preferences.
GoTogether adopts a multi-layered microservice architecture, optimized for cloud-native deployment and real-time responsiveness. It includes the following architectural domains:
- Frontend
- Web App: Built with Next.js using both SSR and CSR rendering models. Token storage uses secure cookies, with route guards protecting user-only routes.
- Mobile App: Built with React Native and Expo, ensuring shared logic, adaptive theming, and cross-platform delivery.
- Backend
- Composed of Dockerized microservices using Spring Boot and Go.
- API Gateway
- Kong Gateway handles all inbound traffic (routing, rate limiting, service discovery, delegated authentication).
- Authentication & Authorization
- Keycloak handles user management, token issuance, and session control.
- Uses pre-configured realm/clients auto-imported via startup scripts.
- HTTPS enforced via NGINX + Certbot with DuckDNS domain for backend.
- Database
- Supabase PostgreSQL stores persistent data.
- Image CDN
- Cloudflare Images stores and serves user-uploaded media.
- DevOps & CI/CD
- GitHub Actions with custom deploy.sh script:
- Multi-stage Docker builds optimized via .dockerignore
- Local JAR builds to improve speed
- Auto-deploy to Oracle Cloud VM
- Oracle Free Tier used for backend VM hosting (replaced EC2 due to resource limits).
- Vercel used for frontend auto-deploy.
- Communication
- Internal services communicate via REST and gRPC.
- Reverse Proxy
- NGINX enforces HTTPS, redirects, and fallback proxying.
- Certbot + DuckDNS ensures SSL with free domain.
The web frontend is developed using Next.js, offering a modern, fast, and SEO-friendly user experience. It leverages a hybrid rendering strategy (SSR + CSR) and built-in features for performance and accessibility.
- Responsive Design: Ensures seamless interaction across mobile, tablet, and desktop devices.
- Dark Mode Support: Built-in toggle for light and dark themes.
- SSR + CSR Performance: Uses Server-Side Rendering (SSR) for fast initial loads and Client-Side Rendering (CSR) for dynamic interactions.
- Skeleton Screens: Displays placeholders during content fetch.
- Image Optimization: Utilizes Next.js Image component for automatic image resizing, lazy loading, and CDN delivery.
The mobile experience is built using React Native, enabling cross-platform development and consistent logic sharing with the web app.
- Platform-Native Experience: Delivers smooth interactions and UI responsiveness aligned with both iOS and Android guidelines.
- Shared Logic with Web: Core logic, models, and API services are shared with the Next.js frontend.
- Responsive Theming: Adaptive UI scaling, and intuitive mobile gestures.
Deployed via containers in Docker Compose:
- api-service (Go + Gin):
- Interfaces with Google Maps API, geocoding, directions, and LLM query generation via Gemini.
- Implements error recovery, rate limiting, and caching middleware.
- planning-service (Spring Boot):
- Generates AI-personalized itineraries using user trip history and current context.
- Supports collaborative editing, trip participation logic.
- social-media-service (Spring Boot):
- Manages posts, comments, reactions, and user feed.
- Offers paginated REST APIs.
- auth-service (Keycloak):
- Handles authentication, registration, and session/token management.
- user-service (Spring Boot):
- Manages profile data, follows/unfollows, and user metadata.
- Secure integration with Keycloak for user identity sync.
- Supabase PostgreSQL: Used for structured storage (users, trips, social metadata, relationships).
- Cloudflare Images: Optimized image CDN for storing and delivering profile pictures, post media, etc.
The application utilizes Supabase PostgreSQL for persistent data storage, managing users, trips, social metadata, and preferences.
- OAuth2.0 + OpenID Connect (OIDC): Implemented via Keycloak for secure login and token-based session management.
- JWT Access Tokens: APIs are protected using signed JSON Web Tokens.
- HTTPS Everywhere: All public endpoints are secured using TLS.
- WSS (WebSocket Secure): Real-time communication uses encrypted WebSocket channels.
- Reverse Proxy Security: All traffic is routed through an NGINX-based proxy.
- Email Verification: Custom wait scripts ensure service boot sequence integrity (e.g., user-service waits for Keycloak).
- Service Readiness: All public endpoints are secured using TLS.
- Incremental Deployments: Devs can spin up only required services via CLI flags in deploy.sh.
- API Resilience: Graceful error handling, fallback logic for external APIs, offline-tolerant design.
- Infrastructure as Codes: Environment consistency ensured across developers using Docker, GitHub Actions, and automated Keycloak realm imports.
- Localization Ready: Future-proofed for Sinhala, Tamil, and English UI and LLM translation.
- Web Frontend: Next.js (React)
- Mobile App: React Native
- Styling: Tailwind CSS
- UI Features: Dark Mode, Skeleton Views
- API Services: Go, Spring Boot
- Authentication: Keycloak
- User Service: Spring Boot
- Planning Service: Spring Boot
- Social Media Service: Spring Boot
- Notification Service: Spring Boot (WebSocket + email alerts)
- Relational DB: Supabase PostgreSQL
- Media Storage: Cloudflare Images
- Frontend Hosting: Vercel (Serverless)
- Backend Hosting: Oracle Cloud VM + Docker Compose
- Database Hosting: Supabase (Serverless)
- Image Delivery: Cloudflare Images CDN
- CI Pipeline: GitHub Actions
- Orchestration & Deployment: Docker Compose
- Containerization: Docker
- Reverse Proxy (local/fallback): Certbot + NGINX
- Frontend: Deployed on Vercel (Serverless).
- Backend: Microservices are containerized using Docker and orchestrated with Docker Compose on an Oracle Cloud VM.
- Database: Hosted on Supabase (Serverless).
- Image CDN: Cloudflare Images.