Vyajan is where your links stop living in 47 open tabs and start behaving.
Built with Flutter, backed by Firebase, and organized around Inbox, Library, Insights, and Settings.
- Google Sign-In authentication
- Firestore-backed link storage and updates
- Link metadata/thumbnail enrichment
- Inbox-to-library workflow
- Insights and analytics-oriented tracking
- Notification scheduling support
- Flutter + Dart
- Firebase Core, Auth, Firestore, Analytics
- Riverpod for state
- GoRouter for navigation
Inside lib/:
components/reusable UI piecesmodels/domain data modelsproviders/Riverpod providersrepositories/Firestore data accessscreens/app screensservices/auth, analytics, notifications, enrichment, migrationstheme/app theming
- Flutter SDK compatible with
sdk: >=3.4.4 <4.0.0 - Android Studio + Android SDK
- Java 21 (Android Studio JBR recommended)
- Xcode + CocoaPods for iOS
- A configured Firebase project
- Clone and enter the repo:
git clone https://github.com/anima-regem/Vyajan.git
cd Vyajan- Install packages:
flutter pub get- Add local Firebase files (these are gitignored on purpose):
android/app/google-services.jsonios/Runner/GoogleService-Info.plistlib/firebase_options.dart
- Register your debug key fingerprints for Android Google Sign-In:
keytool -list -v \
-alias androiddebugkey \
-keystore "$HOME/.android/debug.keystore" \
-storepass android \
-keypass androidTake both SHA1 and SHA256, add them in Firebase Android app settings, and download a fresh google-services.json.
flutter runRelease APKs (split per ABI):
flutter build apk --release --split-per-abiOutputs:
build/app/outputs/flutter-apk/app-armeabi-v7a-release.apkbuild/app/outputs/flutter-apk/app-arm64-v8a-release.apkbuild/app/outputs/flutter-apk/app-x86_64-release.apk
Release App Bundle:
flutter build appbundle --releaseOutput:
build/app/outputs/bundle/release/app-release.aab
Create and push a tag:
git tag -a vX.Y -m "Release vX.Y"
git push origin vX.YCreate release:
gh release create vX.Y --title "vX.Y" --generate-notesUpload assets:
gh release upload vX.Y path/to/artifact --clobberThese are local-only or sensitive and should not be committed:
android/app/google-services*.jsonios/Runner/GoogleService-Info*.plistlib/firebase_options.dartandroid/local.properties.env**.jks,*.keystore,*.p8,*.p12,*.pem,*.cerrelease_assets/.gradle-local/
This usually means Firebase OAuth fingerprints do not match your local signing key. Re-check SHA1/SHA256 in Firebase and replace google-services.json.
android/app/build.gradle must include:
coreLibraryDesugaringEnabled trueincompileOptionscoreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.5"independencies
MIT. See LICENSE.