A modern, real-time collaborative task management application built with Next.js 15, featuring intuitive list organization, team collaboration, and seamless user experience.
- Clerk Integration: Secure user authentication and management
- Protected Routes: Middleware-based route protection
- User Profiles: Integrated user profile management
- List Organization: Create and organize tasks into custom lists
- Task Properties: Add titles, descriptions, priorities (Low/Medium/High), and status tracking
- Progress Tracking: Visual progress indicators with completion percentages
- Task Filtering: Easy task management with status updates (Todo, In Progress, Completed)
-
List Sharing: Share lists with team members via email
-
Permission Management: Granular permissions (View/Edit access)
-
Shared Indicators: Clear visual indicators for shared lists
- Responsive Design: Mobile-first, fully responsive interface
- Clean UI: Modern design with Tailwind CSS
- Interactive Elements: Smooth animations and transitions
- Dark Theme Support: Coming soon
- Pagination: Efficient data loading for large datasets
- Search & Filter: Quick task and list discovery
- Data Persistence: Reliable PostgreSQL database with Prisma ORM
- Type Safety: Full TypeScript support with tRPC
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful icons
- tRPC - End-to-end typesafe APIs
- Prisma - Next-generation ORM
- PostgreSQL - Robust relational database
- Clerk - Complete authentication solution
- TanStack Query - Powerful data synchronization
- Zod - TypeScript-first schema validation
- Node.js (v18 or higher)
- npm or yarn or pnpm
- PostgreSQL database
- Clerk account for authentication
git clone <repository-url>npm install
# or
yarn install
# or
pnpm installCreate a .env.local file in the root directory:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/"
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma db push
# Optional: Seed the database
npx prisma db seednpm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 in your browser.
- Sign Up/Sign In: Create an account or sign in using Clerk authentication
- Create Your First List: Click "Add List" on the dashboard
- Add Tasks: Click into a list and start adding tasks with details
- Collaborate: Share lists with team members using their email addresses
- Create Tasks: Click "Add Task" and fill in details (title, description, priority, status)
- Update Status: Toggle between Todo, In Progress, and Completed
- Set Priority: Assign Low, Medium, or High priority levels
- Edit/Delete: Use the action buttons to modify or remove tasks
- Share Lists: Click the share button and enter collaborator emails
- Set Permissions: Choose between View (read-only) or Edit access
- Monitor Shared Lists: Shared lists are clearly marked with team indicators
src/
βββ app/ # Next.js App Router pages
β βββ (auth)/ # Authentication routes
β βββ api/ # API routes
β βββ dashboard/ # Dashboard pages
β βββ layout.tsx # Root layout
βββ components/ # Reusable UI components
β βββ dashboard/ # Dashboard-specific components
β βββ ui/ # Generic UI components
β βββ providers.tsx # Context providers
βββ hooks/ # Custom React hooks
βββ server/ # tRPC server configuration
β βββ routers/ # API route handlers
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
getAll- Fetch paginated user listsgetById- Get specific list detailscreate- Create new listdelete- Delete list (owner only)
getByListId- Fetch paginated list taskscreate- Create new taskupdate- Update task detailsdelete- Delete tasktoggleComplete- Toggle task completion status
shareList- Share list with usergetSharedUsers- Get list collaboratorsremoveUserFromList- Remove collaborator accessupdatePermission- Update user permissions
- TypeScript: Strict type checking enabled
- ESLint: Code linting with Next.js configuration
- Prettier: Code formatting (recommended)
- Server Components: Used for static content and data fetching
- Client Components: Used for interactive features
- Custom Hooks: Business logic abstraction
- Error Boundaries: Graceful error handling
- Prisma Schema: Centralized data modeling
- Migrations: Version-controlled database changes
- Indexes: Optimized query performance
- Relations: Properly defined foreign keys and cascading
Built with β€οΈ using Next.js and modern web technologies