Zaragoza bus and tram in your pocket. Built with Kotlin and ❤️
Real-time Zaragoza bus and tram imformation. Built with Kotlin following modern best practices, Transporte Zaragoza aims to be the most intuitive and feature-rich alternative on Google Play.
🚧 This app is WIP. Test coverage, architecture and features are not final 🚧
Some of the technologies used to develop Transporte Zaragoza:
- Kotlin*, Google’s preferred language for Android app development.
- LiveData, lifecycle-aware observables.
- Room, abstraction layer over SQLite.
- Retrofit + Moshi, interaction with the API that provides bus and tram data.
- Koin, dependency injection for Kotlin.
- Heroku + Parse + MongoDB, custom backend to support automatic app data updates outside of Google Play.
- JUnit + Mockito, local and instrumented unit testing.
- Espresso, E2E UI testing.
- Firebase Analytics and Crashlytics, app usage and crash monitoring.
- LeakCanary, memory leak detection.
- Lottie, After Effects animations rendered natively.
- ShapeShifter, Animated Vector Drawable animations.
* The app itself is 100% Kotlin code. Some of the modified open source libraries included as local modules are written in Java.
A few of the things you can do with Transporte Zaragoza:
- Get tram and bus real-time arrival times
- Find any stop quickly with the search function
- Move around with the map
- Add favorite stops for easier access
- Setup notifications to receive arrival times automatically
- Checkout tram and bus lines and destinations clearly
- Make the app yours by choosing between many themes
- Create shortcuts for your home screen
- Scan bus stops QR codes
Feel free to ask me anything or file an issue if you find any problem. Feature requests are always welcome.
Transporte Zaragoza is first and foremost a personal project to improve my own skillset and reflect my current abilities. This is why, for now, extensive pull requests are discouraged.
Some extra stuff that made this project a better experience:
- FAB Speed Dial. Implementation of the Material Design speed dial used in the stop information destination. Created by Roberto Leinardi and modified by me to support theming.
- Dresscode. Tiny convenience library that allows theme changing on runtime. Created by Dai Williams and modified by me to work with Cyanea theme picker.
- Material Dialogs. All kinds of dialogs made easy thanks to Aidan Follestad.
- Quick Permissions. Handling runtime permissions with less boilerplate by Kirtan403. Modified by me to use Material Dialogs and other small stuff.
- ZXing Android Embedded. ZXing QR scanning capabilities without extra downloads.
- Material Intro Screen. Welcoming slides to introduce the user to the app features. Modified by me to support animated vector drawables.
- Gene-rate. Asks for ratings without interrupting the user's flow after conditions are met. Heavily modified by me with ideas from other libraries like Integrated Rating Request.
- Multiple Icons by Freepik from flaticon.com.
This project is licensed under the terms of the CC BY-NC 4.0 License. This means, among other things, that you can not use this project commercially. Please read the full license terms if you have any doubts.