A modern, full-stack Progressive Web Application (PWA) todo list built with React, TypeScript, Vite, Tailwind CSS, and Neon PostgreSQL. Features complete user authentication, category management, cross-device synchronization, and mobile-optimized responsive design.
- โ Modern Stack: Built with React 19, TypeScript, and Vite
- ๐จ Beautiful UI: Styled with Tailwind CSS with mobile-first responsive design
- ๐ฑ Progressive Web App: Installable on all devices with offline support
- ๐ User Authentication: Secure login/signup with JWT tokens and database persistence
- ๐๏ธ Neon Database: PostgreSQL cloud database for cross-device synchronization
- ๐ท๏ธ Category Management: Create, edit, and delete custom todo categories
- ๐ Priority Levels: Organize todos with Low, Medium, High priority indicators
- ๐ Due Dates: Set and track due dates with overdue indicators and calendar integration
- ๐ Advanced Filtering: Filter by status, priority, category, due date, and search functionality
- ๏ฟฝ Offline Support: Service worker caching for offline functionality
- ๐ Real-time Sync: Automatic synchronization across devices and browsers
- ๏ฟฝ Mobile Optimized: Touch-friendly interface with proper viewport handling
- ๐ฏ Intuitive UX: Clean, modern interface with smooth animations and micro-interactions
- Frontend: React 19, TypeScript, Vite
- Backend: Neon PostgreSQL (Serverless)
- Styling: Tailwind CSS
- Icons: Heroicons
- Forms: React Hook Form with Zod validation
- Authentication: Custom JWT implementation with secure token handling
- PWA: Vite PWA plugin with Workbox service worker
- Storage: Neon Database + localStorage fallback
- Deployment: Netlify with automatic builds
- CI/CD: Netlify Build with environment variables
- Clone the repository:
git clone <your-repo-url>
cd todolist- Install dependencies:
npm install- Create environment file:
cp .env.example .env- Start the development server:
npm run devnpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
๐ Live Application: https://legendary-pithivier-da3424.netlify.app
This project is configured with netlify.toml for automatic deployments.
- Push your code to GitHub
- Connect your repository to Netlify
- Netlify will automatically:
- Install dependencies
- Build the project
- Deploy to production
- Set up PWA features
The following environment variables are configured in Netlify:
VITE_DATABASE_URL=postgresql://[user]:[password]@[host]/[database]
VITE_JWT_SECRET=your-secure-jwt-secret-key-here
VITE_APP_NAME=Advanced Todo List# Build and deploy
npm run build
netlify deploy --prod --dir=distsrc/
โโโ components/ # Reusable UI components
โ โโโ CategoryManager.tsx # Category CRUD management
โ โโโ Header.tsx # Main navigation header
โ โโโ InstallButton.tsx # PWA install prompt
โ โโโ LoginForm.tsx # User login form
โ โโโ SignupForm.tsx # User registration form
โ โโโ TodoFilters.tsx # Advanced filtering system
โ โโโ TodoForm.tsx # Add/edit todo modal
โ โโโ TodoItem.tsx # Individual todo item
โโโ contexts/ # React Context providers
โ โโโ AuthContext.tsx # Authentication state management
โโโ hooks/ # Custom React hooks
โ โโโ useCategories.ts # Category management
โ โโโ useTodos.ts # Todo CRUD operations
โโโ lib/ # Utility functions and services
โ โโโ auth.ts # Authentication utilities
โ โโโ authApi.ts # Authentication API layer
โ โโโ authDatabase.ts # User database operations
โ โโโ authLocal.ts # Local authentication fallback
โ โโโ categoryDatabase.ts # Category database operations
โ โโโ database.ts # Neon database client
โ โโโ todoDatabase.ts # Todo database operations
โ โโโ utils.ts # Helper utilities
โโโ pages/ # Page components
โ โโโ AuthPage.tsx # Login/signup page
โ โโโ Dashboard.tsx # Main todo dashboard
โโโ types/ # TypeScript type definitions
โ โโโ index.ts # App-wide types
โโโ App.tsx # Root component with routing
โโโ main.tsx # App entry point with PWA
โโโ index.css # Global styles with mobile optimizations
- Create Account: Sign up with email and password
- Login: Use your credentials to access your todos
- Install PWA: Click the install button to add to your home screen
- Add Todo: Click "Add Todo" button to create new tasks
- Set Priority: Choose Low, Medium, or High priority levels
- Assign Category: Select or create custom categories
- Set Due Date: Add deadlines with calendar picker
- Edit Todo: Click edit icon to modify existing todos
- Complete Todo: Check the box to mark as completed
- Delete Todo: Use trash icon to permanently remove
- Search: Use search bar for title/description lookup
- Filter by Status: All, Active, or Completed todos
- Filter by Priority: Filter by Low, Medium, High priority
- Filter by Category: Show todos from specific categories
- Filter by Due Date: Today, This Week, Overdue options
- Manage Categories: Create, edit, and delete categories
- Cross-Device: Login from any device to access your todos
- Offline Support: App works offline, syncs when reconnected
- Real-time Updates: Refresh button syncs latest changes
- ๐ฅ Collaboration and sharing features
- ๐ Push notifications for due dates
- ๐ Dark mode toggle
- ๐ Advanced analytics and insights
- ๐ท๏ธ Tag system beyond categories
- ๐ฑ Native mobile apps
- ๐ Recurring todos
- ๐ File attachments
- โฐ Time tracking
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Installable: Add to home screen on any device
- Offline Support: Works without internet connection
- Service Worker: Caches app resources for fast loading
- Responsive: Optimized for desktop, tablet, and mobile
- App-like Experience: Full-screen mode with native feel
CREATE TABLE users (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);CREATE TABLE categories (
id TEXT PRIMARY KEY,
user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
color TEXT DEFAULT '#3B82F6',
created_at TIMESTAMPTZ DEFAULT NOW()
);CREATE TABLE todos (
id TEXT PRIMARY KEY,
user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
title TEXT NOT NULL,
description TEXT,
completed BOOLEAN DEFAULT false,
priority TEXT CHECK (priority IN ('low', 'medium', 'high')),
category TEXT DEFAULT 'General',
due_date TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);- Build Size: ~580KB (gzipped: ~178KB)
- Lighthouse Score: 95+ Performance, 100 Accessibility
- Mobile Optimized: Touch-friendly 44px minimum touch targets
- Fast Loading: Service worker caching and code splitting
- Database: Neon serverless PostgreSQL with connection pooling
This project is licensed under the MIT License - see the LICENSE file for details.
- React - UI library
- Vite - Build tool
- Tailwind CSS - Styling
- Neon - Serverless PostgreSQL
- Netlify - Hosting and deployment
- Heroicons - Beautiful icons
Built with โค๏ธ using React 19, TypeScript, Tailwind CSS, and Neon PostgreSQL