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!





