freedium_mobile
freedium_mobile copied to clipboard
An app to read Medium articles without hitting the paywall
Freedium Mobile
Read Medium articles without a subscription
Your paywall breakthrough for Medium!
Overview
Freedium Mobile is an Android application that bypasses Medium's paywall, allowing you to read member-only articles for free. The app redirects Medium articles through Freedium.cfd to provide unrestricted access.
Built with Flutter and featuring Material You design, Freedium Mobile offers a native reading experience with dynamic theming and dark mode support.
Demo
Features
- Paywall Bypass - Read any Medium article without hitting the paywall or needing a subscription
- Share Integration - Share Medium articles directly to Freedium from Chrome, Twitter, or any browser
- Clipboard Detection - Automatically detects Medium URLs in your clipboard for quick access
- Configurable Mirrors - Multiple Freedium server mirrors with automatic failover
- Material You Theming - Dynamic color schemes that adapt to your Android 12+ wallpaper
- Dark Mode - Comfortable reading with automatic or manual theme switching
- Font Size Control - Adjust text size for better readability
- Auto-Update Checker - Get notified when new versions are available
Installation
Quick Install
- Go to the Releases page
- Download the latest APK file
- Install on your Android device
- Launch the app and start reading!
Note: You may need to enable "Install from unknown sources" in your device settings.
How to Use
Method 1: Paste URL (Recommended)
- Copy a Medium article URL
- Open Freedium Mobile
- The URL will be auto-detected in the input field
- Tap "Read Article"
Method 2: Share from Browser or App
- Open a Medium article in any browser or app
- Tap the Share button
- Select "Freedium" from the share menu
- Article opens automatically
Method 3: Manual Entry
- Open Freedium Mobile
- Type or paste any Medium article URL
- Tap "Read Article"
Development
Prerequisites
- Flutter SDK 3.27.0 or higher
- Dart SDK 3.10.0 or higher (included with Flutter)
- Android Studio or VS Code with Flutter extensions
- Git
Quick Start
# Clone the repository
git clone https://github.com/AmanSikarwar/freedium_mobile.git
cd freedium_mobile
# Install dependencies
flutter pub get
flutter run
Build Commands
# Debug build
flutter run
# Release APK
flutter build apk --release
# Release APK with obfuscation (recommended for production)
flutter build apk --release --obfuscate --split-debug-info=obfuscate
# Format code
dart format .
# Analyze code
flutter analyze
Output location:
build/app/outputs/flutter-apk/
Project Structure
lib/
├── app.dart # App widget, intent handling, global navigator
├── main.dart # Entry point
├── core/
│ ├── constants/
│ │ └── app_constants.dart # freediumUrl, urlRegExp, appVersion
│ ├── services/
│ │ ├── clipboard_service.dart # Clipboard URL detection
│ │ ├── font_size_service.dart # Font size persistence
│ │ ├── intent_service.dart # Share-to-app handling
│ │ ├── theme_mode_service.dart # Theme persistence
│ │ └── update_service.dart # GitHub release checker
│ └── theme/
│ ├── app_theme.dart # Material You theme config
│ ├── theme_provider.dart # Dynamic color provider
│ └── util.dart # Theme utilities
└── features/
├── home/
│ ├── application/
│ │ └── home_provider.dart # Home state management
│ └── presentation/
│ ├── home_screen.dart
│ └── widgets/
├── settings/
│ ├── application/
│ │ └── settings_provider.dart # Settings state & mirror management
│ ├── domain/
│ │ └── settings_state.dart # Settings & FreediumMirror models
│ └── presentation/
│ └── settings_screen.dart
└── webview/
├── application/
│ ├── theme_injector_service.dart # CSS injection for theming
│ └── webview_provider.dart # WebView controller & state
├── domain/
│ └── webview_state.dart
└── presentation/
├── webview_screen.dart
└── widgets/
Architecture
The app follows a feature-based architecture with Riverpod 3.0 for state management:
-
Features - Organized by functionality (
home,settings,webview) - Application - Riverpod Notifiers and business logic
- Presentation - UI screens and widgets
-
Domain - State classes with
copyWith() - Core - Shared services, constants, and theming
Key Patterns
- State Management: Riverpod 3.x Notifier API (not StateNotifier)
- Theme Injection: Flutter → CSS variables → WebView DOM
- Intent Handling: Two-phase (initial + streaming) with duplicate prevention
Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
-
Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes following the existing code style
- Test your changes on Android devices
-
Commit with clear messages (
git commit -m 'Add amazing feature') -
Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow the existing code architecture and patterns
- Use Riverpod 3.0 Notifier API for state management
- Always use
copyWith()for state updates - Use
debugPrint()instead ofprint()for logging - Test changes thoroughly on Android devices
- Keep pull requests focused on a single feature or fix
Reporting Issues
Found a bug? Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Device model and Android version
License
This project is licensed under the MIT License. See the LICENSE file for details.
Support
- Report bugs: GitHub Issues
- Star this repo if you find it useful!
Made with ❤️ by Aman Sikarwar
Keywords: Medium paywall bypass, read Medium free, Medium article reader, Android Medium app, Flutter app, open source, Medium subscription alternative, paywall remover, free Medium access