Clean tracking parameters from URLs before sharing
Features • Quick Start • Development • Testing • Deployment
Link Cleaner is a privacy-focused mobile application available in both Flutter and React Native implementations. It helps users remove tracking parameters from URLs before sharing them, protecting privacy and creating cleaner links.
- 🔗 URL Cleaning: Remove tracking parameters from any URL
- 🎯 Smart Detection: Automatically identifies 50+ types of tracking parameters
- 📊 Statistics: Track how many characters and trackers you've removed
- 📜 History: View previously cleaned URLs
- 🎨 Themes: Light, dark, and system theme support
- 📱 Cross-Platform: Identical features on both Flutter and React Native
- Flutter: 3.0.0 or higher
- Node.js: 18.0.0 or higher
- Platform Tools:
- Android: Android Studio & Android SDK
- iOS: Xcode 14+ (macOS only)
# Clone the repository
git clone https://github.com/yourusername/link_cleaner.git
cd link_cleaner
# Run the interactive quick start
./quickstart.sh# Setup everything
make setup
# Run Flutter app
make dev-flutter
# Run React Native app
make dev-rn-android # or make dev-rn-ios
# Run all tests
make test
# Build for production
make buildRun make help to see all available commands:
setup Setup development environment for both platforms
dev-flutter Start Flutter in development mode
dev-rn Start React Native in development mode
lint Lint both Flutter and React Native code
format Format code for both platforms
test Run all tests (unit + integration)
build Build both apps for all platforms
clean Clean build artifacts for both platforms
doctor Check development environment health
link_cleaner/
├── flutter/ # Flutter implementation
│ ├── lib/
│ │ ├── core/ # Constants and themes
│ │ ├── domain/ # Business logic
│ │ ├── data/ # Data layer
│ │ └── presentation/ # UI layer
│ └── test/ # Flutter tests
├── react_native/ # React Native implementation
│ ├── src/
│ │ ├── domain/ # Business logic
│ │ ├── data/ # Data layer
│ │ └── presentation/ # UI layer
│ └── __tests__/ # React Native tests
├── test/ # Cross-platform integration tests
│ ├── features/ # Gherkin test scenarios
│ ├── step-definitions/ # Test implementations
│ └── support/ # Test framework
└── Makefile # Automation commands
Both apps follow Clean Architecture principles:
- Domain Layer: Business entities and use cases
- Data Layer: Repository implementations and data sources
- Presentation Layer: UI components and state management
# Run unit tests for both platforms
make test-unit
# Flutter only
make test-unit-flutter
# React Native only
make test-unit-rnThe project uses Cucumber + Appium for cross-platform integration testing:
# Run integration tests on both platforms
make test-integration
# Run specific test scenarios
cd test
./run-tests.sh --tags "@core"
# Compare results between platforms
make test-compare- Unit tests for business logic
- Widget/Component tests
- End-to-end integration tests
- Cross-platform parity validation
# Build debug versions for testing
make build-debug# Build for all platforms
make build
# Create a new release
make release VERSION=1.0.1# Flutter
cd flutter
flutter build apk --release
flutter build appbundle --release
flutter build ios --release
# React Native
cd react_native
npm run build:android
npm run build:ios-
Build the release bundles:
make build
-
Upload to Play Console:
- Flutter:
flutter/build/app/outputs/bundle/release/app-release.aab - React Native:
react_native/android/app/build/outputs/bundle/release/app-release.aab
- Flutter:
-
Build for iOS (macOS required):
make build
-
Upload using Xcode or Transporter
The project includes GitHub Actions workflows for:
- ✅ Automated testing
- 📦 Building artifacts
- 🚀 Release automation
See .github/workflows/ci.yml for the complete pipeline.
# Run health check
make doctor
# View logs
make logs
# Clean and rebuild
make clean
make setup- Build failures: Run
make cleanthenmake setup - Test failures: Ensure emulators/simulators are running
- Permission issues: Check platform-specific setup in respective README files
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests (
make test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- React Native team for the cross-platform solution
- All contributors and testers
Made with ❤️ for privacy