A powerful Flutter-based task scheduling and productivity application integrated with Firebase for secure data storage and authentication, featuring AI-powered assistance for enhanced productivity.
revix is a comprehensive task management solution designed to help you organize, schedule, and track your tasks efficiently. Built with Flutter and powered by Firebase, it provides a seamless cross-platform experience with real-time synchronization and advanced features.
- Secure user authentication via email/password
- Firebase-powered user management
- Protected user data storage
- Add Entry Form: Streamlined entry creation interface
- Schedule Tracking: Comprehensive scheduling system with today's view
- Task Details: Detailed view for each task with full information
- Real-time Synchronization: Instant updates across all devices
- AI Chat Assistant: Built-in AI chat powered by Gemini API
- Smart Recommendations: AI-powered task suggestions and productivity tips
- Chat History: Persistent conversation history for reference
- Model Selection: Choose from different AI models for varied assistance
- Dynamic Theming: Custom theme generator with multiple color schemes
- Profile Management: Personalized user profiles with customizable settings
- Responsive Design: Optimized for various screen sizes and orientations
- Progress Visualization: Charts and graphs using FL Chart
- Task Statistics: Comprehensive tracking of task completion rates
- Home Widget: Quick access to tasks directly from home screen (Android)
- Cross-platform Support: Android, iOS, Web, and Desktop ready
- Offline Capability: Local data storage using Hive database
- Image Support: Task attachments with image compression
- URL Launcher: Direct links to external resources
- Package Info: App version and build information tracking
Before getting started, ensure you have the following installed on your development machine:
- Flutter SDK (v3.5.4+ recommended)
- Dart SDK (included with Flutter)
- Android Studio or VS Code with Flutter extensions
- Firebase CLI (
npm install -g firebase-tools) - A Firebase account
- Git for version control
- Flutter: Cross-platform UI framework
- Dart: Programming language
- Firebase Core: Backend infrastructure
- Firebase Database: Real-time database
- Firebase Auth: Authentication service
- Firebase Storage: File storage
- Gemini API: AI-powered chat assistant
- Custom AI Models: Multiple model selection
- Hive: Fast, lightweight local database
- Shared Preferences: Key-value storage
- FL Chart: Data visualization
- Provider: State management
- Image Picker: Camera and gallery access
- URL Launcher: External link handling
- Path Provider: File system access
- Tauri: Rust-based framework for building lightweight desktop applications
- WebView: Native webview for rendering Flutter web builds
- Auto-updater: Built-in update mechanism for desktop apps
git clone https://github.com/imnexerio/revix.git
cd revix- Go to the Firebase Console
- Create a new project (with any name of your choice)
- Set up Realtime Database:
- Navigate to "Realtime Database" in the Firebase console
- Click "Create Database"
- Start in test mode, then switch to the rules below
- Set up Firebase Storage:
- Navigate to "Storage" in the Firebase console
- Click "Get started" and follow the setup wizard
- Enable Email/Password Authentication:
- Navigate to "Authentication" in the Firebase console
- Under "Sign-in method", enable "Email/Password"
- Configure Flutter project with Firebase:
# Install FlutterFire CLI if not already installed dart pub global activate flutterfire_cli # Configure Firebase for your Flutter project flutterfire configure
- Select the Firebase project you created
- Important: Use
com.imnexerio.revixas the Android package name
- Update Realtime Database Rules:
{ "rules": { "users": { "$uid": { ".read": "auth != null && auth.uid == $uid", ".write": "auth != null && auth.uid == $uid" } } } }
To enable public holiday fetching:
-
Create Google Cloud Project:
- Go to Google Cloud Console
- Create a new project (e.g., "Revix Holidays")
-
Enable Google Calendar API:
- Navigate to "APIs & Services" → "Library"
- Search for "Google Calendar API" and enable it
-
Create API Key:
- Go to "APIs & Services" → "Credentials"
- Click "+ CREATE CREDENTIALS" → "API key"
- Copy the generated API key (e.g.,
AIzaSyD...)
-
Add API Key to Code:
- Open
lib/Utils/PublicHolidayFetcher.dart - Replace
YOUR_API_KEY_HEREwith your actual API key:
static const String GOOGLE_API_KEY = 'AIzaSyD...your-actual-key...';
- Open
-
Restrict API Key (Recommended):
- In Google Cloud Console, click on your API key
- Under "API restrictions", select "Google Calendar API" only
- Under "Application restrictions", add your package:
com.imnexerio.revix
-
Supported Countries:
- 🇮🇳 India, 🇺🇸 US, 🇬🇧 UK, 🇨🇦 Canada, 🇦🇺 Australia
- 🇩🇪 Germany, 🇫🇷 France, 🇯🇵 Japan, 🇨🇳 China, 🇧🇷 Brazil
- 🇲🇽 Mexico, 🇮🇹 Italy, 🇪🇸 Spain, 🇰🇷 South Korea
- 🇵🇰 Pakistan, 🇧🇩 Bangladesh, 🇸🇬 Singapore, 🇲🇾 Malaysia
- 🇮🇩 Indonesia, 🇹🇭 Thailand, and more...
Free Tier: 10,000 requests/day (more than enough for personal use)
To enable AI chat functionality:
- Get a Gemini API key from Google AI Studio
- The app will prompt you to enter your API key on first use of the AI chat feature
- API keys are stored securely using local storage
flutter pub getflutter run- Sign Up/Login: Create a new account or login with existing credentials
- Add Entries: Use the "Add Entry" form to create new entries
- Schedule View: Check your daily schedule in the "Today" section
- AI Assistant: Access the AI chat for productivity tips and task suggestions
- Task Management: Tap on any task to view detailed information
- Public Holidays: Navigate to Settings → Data Management to fetch holidays for your country
- AI Chat: Navigate to the chat section for AI-powered assistance
- Settings: Customize themes, manage profile, and configure preferences
- Home Widget: Enable for quick task access from your home screen (Android)
- ✅ Android (Primary platform with extra features)
- ✅ iOS (Full feature support)
- ✅ Web (Progressive Web App)
- ✅ Windows (Desktop application via Tauri)
- ✅ macOS (Desktop application via Tauri - Intel & Apple Silicon)
- ✅ Linux (Desktop application via Tauri - AppImage, DEB)
Download the latest version for your platform from the Releases Page:
| Platform | Download | Format |
|---|---|---|
| Android | Download APK | .apk |
| Windows | Download Installer | .msi / .exe / Portable .zip |
| macOS (Apple Silicon) | Download DMG | .dmg |
| macOS (Intel) | Download DMG | .dmg |
| Linux | Download | .AppImage / .deb / Portable .tar.gz |
| Web | Live App | Browser |
💡 Note: All builds are automatically generated via GitHub Actions CI/CD pipeline.
Ensure your Firebase configuration files are properly placed:
- Android:
android/app/google-services.json - iOS:
ios/Runner/GoogleService-Info.plist - Web:
web/firebase-config.js
-
Firebase Connection Issues
- Verify that
flutterfire configurecompleted successfully - Check that the package name matches
com.imnexerio.revix - Ensure the Firebase configuration files are in the correct locations
- Verify Firebase project has the necessary services enabled
- Verify that
-
Build Failures
- Run
flutter cleanfollowed byflutter pub get - Ensure Android SDK is properly configured
- Check that all required permissions are granted
- Run
-
AI Chat Issues
- Verify Gemini API key is valid and properly entered
- Check internet connectivity
- Ensure API quota hasn't been exceeded
-
Public Holiday Fetcher Issues
- Verify Google Calendar API is enabled in your Google Cloud project
- Check that API key is correctly set in
PublicHolidayFetcher.dart - Ensure you haven't exceeded the free tier quota (10,000 requests/day)
- Try selecting a different country if one doesn't work
-
Home Widget Issues (Android)
- Verify home widget permissions are granted
- Check that the widget is properly added to the home screen
- Ensure background processing permissions are enabled
# Clean and rebuild
flutter clean
flutter pub get
flutter run
# Check for dependency issues
flutter pub deps
flutter doctor
# Debug Firebase connection
flutterfire configure --project=your-project-id- Local Caching: Uses Hive for fast local data access
- Image Compression: Automatic image optimization for storage
- Lazy Loading: Efficient memory usage with on-demand loading
- Background Services: Minimal battery impact with optimized background tasks
This project uses GitHub Actions for automated builds, deployments, and releases.
The CI/CD pipeline is triggered on:
- Push to
main/masterbranches - Pull requests to
main/masterbranches - Version tags (e.g.,
v1.2.3) - Manual workflow dispatch
| Job | Description | Outputs |
|---|---|---|
| build-flutter | Builds Android APK and Flutter Web | APK, Web artifacts |
| build-tauri | Builds desktop apps for all platforms | Windows (MSI, EXE, Portable), Linux (AppImage, DEB, Portable), macOS (DMG for ARM & Intel) |
| release | Creates GitHub Release with all artifacts | Automated release with binaries |
- Firebase Hosting: Web app is automatically deployed on push to main/master or version tags
- GitHub Releases: Created automatically when pushing a version tag (e.g.,
git tag v1.2.3 && git push --tags)
- Update version in
pubspec.yaml - Commit your changes
- Create and push a version tag:
git tag v1.2.3 git push origin v1.2.3
- GitHub Actions will automatically:
- Build all platform binaries
- Deploy web app to Firebase Hosting
- Create a GitHub Release with all artifacts
For maintainers setting up the CI/CD pipeline, the following secrets must be configured in GitHub repository settings.
- Go to your GitHub repository
- Navigate to Settings → Secrets and variables → Actions
- Click New repository secret
- Enter the secret name and value
- Click Add secret
📱 Android Signing Secrets
| Secret Name | Description | How to Get It |
|---|---|---|
KEYSTORE_BASE64 |
Base64 encoded keystore file | Run: base64 -i upload-keystore.jks (macOS/Linux) or certutil -encode upload-keystore.jks encoded.txt (Windows) |
KEYSTORE_PASSWORD |
Keystore password | The password you set when creating the keystore |
KEY_ALIAS |
Key alias | The alias you specified (e.g., upload) |
KEY_PASSWORD |
Key password | The key password (often same as keystore password) |
GOOGLE_SERVICES_JSON |
Base64 encoded google-services.json | Run: base64 -i android/app/google-services.json |
Creating a Keystore (if you don't have one):
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload🔥 Firebase Configuration Secrets
| Secret Name | Description | Where to Find It |
|---|---|---|
FIREBASE_SERVICE_ACCOUNT |
Service account JSON for deployment | Firebase Console → Project Settings → Service Accounts → Generate new private key |
FIREBASE_PROJECT_ID |
Firebase project ID | Firebase Console → Project Settings → General → Project ID |
FIREBASE_API_KEY_WEB |
Web API key | Firebase Console → Project Settings → General → Web API key |
FIREBASE_API_KEY_ANDROID |
Android API key | Found in google-services.json under api_key[0].current_key |
FIREBASE_APP_ID_WEB |
Web app ID | Firebase Console → Project Settings → General → Your apps → Web app ID |
FIREBASE_APP_ID_ANDROID |
Android app ID | Found in google-services.json under mobilesdk_app_id |
FIREBASE_MESSAGING_SENDER_ID |
Messaging sender ID | Firebase Console → Project Settings → Cloud Messaging → Sender ID |
FIREBASE_AUTH_DOMAIN |
Auth domain | Format: your-project-id.firebaseapp.com |
FIREBASE_DATABASE_URL |
Realtime Database URL | Firebase Console → Realtime Database → Copy URL |
FIREBASE_STORAGE_BUCKET |
Storage bucket | Format: your-project-id.appspot.com |
🖥️ Tauri Signing Secrets (Optional - for auto-updates)
| Secret Name | Description | How to Get It |
|---|---|---|
TAURI_SIGNING_PRIVATE_KEY |
Tauri signing private key | Generated using Tauri CLI |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD |
Signing key password | Password you set during key generation |
Generating Tauri Signing Keys:
npm install -g @tauri-apps/cli
tauri signer generate -w ~/.tauri/revix.keyThis will output a public key and save the private key. Add the private key content to TAURI_SIGNING_PRIVATE_KEY.
- Data Encryption: All user data is encrypted in transit and at rest
- Authentication: Secure Firebase authentication
- API Security: Secure API key management
- Privacy: No personal data is shared with third parties
- v1.2.1: Current version with AI integration and enhanced UI
- v1.2.0: Added AI chat functionality and improved theming
- v1.1.0: Introduced home widget support and enhanced task management
- v1.0.0: Initial release with core task management features
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your 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 Flutter/Dart best practices
- Ensure all tests pass before submitting
- Update documentation for new features
- Follow the existing code style and formatting
- Add appropriate comments for complex logic
- 🐛 Bug fixes
- ✨ New features
- 📚 Documentation improvements
- 🎨 UI/UX enhancements
- 🔧 Performance optimizations
- 🧪 Test coverage improvements
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Developer: imnexerio
- Project Repository: https://github.com/imnexerio/revix
- Issues: Report bugs or request features
- Flutter team for the amazing framework
- Firebase for robust backend services
- Google AI for Gemini API integration
- Open source community for various packages and libraries
Made with ❤️ by imnexerio
⭐ Star this repo if you find it helpful!


