Speed Tester for Android
Find a file
2026-04-23 11:23:07 +00:00
.vscode Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
app Bump version to 1.0.1 for upload speed fix 2026-04-21 12:56:15 +02:00
fastlane/metadata/android/en-US Upload files to "fastlane/metadata/android/en-US/images" 2026-04-23 11:23:07 +00:00
gradle Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
.gitattributes Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
.gitignore Ignore local releases folder to prevent keystore and binaries leak 2026-04-20 20:06:57 +02:00
ARCHITECTURE.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
BEST_PRACTICES.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
build.gradle.kts Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
build.sh Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
CHANGELOG.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
CODE_STRUCTURE.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
COMMANDS.sh Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
CONTRIBUTING.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
DEPLOYMENT.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
docker-compose.yml Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
Dockerfile.build Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
fairspeed_icon.png Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
gradle.properties Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
gradlew Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
gradlew.bat Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
INDEX.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
librespeed-setup.sh Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
LIBRESPEED_SETUP.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
LICENSE Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
nginx.conf Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
PROJECT_SPEC.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
QUICKSTART.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
README.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
README_SERVER.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
SERVER_CLIENT_INTEGRATION.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
settings.gradle.kts Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
setup-android-sdk.sh Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00
SETUP.md Initial commit for full open-source launch 2026-04-19 19:47:57 +02:00

FairSpeed

API Level License Built with Kotlin

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

FairSpeed on F-Droid

From Source

  1. Clone the repository:

    git clone https://github.com/fairspeed/fairspeed.git
    cd FairSpeed
    
  2. Build the project using Android Studio or Gradle:

    ./gradlew assembleRelease
    
  3. 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:

  1. Edit SpeedTestApi.kt and set the base URL
  2. 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:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

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