A beautiful, modern diary application built with Flutter that allows users to create shared diaries, write entries with Markdown support, and collaborate with others in real-time.
- Firebase Authentication with email/password
- Secure user registration and login
- Password reset functionality
- Create personal diaries or collaborate with others
- Join diaries using unique diary codes
- Real-time synchronization across all devices
- Member management with proper permissions
- Markdown support for formatted text
- Mood tracking with intuitive emoji selection
- Tag system for easy organization and filtering
- Real-time preview of formatted content
- Offline support with automatic sync when online
- Apple-inspired design with clean, minimal interface
- Dark/Light theme support with pitch-black dark mode
- Smooth animations and seamless transitions
- Responsive design that works on all screen sizes
- Intuitive navigation with floating action buttons
- Real-time filtering by tags and moods
- Search functionality across all entries
- Entry management with edit and delete options
- Diary management with owner controls
- Automatic timestamps and user attribution
| Login Screen | Home Screen |
|---|---|
![]() |
![]() |
| Diary Entries | New Entry |
|---|---|
![]() |
![]() |
| Login Screen | Home Screen |
|---|---|
![]() |
![]() |
| Diary Entries | New Entry |
|---|---|
![]() |
![]() |
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Firebase project setup
- Android Studio / VS Code
- Git
-
Clone the repository
git clone https://github.com/CrayFish0/echo.git cd echo
-
Install dependencies
flutter pub get
-
Firebase Setup
- Create a new Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Create Firestore Database
- Download configuration files:
google-services.jsonβandroid/app/GoogleService-Info.plistβios/Runner/
-
Configure Firestore Security Rules
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; } match /diaries/{diaryId} { allow read, write: if request.auth != null && request.auth.uid in resource.data.members; match /entries/{entryId} { allow read, write: if request.auth != null && request.auth.uid in get(/databases/$(database)/documents/diaries/$(diaryId)).data.members; } } } }
-
Run the app
flutter run
lib/
βββ main.dart # App entry point
βββ firebase_options.dart # Firebase configuration
βββ models/ # Data models
β βββ diary_model.dart
β βββ diary_entry_model.dart
β βββ user_model.dart
βββ providers/ # State management
β βββ auth_provider.dart
β βββ diary_provider.dart
β βββ theme_provider.dart
βββ screens/ # UI screens
β βββ auth/
β β βββ login_screen.dart
β β βββ register_screen.dart
β βββ diary/
β β βββ diary_screen.dart
β β βββ entry_editor_screen.dart
β βββ home_screen.dart
βββ services/ # Business logic
βββ auth_service.dart
βββ firestore_service.dart
- Flutter - Cross-platform mobile framework
- Firebase Auth - Authentication service
- Cloud Firestore - NoSQL database
- Provider - State management
- flutter_markdown - Markdown rendering
- shared_preferences - Local storage
- Material Design 3 - UI components
Smart Diary follows Apple's Human Interface Guidelines with:
- Minimalist interface focusing on content
- Consistent typography and spacing
- Subtle animations that enhance user experience
- Accessible design with proper contrast ratios
- Responsive layout adapting to different screen sizes
- Rich text editor with formatting toolbar
- Image attachments in diary entries
- Export functionality (PDF, Markdown)
- Push notifications for shared diary updates
- Advanced search with filters
- Backup and restore functionality
- Desktop app support
- Encryption for sensitive entries
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Flutter/Dart style guidelines
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Team for the amazing framework
- Firebase for backend services
- Material Design for design inspiration







