A beautiful, fast, and secure notes application built with Flutter and Firebase.
Supports Android, iOS, and Web from a single codebase. Users can sign up, log in, and manage their personal notes with real-time sync — all data is private and tied to their account.
- Secure authentication (Email/Password) via Firebase Auth
- Real-time sync with Firestore – notes update instantly across devices
- Full CRUD: Create, Read, Update, Delete notes
- Truly cross-platform: Android · iOS · Web
- Clean Material 3 design with dark mode support
- Private notes – only the owner can access their data
- Offline support (Firestore cache)
- Auto-save while typing
| Technology | Purpose |
|---|---|
| Flutter 3.x | UI & Cross-platform framework |
| Dart | Language |
| Firebase Authentication | User auth (email/password) |
| Firebase Firestore | Real-time NoSQL database |
| Firebase Config | Remote config & feature flags (optional) |
| Provider / Riverpod | State management (depending on your choice) |
- Flutter ≥ 3.16.0 (recommended: latest stable)
- Dart SDK (comes with Flutter)
- Firebase project (free tier is enough)
- Git
git clone https://github.com/Rethabile2004/notes-app.git
cd notes-appflutter pub get- Go to https://console.firebase.google.com
- Create a new project (or use existing)
- Add apps:
- Android (package name usually
com.example.notes_app) - iOS (if targeting iOS)
- Web
- Android (package name usually
- Download:
google-services.json→ place inandroid/app/GoogleService-Info.plist→ place inios/Runner/(if iOS)- Web config → paste into
lib/firebase_options.dart(or follow flutterfire setup)
- Enable in Firebase Console:
- Authentication → Sign-in method → Email/Password
- Firestore Database → Create database in production mode → start in your region
dart pub global activate flutterfire_cli
flutterfire configureThis auto-generates firebase_options.dart for all platforms.
flutter runOr pick your target:
flutter run -d chrome # Web
flutter run -d android # Android emulator/devicelib/
├── main.dart # Entry point
├── src/
│ ├── screens/ # All pages (login, home, note editor)
│ ├── widgets/ # Reusable components
│ ├── services/ # Firebase auth & firestore logic
│ ├── models/ # Note model
│ └── utils/ # Helpers & constants
| Issue | Fix |
|---|---|
google-services.json missing |
Add it to android/app/ |
| Web not loading Firebase | Run flutterfire configure again |
| "No Firebase App initialized" | Make sure Firebase.initializeApp() is called in main.dart |
| Rules too open | Use these secure Firestore rules (already in repo or add them): |
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}Pull requests are welcome! For major changes, please open an issue first.
MIT License – feel free to use this for learning or as a starter template.
Made with by @Rethabile2004
⭐ Star this repo if it helped you!



