Your Ultimate Formula 1 Companion App
Features β’ Screenshots β’ Installation β’ Architecture β’ Contributing
FastestLap is a comprehensive Android application designed for Formula 1 enthusiasts. Stay up-to-date with real-time race results, driver and constructor standings, upcoming events, breaking F1 news, and insights into junior categories (Formula 2 & Formula 3).
Built with modern Android development practices, FastestLap provides an intuitive and engaging user experience for following your favorite drivers, teams, and races throughout the season.
- Broglio Matteo
- Caputo Lorenzo
- Gargioli Federico
- Groppo Gabriele
- Lanticina Riccardo
- Live Race Results - Get up-to-the-minute results from qualifying, sprint, and race sessions
- Event Schedule - View complete weekend schedules with session times
- Countdown Timers - Never miss a race with live countdown to upcoming events
- Past Events - Browse historical race results and standings
- Driver Standings - Real-time driver championship rankings
- Constructor Standings - Team championship leaderboard
- Historical Data - Access to complete season statistics
- Detailed Bio Pages - In-depth profiles for drivers, constructors, and circuits
- Multi-Source News Feed - Aggregated F1 news from:
- Autosport
- Crash.net
- Motorsport
- English & Italian Sources - Multilingual news coverage
- RSS Integration - Real-time news updates
- Formula 2 Support - Results and standings for F2
- Formula 3 Support - Results and standings for F3
- Driver Progression - Track drivers as they move through categories
- Personal Preferences - Set favorite drivers and teams
- Auto-Login - Seamless authentication with Firebase
- Google Sign-In - Quick OAuth integration
- Profile Management - Customize your experience
- Multi-Language Support - Available in:
- English (en-GB)
- Italian (it)
- Regional Formatting - Date, time, and number formats based on locale
- Dark Mode - Full dark theme support
- Material Design - Modern, intuitive interface
- Responsive Layouts - Optimized for various screen sizes
- Smooth Animations - Polished transitions and interactions
View More Screenshots
- Android Studio Arctic Fox (2020.3.1) or later
- JDK 11 or higher
- Android SDK API 26+ (Android 8.0 Oreo)
- Firebase Account for authentication and database features
-
Clone the Repository
git clone https://github.com/yourusername/fastestlap.git cd fastestlap -
Configure Firebase
- Create a new Firebase project at Firebase Console
- Download
google-services.jsonand place it inapp/directory - Enable Firebase Authentication (Email/Password and Google Sign-In)
- Set up Firebase Realtime Database
- Configure database rules appropriately
-
Configure Local Properties (if needed)
# local.properties sdk.dir=YOUR_ANDROID_SDK_PATH
-
Build the Project
./gradlew build
Or on Windows:
gradlew.bat build
-
Run the App
- Open the project in Android Studio
- Sync Gradle files
- Run on an emulator or physical device (API 24+)
FastestLap follows Clean Architecture principles with a clear separation of concerns.
app/
βββ src/
β βββ main/
β β βββ java/com/the_coffe_coders/fastestlap/
β β β βββ adapter/ # RecyclerView Adapters
β β β βββ api/ # API Response Models
β β β βββ database/ # Room Database
β β β βββ domain/ # Business Models
β β β β βββ driver/
β β β β βββ constructor/
β β β β βββ grand_prix/
β β β β βββ news/
β β β β βββ user/
β β β βββ dto/ # Data Transfer Objects
β β β βββ mapper/ # Data Mappers
β β β βββ repository/ # Repository Layer
β β β βββ service/ # API Services
β β β βββ source/ # Data Sources
β β β β βββ driver/
β β β β βββ constructor/
β β β β βββ news/
β β β β βββ result/
β β β β βββ standing/
β β β β βββ track/
β β β β βββ user/
β β β β βββ weeklyrace/
β β β βββ ui/ # UI Layer (MVVM)
β β β β βββ bio/ # Biography Activities
β β β β βββ event/ # Event Activities
β β β β βββ home/ # Home & Fragments
β β β β βββ junior/ # Junior Categories
β β β β βββ profile/ # User Profile
β β β β βββ standing/ # Standings
β β β β βββ welcome/ # Authentication
β β β βββ util/ # Utilities
β β βββ res/ # Resources
β β βββ AndroidManifest.xml
β βββ test/ # Unit Tests
β βββ androidTest/ # Instrumentation Tests
βββ functions/ # Firebase Cloud Functions
β βββ f1_logic.js
β βββ junior_categories_logic.js
β βββ index.js
βββ build.gradle.kts
- MVVM (Model-View-ViewModel) - UI layer architecture
- Repository Pattern - Data access abstraction
- Singleton Pattern - Service locator and database instances
- Observer Pattern - LiveData for reactive UI updates
- Factory Pattern - ViewModel creation
- Language: Java 11
- Min SDK: 26 (Android 8.0)
- Target SDK: 34 (Android 14)
- Compile SDK: 36
UI & Navigation
- AndroidX AppCompat
1.7.1 - Material Design Components
1.13.0 - Navigation Component
2.9.6 - ConstraintLayout
2.2.1 - SwipeRefreshLayout
1.1.0
Networking
- Retrofit
3.0.0 - OkHttp Logging Interceptor
5.3.2 - Gson
2.13.2
Database
- Room
2.8.4
Firebase
- Firebase BOM
34.6.0 - Firebase Authentication
24.0.1 - Firebase Realtime Database
22.0.1 - Firebase Firestore
26.0.2 - Firebase Analytics
- Google Play Services Auth
21.4.0
Image Loading
- Glide
5.0.5
Utilities
- Lombok
1.18.42(Annotation Processing) - ThreeTenBP
1.7.2(Date/Time) - Rome
2.1.0(RSS Feed Parsing) - Commons Validator
1.10.1
Testing
- JUnit
4.13.2 - AndroidX Test
1.3.0 - Espresso
3.7.0
- Provider: Jolpi.ca Ergast API
- Data: Race results, standings, driver/constructor info, schedules
- Authentication - User sign-in/sign-up
- Realtime Database - User preferences and app data
- Cloud Functions - Scheduled data updates
- Autosport - English F1 news
- Crash.net - English F1 coverage
- Motorsport - Italian F1 news
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}# Unit Tests
./gradlew test
# Instrumentation Tests
./gradlew connectedAndroidTest
# Generate Coverage Report
./gradlew jacocoTestReportThis project follows standard Android coding conventions:
- Package naming: lowercase
- Class naming: PascalCase
- Method/variable naming: camelCase
- Constants: UPPER_SNAKE_CASE
- 4-space indentation
The project uses Lombok for reducing boilerplate code:
@Getter/@Setter- Automatic getters/setters@NoArgsConstructor/@AllArgsConstructor- Constructor generation@ToString- toString() method generation@EqualsAndHashCode- equals() and hashCode() methods
Check out our TODO.md for a comprehensive list of planned improvements and features.
- Add comprehensive unit tests
- Enable ProGuard for release builds
- Implement Firebase Crashlytics
- Migrate to Kotlin (incremental)
- Add dependency injection (Hilt)
- Push notifications for race updates
- Home screen widgets
- Offline mode enhancement
- Social features (predictions, discussions)
- Wear OS support
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow existing code style and conventions
- Add unit tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
- Write clear commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Broglio Matteo - GitHub
- Caputo Lorenzo - GitHub
- Gargioli Federico - GitHub
- Groppo Gabriele - GitHub
- Lanticina Riccardo - GitHub
- GitHub: https://github.com/yourusername/fastestlap
- Documentation: Documentazione/Documentazione FastestLap.pdf
- Presentation: Documentazione/Presentazione FastestLap.pdf
- Jolpi.ca for providing the F1 Ergast API
- Firebase for backend services
- Material Design for UI components
- Glide for efficient image loading
- All open-source libraries that made this project possible
- Language: Java
- Lines of Code: ~10,000+
- Activities: 15+
- Fragments: 10+
- API Integrations: 3+
- Supported Languages: 2 (EN, IT)
Made with β by The Coffee Coders
β Star this repo if you find it useful!





