Welcome to the Reflect. This README provides an overview of the app, its features, and the technologies used to build it. The app is designed to help users organize their thoughts, memories, and ideas through a structured journaling experience.
Reflect Backend - https://github.com/FrostyCake47/reflect-backend
- About the App
- Features
- Core Concepts
- Authentication
- End-to-End Encryption (E2EE)
- Cache Management
- Save Modes
- Achievements
- Tags and Accessibility Features
- Technologies Used
- Setup and Installation
- Contributing
Reflect is a versatile platform for users to write, organize, and manage their entries. It introduces a unique chapter-based structure for categorization and supports offline and cloud-synced journaling, along with encryption for enhanced privacy. With robust features and a user-friendly design, the app is perfect for both personal and professional use.
- Chapter and Entry System: Organize journal entries into chapters for better categorization and readability.
- Authentication: Secure login with Firebase Google Authentication and email-password sign-in.
- End-to-End Encryption: Protect user data with AES encryption, ensuring that only the user can access their private entries.
- Robust Cache Management: Efficient caching system for seamless offline access, tailored to individual users and chapters.
- Multiple Save Modes: Flexible save options, including local-only, cloud-synced, and encrypted cloud-synced modes.
- Achievements: Unlock milestones for writing streaks, chapter organization, and word counts.
- Tags and Accessibility Features: Add tags to entries and utilize filtering, sorting, and searching for enhanced navigation.
- Chapters: Act as folders or categories to organize journal entries.
- Entries: The core content of the app, allowing text input with optional features like tags and images.
- Hierarchical Structure: Each user can have multiple chapters, and each chapter can contain multiple entries.
- Firebase Google Authentication: Simplify the sign-in process with Google login.
- Email-Password Authentication: Provide traditional sign-in options for users who prefer email and password.
- Secure Session Management: Ensure that user sessions are managed securely to prevent unauthorized access.
- AES Encryption: Utilize AES (Advanced Encryption Standard) to encrypt entries before they are synced to the cloud.
- Key Derivation: Derive encryption keys from user passwords, ensuring secure and unique encryption for each user.
- Zero Knowledge: Data encrypted with E2EE can only be decrypted on the user's device.
- User-Based Caching: Cache is maintained separately for each user to ensure personalized access.
- Chapter-Specific Caching: Entries are cached on a per-chapter basis, optimizing performance and resource usage.
- Offline Access: Users can seamlessly access their entries offline, with automatic syncing when connectivity is restored.
- Local Save: Data is stored locally on the device, suitable for offline use.
- Cloud-Synced Save: Data is synced to the cloud for easy access across devices.
- Encrypted Cloud-Synced Save: Data is encrypted locally before being synced, ensuring privacy even on cloud storage.
Celebrate your journaling journey with achievements! Unlock badges for:
- Writing streaks (e.g., 7 days, 30 days).
- Total word count milestones (e.g., 10,000 words).
- Organizing chapters and entries.
- Adding tags and images to entries.
- Frequently favoriting entries.
- Custom Tags: Users can add tags to entries to enhance organization and categorization.
- Tag Management: Tags are reusable and help in grouping similar entries.
- Insights with Tags: Track and analyze tag usage for better journaling insights.
- Search: Quickly locate entries by searching keywords or tags.
- Filter: Filter entries by date, tags, chapters, or other attributes.
- Sort: Sort entries alphabetically, by creation date, or by modification date.
- Favorites: Mark and access frequently used or important entries with ease.
- Flutter: For building a cross-platform, responsive UI.
- Dart: The programming language powering Flutter.
- Firebase: For authentication and cloud functions.
- AWS S3: For storing images and large files.
- Node.js: Backend API for handling requests and managing encrypted data.
- Hive: Local database for caching.
- AES Encryption: For securing sensitive data.
- Clone the repository:
git clone https://github.com/FrostyCake47/reflect.git
- Install dependencies:
flutter pub get
- Set up Firebase project and add the configuration files for Android and iOS.
- Configure
.envfile with Firebase and AWS credentials. - Run the app:
flutter run







