| .vscode | ||
| app | ||
| fastlane/metadata/android/en-US | ||
| gradle | ||
| .gitattributes | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| BEST_PRACTICES.md | ||
| build.gradle.kts | ||
| build.sh | ||
| CHANGELOG.md | ||
| CODE_STRUCTURE.md | ||
| COMMANDS.sh | ||
| CONTRIBUTING.md | ||
| DEPLOYMENT.md | ||
| docker-compose.yml | ||
| Dockerfile.build | ||
| fairspeed_icon.png | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| INDEX.md | ||
| librespeed-setup.sh | ||
| LIBRESPEED_SETUP.md | ||
| LICENSE | ||
| nginx.conf | ||
| PROJECT_SPEC.md | ||
| QUICKSTART.md | ||
| README.md | ||
| README_SERVER.md | ||
| SERVER_CLIENT_INTEGRATION.md | ||
| settings.gradle.kts | ||
| setup-android-sdk.sh | ||
| SETUP.md | ||
FairSpeed
A modern, lightweight, and professional internet speed tester for Android. FairSpeed is open-source, FOSS-compliant, and designed for F-Droid distribution.
Features
✨ Modern UI - Clean Material 3 design with Jetpack Compose
⚡ Fast & Lightweight - Minimal resource consumption
📊 Accurate Testing - Download, Upload, and Ping measurements
📱 Responsive Design - Works on all screen sizes
🔒 Privacy Focused - No tracking or analytics
🌍 Multi-Server Support - Test from multiple speed test servers
📈 History Tracking - View past test results
🎨 Dark/Light Themes - System theme support
Architecture
FairSpeed uses a modern Clean Architecture with the following layers:
- Domain Layer - Business logic and use cases
- Data Layer - Repository pattern and data sources
- Presentation Layer - UI with MVVM pattern using Jetpack Compose
Tech Stack
- Language: Kotlin
- UI Framework: Jetpack Compose with Material 3
- Architecture: MVVM + Clean Architecture
- Dependency Injection: Hilt
- Networking: Retrofit 2 + OkHttp
- Networking Library: Coroutines + Flow
- Testing: JUnit 4 + Mockito
Requirements
- Android 7.0 (API 24) or higher
- Minimum 50 MB free storage
- Active internet connection
Installation
From F-Droid
From Source
-
Clone the repository:
git clone https://github.com/fairspeed/fairspeed.git cd FairSpeed -
Build the project using Android Studio or Gradle:
./gradlew assembleRelease -
The APK will be available in
app/build/outputs/apk/release/
Configuration
API Server
By default, FairSpeed uses public speed test APIs. To configure a custom server:
- Edit
SpeedTestApi.ktand set the base URL - Ensure your server implements the required endpoints
Required API Endpoints
GET /api/servers - List available servers
GET /api/servers/nearest - Get nearest server
POST /api/speedtest/download - Test download speed
POST /api/speedtest/upload - Test upload speed
POST /api/speedtest/ping - Test ping
GET /api/config - Get test configuration
Development
Project Structure
app/src/
├── main/
│ ├── kotlin/com/fairspeed/test/
│ │ ├── data/ # Data layer (API, Repository)
│ │ ├── domain/ # Domain layer (Models, Use Cases)
│ │ ├── presentation/ # UI layer (Compose, ViewModel)
│ │ ├── di/ # Dependency Injection modules
│ │ └── FairSpeedApplication.kt
│ └── res/ # Resources (strings, colors, themes)
├── test/ # Unit tests
└── androidTest/ # Instrumentation tests
Building
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run tests
./gradlew test
# Run instrumentation tests
./gradlew connectedAndroidTest
Code Standards
- Kotlin: Follow official Kotlin style guide
- Android: Use AndroidX and Jetpack libraries only
- Architecture: Respect Clean Architecture principles
- Testing: Maintain >80% code coverage
- Documentation: Document public APIs with KDoc
Performance
- APK Size: ~15-20 MB
- RAW Size: ~8-10 MB
- Memory: <100 MB at runtime
- Startup Time: <2 seconds
Privacy & Security
- ✅ No analytics or tracking
- ✅ No crash reporting
- ✅ No ads or promotional content
- ✅ Open source code available for audit
- ✅ SSL/TLS encryption for all network requests
Contributing
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
License
FairSpeed is licensed under the GNU General Public License v3.0. See LICENSE for details.
Supported Languages
- English (en)
- (Add more languages with translations)
Roadmap
- Widget support
- Advanced statistics and charts
- Location-based server selection
- Background speed testing
- Export/share results
- Multiple theme customization
- Server latency prediction
Troubleshooting
Test fails with "No Internet Connection"
- Check your device's internet connectivity
- Try connecting to a different network
- Ensure airplane mode is disabled
Inaccurate results
- Close other apps using bandwidth
- Position device close to WiFi router
- Avoid tunneling/VPN during test
- Check server response time
App crashes
- Clear app cache: Settings > Apps > FairSpeed > Storage
- Uninstall and reinstall from F-Droid
- Report the issue with logcat output
Support
- Issues: Report bugs on GitHub Issues
- Discussions: Join community on GitHub Discussions
- Email: support@fairspeed.dev
Credits
- Built with ❤️ by the FairSpeed community
- Speed test infrastructure based on open standards
- Material Design by Google
- Jetpack Compose by Google
Changelog
See CHANGELOG.md for version history and updates.
Made with ❤️ for the open-source community