A zero-knowledge encrypted journal and digital day planner for those too busy to journal. Capture the key moments of your day, organize with topics, and track health, goals, and more — all encrypted on your device before it ever leaves the browser.
- Zero-Knowledge Encryption - AES-256-GCM client-side encryption with non-extractable keys
- Dashboard Home - Drag-and-drop widgets: quick entry, daily priorities, events, tasks, shopping, medication schedule; daily quote and Playfair greeting
- Rich Text Editor - TipTap-based editor with formatting toolbar and inline drawing support
- Topic Organization - Categorize entries with custom topics, icons, and colors
- Quick Tab Filters - Date, Tasks, All, Bookmarks, and Search views
- Goals & Milestones - Track goals with milestone progress and task linking
- Meal Planning & Recipes - Weekly menu planner, recipe entries with ingredients and instructions, linked shopping lists
- Shopping Lists - Checklist-style lists linkable to recipes; dashboard widget shows active list with inline check-off
- Health Tracking - Medications, symptoms, food, exercise, and allergies - Printable medication lists (with dosage and schedule), symptoms, and allergy records
- Medication Schedule - Daily dose tracking with time-based scheduling
- Health Reporting - Correlation analysis, severity trends, and exercise impact charts with date range filtering
- Calendar View - Visual month overview; events and meetings appear on their scheduled date in your header colour
- Entry Sharing - Share entries via encrypted public links
- PWA Support - Installable as a standalone app with offline shell caching
- Keyboard Shortcuts - Ctrl+N (new entry), Ctrl+D (delete), Enter to save
- Customizable Theme - 40+ muted vintage header colors, 28 background images, light/dark mode
- Apple Pencil Support - Scribble handwriting-to-text in all fields; freehand drawing canvas with pressure sensitivity, palm rejection, and undo — drawings saved inline as encrypted SVG
- Mobile Responsive - Collapsible navigation, touch-friendly tap targets
- Accessible - ARIA roles, focus management, keyboard navigation, reduced motion support
- All entry content is encrypted in the browser before transmission
- Recovery key system allows password reset without compromising zero-knowledge design
- Schema-per-user database isolation (not row-level security)
- Session management — view and revoke active sessions from any device
- Non-extractable CryptoKeys — master key cannot be exported from the browser's crypto subsystem
- Split-token sessions — database leaks cannot reconstruct valid session tokens
This is a complete rebuild combining the best of the original Chronicles UI with a cleaner, modular architecture:
- Client: React 19 SPA (Vite) — no Next.js, ready for React Native
- Server: Express 5 API with TypeScript
- Shared: Crypto, types, validation, and theme tokens shared across platforms
- Components: Atomic Design (atoms -> molecules -> organisms -> templates -> views)
- Styling: styled-components (CSS-in-JS) with muted vintage design tokens
chronicles-rebuild/
├── client/ # React SPA (Vite + styled-components + PWA)
├── server/ # Express API (Prisma + PostgreSQL)
├── shared/ # Shared code (crypto, types, theme)
└── docs/ # BLUEPRINT.md, ACCESSIBILITY_UX_PLAN.md
Chronicles is a daily journal. Capture moments, organize with topics, and track what matters to you.
Topics categorize your entries — like tags or folders. Each has an icon and color.
Default Topics with special fields:
- Task - Todo items with completion tracking and auto-migration
- Goal - Objectives with milestone progress tracking
- Milestone - Checkpoints within goals, linkable to tasks
- Medication - Schedules with dosage, frequency, and dose logging
- Food - Meal logging with ingredients, calories, and meal type
- Symptom - Severity tracking (1-10 scale) with duration
- Exercise - Type, duration, intensity, and distance tracking
- Allergy - Allergen, severity, and reaction tracking
- Event - Date/time, location, and contact details
- Meeting - Attendees, topic, location, and scheduling
- Music / Books / TV/Movies - Entertainment tracking
- Research / Idea / Quote - Inspiration collection
You can create your own topics for anything else.
- Dashboard (
/) - Home view with daily widgets and quick entry - Journal (
/journal) - Main entry view with quick tab filters (Date, Tasks, All, Bookmarks, Search) - Topics - Manage and browse entries by topic
- Calendar - Month view with clickable days for detail; events/meetings appear on their scheduled date
- Planning - Goals, milestones, tasks, and todos (dropdown selector)
- Health - Medications, schedule, food, exercise, symptoms, allergies, and reporting
- Quick Links - Entertainment and inspiration collections
| Shortcut | Action |
|---|---|
| Ctrl/Cmd + N | New entry |
| Ctrl/Cmd + D | Delete selected entry |
| Enter | Save entry (compact mode) |
| Shift + N | New entry (when not typing) |
Analyze health data with correlation analysis:
- Symptom frequency and severity trends over time
- Food-symptom correlations — identify trigger ingredients
- Exercise impact on symptom patterns
- Calorie summaries by meal type
- Date range filtering — Today, Week, Month, Year, or custom date range
Medication lists, symptom logs, and allergy records can be printed directly from the browser for sharing with healthcare providers.
- Sessions - View and revoke active sessions
- Password - Change password (master key re-wrapped, data not re-encrypted)
- Features - Enable/disable health tracking, planning, entertainment, and more
- Theme - 40+ header colors, 28 background images, light/dark mode
- Data - Seed test data, export/import entries
- Node.js 18+
- PostgreSQL 15+
-
Clone the repository
-
Install dependencies:
npm install
-
Set up environment variables:
cp server/.env.example server/.env # Edit server/.env with your database credentials -
Set up the database:
cd server npx prisma generate npx prisma db push -
Run both servers:
npm run dev
This starts the Express API on port 3001 and the Vite dev server on port 5173.
Password requirements:
- Minimum 12 characters
- At least one uppercase letter, lowercase letter, and number
Recovery Key: At registration, you'll receive a recovery key (formatted as hex with dashes). Save it securely — it's the only way to recover your account if you forget your password.
npm run dev # Start both client and server
npm run dev:client # Start Vite dev server only
npm run dev:server # Start Express API only
npm run build # Build all packages
npm run test # Run all tests (shared + server + client)
npm run test:coverage # Run tests with coverage- Frontend: React 19, Vite, react-router-dom, styled-components, Zustand, TipTap, perfect-freehand
- Backend: Express 5, TypeScript, Prisma
- Database: PostgreSQL (schema-per-user isolation)
- Encryption: Web Crypto API (AES-256-GCM, PBKDF2-SHA256 600k iterations)
- Auth: Split-token sessions (selector + SHA-256 verifier hash)
- PWA: vite-plugin-pwa with Workbox (shell caching, no encrypted data cached)
- Accessibility: ARIA roles, focus trapping, keyboard navigation, prefers-reduced-motion
- Testing: Vitest, React Testing Library, supertest
All Rights Reserved. You may not use this for any commercial purpose. You can download this application for personal use only, but you may not modify it.