Update README.md
This commit is contained in:
56
README.md
56
README.md
@@ -1,10 +1,10 @@
|
|||||||
# Grateful Journal
|
# 🌿 Grateful Journal
|
||||||
|
|
||||||
A minimal, private-first gratitude journaling app. Write what you're grateful for. Nothing more, nothing less.
|
> *A minimal, private-first gratitude journaling app. Write what you're grateful for. Nothing more, nothing less.*
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## What is this?
|
## ✨ What is this?
|
||||||
|
|
||||||
Grateful Journal is a personal journaling app built around one simple habit — writing down what you're grateful for each day. No social feeds, no algorithms, no sharing. Just you and your thoughts.
|
Grateful Journal is a personal journaling app built around one simple habit — writing down what you're grateful for each day. No social feeds, no algorithms, no sharing. Just you and your thoughts.
|
||||||
|
|
||||||
@@ -12,47 +12,49 @@ The app is designed to get out of your way. Open it, write a sentence or a page,
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Privacy by Design
|
## 🔐 Privacy by Design
|
||||||
|
|
||||||
Every journal entry is **end-to-end encrypted** before it ever leaves your device. The server stores only ciphertext — it has no ability to read your entries, even if compromised.
|
Every journal entry is **end-to-end encrypted** before it ever leaves your device. The server stores only ciphertext — it has no ability to read your entries, even if compromised.
|
||||||
|
|
||||||
**How it works:**
|
**How it works:**
|
||||||
|
|
||||||
- You sign in with Google. Your Firebase UID is used to derive a 256-bit master key via Argon2i key derivation.
|
- 🔑 You sign in with Google. Your Firebase UID is used to derive a 256-bit master key via Argon2i key derivation.
|
||||||
- Your entries are encrypted client-side using XSalsa20-Poly1305 (libsodium) before being sent to the backend.
|
- 🛡️ Your entries are encrypted client-side using XSalsa20-Poly1305 (libsodium) before being sent to the backend.
|
||||||
- The backend stores only the encrypted blob (ciphertext + nonce). No title, no content, no plaintext.
|
- 📦 The backend stores only the encrypted blob (ciphertext + nonce). No title, no content, no plaintext.
|
||||||
- Decryption happens entirely in your browser using the in-memory master key.
|
- 🧠 Decryption happens entirely in your browser using the in-memory master key.
|
||||||
- Logging out clears the key from memory. Your device key persists so the next login is seamless.
|
- 🔒 Logging out clears the key from memory. Your device key persists so the next login is seamless.
|
||||||
- The same Google account works across devices — the master key is deterministically derived from your credentials, so your entries are always accessible.
|
- 🌐 The same Google account works across devices — the master key is deterministically derived from your credentials, so your entries are always accessible.
|
||||||
|
|
||||||
**What the server can never see:** your entry titles, your entry content, anything you write.
|
> **What the server can never see:** your entry titles, your entry content, anything you write.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Features
|
## 🚀 Features
|
||||||
|
|
||||||
- **Write** — A clean, distraction-free writing area. Give your entry a title and write your thoughts.
|
| Feature | Description |
|
||||||
- **History** — A calendar view of all your past entries. Green dots mark the days you wrote. Tap a date to read what you wrote.
|
|---------|-------------|
|
||||||
- **Settings** — Change your display name, profile photo, and app theme (light/dark).
|
| ✍️ **Write** | A clean, distraction-free writing area. Give your entry a title and write your thoughts. |
|
||||||
- **Onboarding tour** — A guided walkthrough on first login to show you around.
|
| 📅 **History** | A calendar view of all your past entries. Green dots mark the days you wrote. |
|
||||||
- **Encrypted storage** — Every entry encrypted end-to-end with industry-standard cryptography.
|
| ⚙️ **Settings** | Change your display name, profile photo, and app theme (light / dark). |
|
||||||
|
| 🧭 **Onboarding Tour** | A guided walkthrough on first login to show you around. |
|
||||||
|
| 🔐 **Encrypted Storage** | Every entry encrypted end-to-end with industry-standard cryptography. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Tech
|
## 🛠️ Tech Stack
|
||||||
|
|
||||||
| Layer | What |
|
| Layer | Technology |
|
||||||
|-------|------|
|
|-------|-----------|
|
||||||
| Frontend | React 19 + TypeScript, Vite |
|
| 🖥️ Frontend | React 19 + TypeScript, Vite |
|
||||||
| Auth | Firebase (Google Sign-In) |
|
| 🔑 Auth | Firebase (Google Sign-In) |
|
||||||
| Encryption | libsodium — XSalsa20-Poly1305, Argon2i |
|
| 🔐 Encryption | libsodium — XSalsa20-Poly1305, Argon2i |
|
||||||
| Backend | FastAPI (Python) |
|
| ⚙️ Backend | FastAPI (Python) |
|
||||||
| Database | MongoDB |
|
| 🗄️ Database | MongoDB |
|
||||||
| Deployment | Docker (3 containers — nginx, FastAPI, MongoDB) |
|
| 🐳 Deployment | Docker — nginx, FastAPI, MongoDB |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Philosophy
|
## 💭 Philosophy
|
||||||
|
|
||||||
Most journaling apps are over-engineered. Prompts, streaks, mood tracking, sharing — all noise. This app exists for one thing: a private place to write what you're grateful for.
|
Most journaling apps are over-engineered. Prompts, streaks, mood tracking, sharing — all noise. This app exists for one thing: a private place to write what you're grateful for.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user