A modern, full-featured Todo List application built with Next.js 16, TypeScript, PostgreSQL, and Prisma. Features include todo lists, task management, filtering, dark mode, offline support, and productivity tracking.
You can view tasq in action here
Each user gets a unique session ID stored in localStorage, ensuring their todos remain private without requiring authentication.
The app includes a service worker and offline API fallback to ensure functionality even without an internet connection.
Using TanStack Query's optimistic update pattern, UI changes appear instantly before server confirmation, with automatic rollback on errors.
Filter todos by:
- Priority: urgent, high, medium, low
- Status: all, completed, pending
- List: filter by specific todo list
Seamless dark mode toggle using next-themes with system preference detection and persistent user preference.
For detailed information about the project structure, component organization, and data flow, see ARCHITECTURE.md.
Quick Overview:
- Frontend: Next.js 16 with App Router, React Server Components
- State Management: TanStack Query for server state, React Context for UI state
- Database: PostgreSQL with Prisma ORM
- Offline Support: Service Worker with IndexedDB fallback
- Styling: Tailwind CSS 4 with ShadCN UI components
- Node.js 18+ installed
- PostgreSQL database (local or cloud like Render)
- npm or yarn package manager
git clone https://github.com/kachi33/tasq.git
cd kachi-todonpm installCreate a .env file in the root directory:
# Database
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public"Run Prisma migrations to create the database tables:
# Generate Prisma Client
npx prisma generate
# Apply migrations to your database
npx prisma migrate deploy
# Or push schema directly (development)
npx prisma db pushnpm run devOpen http://localhost:3000 in your browser.
- User registration and login
- Multi-device sync
- Task categories and tags
- File attachments
- Task sharing and collaboration
- Calendar view
- Kanban board view
- Productivity trends and insights
- Internationalization (i18n)
- Email and push notifications
All contributions are Welcome! Whether it's bug fixes, new features, or documentation improvements, your help is appreciated.
Quick Start:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test and build locally
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For detailed contribution guidelines, development setup, and code standards, see CONTRIBUTING.md.
- Maintain full TypeScript compatibility
- Follow existing code patterns
- Ensure components are accessible (WCAG compliant)
- Test on multiple screen sizes
- Add proper type definitions
This project is open source and available under the MIT License.
Kachi
- GitHub: @kachi33
Built by Kachi
