movGR is a modern Progressive Web App (PWA) that provides real-time tracking of Granada’s public transport system, including buses and metro lines. It is designed to offer fast, lightweight, and reliable access to transit information for everyday use.
The application is built with Next.js on the frontend and powered by a backend API implemented with FastAPI, following a decoupled architecture that allows independent development, deployment, and scaling of each component.
Whether you are a commuter, a student, or visiting the city, movGR keeps transit information accessible and up to date, directly from your device.
Motivation
Public transport data is often fragmented across multiple sources, presented through slow or outdated interfaces, and poorly optimized for mobile usage. movGR was built to explore how modern web technologies and cloud-native architectures can be combined to deliver a simple, real-time user experience on top of heterogeneous data sources.
The focus of the project is not only on functionality, but also on responsiveness, reliability, and operational simplicity.
Architecture Overview

movGR follows a fully decoupled architecture, where frontend and backend services are developed, deployed, and scaled independently. This design allows rapid iteration on the user interface while keeping the data ingestion and processing layer lightweight and cost-efficient.
Backend API
The backend runs in the AWS Cloud and is built using FastAPI, serving as both a crawler and a public API for transport data.
Key characteristics:
- AWS Lambda executes Python-based data extraction logic, using BeautifulSoup to collect real-time transport information from transit-related sources.
- Lambdas are exposed via AWS API Gateway, providing HTTP endpoints consumed by the frontend.
- The backend codebase is open source and maintained in the
movgr-apirepository. - Continuous integration and deployment are handled through GitHub Actions.
This setup prioritizes low operational overhead, horizontal scalability, and cost efficiency, making it well suited for bursty, read-heavy workloads.
Frontend Application
The frontend is implemented with Next.js and deployed on Vercel, enabling automatic deployments on every commit to the main branch of the movgr-next repository.
Notable aspects:
- Data is fetched directly from the AWS-hosted API.
- localStorage is used to persist user preferences and session-level data.
- As a Progressive Web App, movGR can be installed on any device and supports offline access for cached views.
The result is a fast, responsive interface optimized for both mobile and desktop environments.
Installation and Usage
Installing movGR requires no app store and no account. Simply visit the web application and install it directly from your browser.
As a PWA, movGR provides:
- Offline support for previously loaded data
- Native-like performance
- Minimal installation footprint
Installation guides:
Open Source
movGR is fully open source, and contributions are welcome.
- Frontend: https://github.com/mianfg/movgr-next
- Backend: https://github.com/mianfg/movgr-api
This project serves as an exploration of real-time data delivery, cloud-native design, and user-focused web applications.