π Lumina Your thoughts, beautifully kept
A privacy-first, offline-capable note-taking sanctuary for solo thinkers. Zero login, zero hassle, 100% yours.
β¨ What Makes Lumina Special? π Radical Privacy All your notes stay in your browser's IndexedDB. No servers, no tracking, no account required.
π± Fully Responsive Beautiful on every device - phone, tablet, or desktop. Touch-optimized with WCAG-compliant accessibility.
π¨ Luminous Design Glass-morphism aesthetic with soft glows and poetic interactions. Light and dark themes with custom accent colors.
π Rich Text Editing Powered by Tiptap with Markdown support, to-do lists, and auto-save.
π File Attachments Upload and view PDF documents and PowerPoint presentations directly in your notes.
π€ AI Assistant (Optional) DeepSeek-powered assistant to summarize or improve your notes (requires API key).
π¬οΈ Breathe Mode Press ESC for a guided breathing overlay to refocus your mind.
π¦ Multi-Format Export Export notes as TXT, HTML, PDF, DOCX, or XLSX - your data, your format.
π Typography Heaven Choose from 12 carefully curated Google Fonts across 6 categories, with 17 font size options (8px-72px).
π Quick Start Prerequisites Node.js 18+ npm or yarn Installation
git clone
npm install
npm run dev
The app will be available at http://localhost:5000
Environment Variables For AI features, add your DeepSeek API key to .env:
DEEPSEEK_API_KEY=your_api_key_here SESSION_SECRET=your_session_secret
π Features in Detail π Note Taking Rich text editor with Tiptap Markdown support for quick formatting To-do lists with interactive checkboxes Auto-save every change to IndexedDB Automatic title extraction from first line π File Management PDF viewer with page navigation (powered by PDF.js) PowerPoint upload and download Files stored as blobs in IndexedDB per note No file size limits (within browser storage constraints) π¨ Customization Theme modes: Light, Dark, or System auto-switching Custom accent colors: Choose your brand color Font selection: 12 Google Fonts across 6 categories: Sans-serif: Inter, Roboto, Open Sans, Lato, Montserrat, Poppins, Source Sans 3 Serif: Cormorant Garamond, Playfair Display, Lora, Merriweather Monospace: JetBrains Mono Font sizes: 17 options from 8px to 72px (Microsoft Office-level precision) π€ Export & Share Export notes in multiple formats:
Plain Text (.txt) - Clean text extraction HTML Document (.html) - Beautiful self-contained pages PDF Document (.pdf) - Professional formatted PDFs Word Document (.docx) - Editable DOCX files Excel Spreadsheet (.xlsx) - Table or text sheets All exports include a branded footer: "Exported from Lumina"
π§ Wellbeing Breathe Mode (ESC key) - Guided breathing overlay Distraction-free writing - Calm, focused environment Poetic interactions - Empty state: "Light begins with a single thought" π€ AI Assistant (Optional) Powered by DeepSeek API Summarize, improve, or transform your notes Secure backend proxy (API key never exposed to frontend) Input validation and rate limiting π± Responsive Design Mobile (< 768px) Slide-in sidebar with hamburger menu Touch-optimized 44x44px buttons Essential features always visible Responsive padding (p-3) Tablet (768-1023px) Slide-in sidebar drawer Progressive UI with more controls WCAG-compliant touch targets Optimized for iPad and Android tablets Desktop (β₯ 1024px) Permanent sidebar (280px) All controls visible Font selectors and advanced features Generous spacing (p-6) ποΈ Technical Architecture Frontend React + TypeScript - Type-safe component development Wouter - Lightweight routing TanStack Query - State management and caching Tiptap - Rich text editing Tailwind CSS - Utility-first styling Shadcn/ui - Beautiful component library IndexedDB - Client-side storage Backend Express.js - Minimal server for AI proxy CORS and JSON middleware Environment variable handling Security-first design External Libraries (CDN) PDF.js - PDF rendering html2pdf.js - PDF export docx - Word document generation xlsx - Excel spreadsheet creation Mammoth.js - PowerPoint conversion π¨ Design Philosophy Light as Metaphor Notes appear as glowing "light panels" with glass-morphism. Every interaction feels luminous - soft glows, gentle transitions, breathing space.
No Harsh Edges Border radius of 12-16px consistently Subtle shadows and inner glows instead of hard borders Smooth transitions and animations Typography as Mood Carefully selected fonts reflect different emotional contexts:
Clarity: Inter, Roboto, Open Sans Soul: Cormorant Garamond, Playfair Display Precision: JetBrains Mono Color System Light mode: Pure white background with subtle grays Dark mode: Deep navy background with soft contrast Accent: Customizable (default: indigo #6366f1) Glow effects: Dynamic based on accent color ποΈ Data Storage Note Schema interface Note { id: string; content: string; // HTML from Tiptap title: string; // Auto-extracted updatedAt: number; // Timestamp pdf?: Blob; // Optional PDF attachment pptx?: Blob; // Optional PowerPoint }
User Settings (localStorage) interface UserSettings { theme: 'light' | 'dark' | 'system'; accentColor: string; fontFamily: string; fontSize: number; // 8px to 72px }
π Security Features Privacy-First β No analytics or tracking β No server-side data storage β No login or authentication required β All data stays in your browser XSS Protection β Sanitized file viewer output β No dangerouslySetInnerHTML β Sanitized error messages β Input validation on all endpoints API Security β Rate limiting on AI endpoint β 10k character prompt limit β Model whitelist validation β Stack trace prevention in errors π οΈ Development Project Structure lumina/ βββ client/ β βββ src/ β β βββ components/ # React components β β βββ pages/ # Page components β β βββ hooks/ # Custom hooks β β βββ lib/ # Utilities β β βββ App.tsx # Root component βββ server/ β βββ ai-proxy.ts # DeepSeek API proxy β βββ routes.ts # API routes β βββ index.ts # Server entry βββ shared/ β βββ schema.ts # Shared types βββ package.json
Key Commands npm run dev # Start development server npm run build # Build for production npm run preview # Preview production build
Environment Setup Copy .env.example to .env Add your DeepSeek API key (optional) Generate a session secret Run npm run dev π Browser Support β Chrome 90+ β Firefox 88+ β Safari 14+ β Edge 90+ Required Features:
IndexedDB support ES6+ JavaScript CSS Grid and Flexbox π License MIT License - See LICENSE file for details
Lumina is 100% open-source and free forever. No paywalls, no premium tiers, no restrictions.
π Acknowledgments Built With Tiptap - Rich text editor Shadcn/ui - Component library Tailwind CSS - Styling TanStack Query - State management PDF.js - PDF rendering DeepSeek - AI assistance Design Inspiration Glass-morphism, modern minimalism, and the beauty of focused writing.
π Roadmap Night Sky Archive (trash/restore deleted notes) Version history tracking Offline-first PWA support End-to-end encryption option More AI actions (translate, expand, etc.) Custom themes builder Keyboard shortcuts panel π¬ Support Having issues? Found a bug?
Check existing issues on GitHub Create a new issue with reproduction steps Include your browser version and OS π Star This Project If Lumina helps you keep your thoughts beautifully organized, consider giving it a β on GitHub!
Made with π for solo thinkers who value privacy, beauty, and focus.
Light begins with a single thought.