Skip to content
/ echo Public

Echo is a modern, collaborative diary app built with Flutter and Firebase, featuring real-time sync, Markdown formatting, and shared journaling in a beautifully minimal interface.

License

Notifications You must be signed in to change notification settings

CrayFish0/echo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌟 Echo

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.

✨ Features

πŸ” Authentication

  • Firebase Authentication with email/password
  • Secure user registration and login
  • Password reset functionality

πŸ“– Shared Diaries

  • Create personal diaries or collaborate with others
  • Join diaries using unique diary codes
  • Real-time synchronization across all devices
  • Member management with proper permissions

✍️ Rich Entry Creation

  • 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

🎨 Modern UI/UX

  • 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

πŸ” Advanced Features

  • 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

πŸ“± Screenshots

πŸŒ™ Dark Mode

Login Screen Home Screen
Dark Login Dark Home
Diary Entries New Entry
Dark Diary Dark Entry

β˜€οΈ Light Mode

Login Screen Home Screen
Light Login Light Home
Diary Entries New Entry
Light Diary Light Entry

πŸš€ Getting Started

Prerequisites

  • Flutter SDK (>=3.0.0)
  • Dart SDK (>=3.0.0)
  • Firebase project setup
  • Android Studio / VS Code
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/CrayFish0/echo.git
    cd echo
  2. Install dependencies

    flutter pub get
  3. 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/
  4. 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;
          }
        }
      }
    }
  5. Run the app

    flutter run

πŸ—οΈ Project Structure

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

πŸ› οΈ Technologies Used

  • 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

🎨 Design Philosophy

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

πŸ“‹ Features Roadmap

  • 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

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow Flutter/Dart style guidelines
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Flutter Team for the amazing framework
  • Firebase for backend services
  • Material Design for design inspiration

Built with ❀️ using Flutter

About

Echo is a modern, collaborative diary app built with Flutter and Firebase, featuring real-time sync, Markdown formatting, and shared journaling in a beautifully minimal interface.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published