Modern note-taking application built with Next.js and Supabase
Simple. Secure. Synced.
- Development Setup — local environment and tooling
- Mobile App Guide — React Native mobile app setup and development
- GitHub Actions Pipelines — CI/CD pipelines and running with Act
- GitHub MCP Server Setup — connect Cursor to GitHub via MCP
- Testing Guide — how to run tests locally and in CI
- Architecture Guide — required reading before contributing
- Deployment Guide — deploy to Cloudflare Pages
- Cloudflare Environment Setup — production environment variables
- Google OAuth Setup — configure Google authentication
- Roadmap — product vision and feature plan
- Node.js 18+
- Docker Desktop (for local development)
- Supabase account (for production)
# Install dependencies
npm install
# Start local Supabase stack (PostgreSQL + Auth + API + Studio)
npm run db:start
# Configure environment (use default local keys)
cp .env.local.example .env.local
# Run development server
npm run devSupabase Studio: http://localhost:54323
skip-auth@example.com/<test-password>test@example.com/<test-password>
npm run db:stopSee docs/run_test.md for detailed setup and testing instructions.
Type: Single Page Application (SPA)
Stack: Next.js (static export), React 19, Supabase, Tailwind CSS + shadcn/ui, Cloudflare Pages hosting
Key constraints: no SSR/server actions/API routes; all Supabase access from the client through a shared provider and service layer.
See docs/ARCHITECTURE.md for detailed information.
# Build static export
npm run build
# Output directory: out/Deploy the out/ folder to:
- Cloudflare Pages
- Vercel
- Netlify
- Any static hosting
- Google OAuth authentication
- Create, edit, delete notes
- Tags with interactive chips
- Full-text search with FTS → ILIKE fallback
- Tag-based filtering
- Responsive design
- Secure row-level security (Supabase)
- Evernote ENEX import with HTML sanitization
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keyOptional:
# Use "./" only when building the mobile WebView bundle (file:// assets).
# Leave empty for web deploys so assets load from /_next/.
NEXT_PUBLIC_ASSET_PREFIX=./MIT
Before adding new features, please read docs/ARCHITECTURE.md to understand the architectural principles.