A modern, full-stack note application built with TypeScript, Next.js, and Supabase PostgreSQL. This app allows users to create, edit, and manage notes with rich text formatting. It also supports offline functionality, enabling users to work without an internet connection.
This project is a great example of using modern web technologies to build a feature-rich application.
- 🔐 Authentication: Secure user authentication with Supabase Auth
- 📝 Rich Text Editing: WYSIWYG editor for creating and editing notes
- 🔄 Offline Support: Work offline and sync when back online
- 📱 PWA: Progressive Web App capabilities for mobile use
- 📤 Export: Export notes to PDF and Markdown formats
- 🌓 Dark Mode: Toggle between light and dark themes
- Frontend: Next.js 14 with App Router
- Language: TypeScript
- Database: Supabase PostgreSQL
- Authentication: Supabase Auth
- Styling: Tailwind CSS with shadcn/ui components
- Rich Text Editor: Tiptap
- Offline Storage: IndexedDB
- PDF Export: jsPDF
- Node.js 18+ and npm
- Supabase account
- Clone the repository
- Install dependencies: ```bash npm install ```
- Set up environment variables in
.env: ``` NEXT_PUBLIC_SUPABASE_URL=your-supabase-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key ``` - Run the development server: ```bash npm run dev ```
The application uses a simple database schema:
- notes: Stores user notes with rich text content
id: UUID (primary key)user_id: UUID (foreign key to auth.users)title: Textcontent: JSONB (stores rich text content)created_at: Timestampupdated_at: Timestampis_archived: Booleanis_pinned: Booleantags: Text array
The application implements offline support using:
- Service Worker: For caching static assets and pages
- IndexedDB: For storing notes locally when offline
When the user comes back online, the application automatically syncs any pending changes with the Supabase backend. This ensures a seamless experience even with intermittent connectivity.
You can deploy this application to Vercel with a few clicks:
- Push your code to a GitHub repository
- Connect your repository to Vercel
- Set up the required environment variables
- Deploy!
MIT