Your personal jotter for documenting questions, discoveries, goals, and ideas
A modern, secure, and beautiful Progressive Web App for jotting down notes, tracking goals, and personal knowledge management. Built with React 19, Firebase, and WebAuthn biometric authentication.
Try Curiosity PWA live: https://curiosity-pwa.web.app
- π Rich Text Editing - Create entries with markdown support and rich text editing
- π Calendar View - Visualize your timeline with an interactive calendar
- π― Goals & Tasks - Track personal goals and daily tasks with progress indicators
- π Secure Vault - Store sensitive information with PIN and biometric protection
- π Smart Reminders - Get notified for important dates (requires app to be open)
- π Data Export - Export your data to PDF, JSON, or Markdown
- π On This Day - Revisit memories from past years
- π Search & Filter - Quickly find entries with powerful search
- π¨ Animated Dashboard - Vibrant dashboard with Framer Motion animations
- π Dark Mode - System-aware theme switching
- π¨ 6 Accent Colors - Teal, Blue, Purple, Rose, Amber, Emerald
- π 4 Font Families - Inter, Lora, Merriweather, Roboto Mono
- π± Mobile-First - Optimized for mobile with hamburger navigation
- β¨ Live Preview - See theme changes in real-time during setup
- π Biometric Auth - WebAuthn support for fingerprint/face unlock
- π PIN Lock - Secure PIN-based app protection with configurable timeout
- οΏ½ Local-First - IndexedDB storage for offline-first architecture
- βοΈ Optional Cloud Sync - Firebase sync when you need it
- οΏ½ Secure Encryption - Client-side encryption for sensitive data
- π² Installable - Add to home screen on mobile and desktop
- β‘ Offline Support - Full functionality without internet
- π Auto-Updates - Seamless updates via service worker
- π Fast Loading - Optimized with code splitting and caching
- Node.js 18+ and npm
- Firebase CLI (for deployment)
- Git
# Clone the repository
git clone https://github.com/ny-collins/curiosity-pwa.git
cd curiosity-pwa
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with your Firebase config
# Start development server
npm run devThe app will be available at http://localhost:5173
# Build for production
npm run build
# Preview production build
npm run previewSee the Deployment Guide for detailed instructions on deploying to Firebase, Vercel, or Netlify.
Comprehensive documentation is available in the docs/ folder:
- π Quick Reference - Common commands and tasks
- π οΈ Developer Setup - Development environment setup
- οΏ½ Deployment Guide - Production deployment checklist
- β Production Ready - Production readiness status
- ποΈ Architecture - System design and data models
- π§ API Reference - Technical API documentation
- π§ͺ Testing Guide - Testing strategies
- π± User Guide - Complete feature walkthrough
- π€ Contributing - Contribution guidelines
- π Troubleshooting - Common issues and solutions
- π Changelog - Version history and release notes
- React 19.1.1 - Latest React with modern hooks
- Vite 7.1.7 - Lightning-fast build tool and dev server
- Tailwind CSS 3.4.4 - Utility-first CSS framework
- Framer Motion 12.23.24 - Beautiful animations and transitions
- Lucide React 0.546.0 - Modern icon library
- Dexie 4.0.8 - IndexedDB wrapper for offline storage
- React Calendar - Interactive calendar component
- React Markdown - Markdown rendering
- Firebase 12.4.0 - Backend-as-a-Service platform
- Firestore - NoSQL database with real-time sync
- Cloud Functions - Serverless backend
- Firebase Auth - User authentication (Google OAuth)
- Firebase Hosting - CDN-backed hosting
- Cloud Storage - Secure file storage
- SimpleWebAuthn - WebAuthn biometric authentication
- bcrypt-ts - Secure password hashing
- Vite PWA Plugin - Service worker generation
- Workbox - Advanced caching strategies
- Code Splitting - Optimized bundle sizes
- Service Worker - Offline-first architecture
Curiosity embraces a mobile-first, local-first, privacy-focused approach:
- Beautiful & Vibrant - Animated dashboard with delightful interactions
- Mobile-First - Optimized for mobile with responsive design
- Local-First - Your data stays on your device by default
- Privacy-Focused - PIN lock and biometric authentication
- Customizable - Multiple themes, fonts, and colors
- Accessible - Keyboard navigation and screen reader support
- Fast - Optimized for performance and battery life
curiosity-pwa-vite/
βββ src/
β βββ components/ # React components
β β βββ Dashboard.jsx # Animated dashboard with Framer Motion
β β βββ ModernEditor.jsx # Rich text editor
β β βββ SettingsPage.jsx # Settings and customization
β β βββ CalendarView.jsx # Calendar visualization
β β βββ PinLockScreen.jsx # PIN authentication
β β βββ ... # Other components
β βββ contexts/
β β βββ AppContext.jsx # Global app state
β β βββ StateProvider.jsx # State management
β βββ constants.js # App constants and config
β βββ firebaseConfig.js # Firebase initialization
β βββ db.js # IndexedDB setup (Dexie)
β βββ utils.js # Utility functions
βββ public/
β βββ icons/ # PWA icons
β βββ manifest.json # PWA manifest
βββ functions/ # Firebase Cloud Functions
βββ docs/ # Documentation
βββ firebase.json # Firebase configuration
βββ firestore.rules # Firestore security rules
βββ vite.config.js # Vite configuration
βββ package.json # Dependencies
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- SimpleWebAuthn - WebAuthn implementation
- Lucide - Beautiful icon library
- Framer Motion - Amazing animations
- Tailwind CSS - Utility-first CSS framework
- Firebase - Backend platform
- React - UI library
- Vite - Build tool
- π§ Email: [email protected]
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Documentation: docs/
Made with β€οΈ by Collins β’ Version 1.0.1 β’ November 2025