Maliva
View on GitHubMaliva is a tourism guide app for Malang Raya, designed to help tourists and locals alike make the most out of their trip. Through our application, you can explore the best local attractions, learn about the culture, and plan your trip accordingly.
The Mission
Cloud backend for Maliva, a mobile tourism guide app for Malang Raya, Indonesia. The cloud track built and deployed the REST API that served both the Android client and a separate ML recommendation service. Capstone project for Bangkit Academy 2024 (Google, GoTo, Tokopedia, Traveloka). The constraint was real: three tracks (mobile, ML, cloud) working in parallel toward a fixed demo deadline, each team deploying independently.
The Problem
Three teams (Android, ML, Cloud) needed to integrate at a fixed deadline with no full-time coordination. The cloud track had to build a backend that both the mobile app and the ML model could consume, while keeping deployments independent enough that one track's changes couldn't break another's.
How I solve it
Defined an OpenAPI-style contract document at project start and shared it across all tracks. The cloud API was built with Express.js and deployed to Cloud Run via Docker. The ML model was wrapped as an independent Cloud Run endpoint called over HTTP, keeping it loosely coupled by design. GitHub Actions automated the full build-push-deploy pipeline on every push to main, removing manual deployment entirely.
Key Features
- Attraction discovery for Malang Raya local spots
- ML-powered personalised recommendations
- Custom-built authentication and authorization with JWT
- Firestore content store integration
- Automated CI/CD via GitHub Actions
- Containerised deployment on Cloud Run
Architecture Overview
Microservice-style cloud architecture on GCP. The Android app communicates with a central Express.js API on Cloud Run. The API uses a custom-built authentication and authorization system with JWT for token verification, Firestore for content data, Firebase Storage for file storage, and makes HTTP calls to a separate ML service for personalised recommendations. CI/CD is fully automated via GitHub Actions.
User-facing mobile client for Malang Raya tourism
Core REST backend: attractions, users, trip data
Recommendation model wrapped as a Cloud Run endpoint
Custom-built authentication and authorization with JWT
File and media storage
NoSQL content store: attractions, user data
Serverless container runtime for API and ML service
CI/CD pipeline: build Docker image, push to registry, deploy