A modern task management application built with the T3 Stack.
- Task statistics overview with status and priority breakdowns
- Recent activity feed showing task updates and changes
- Project overview with progress tracking
- Upcoming deadlines and overdue task alerts
- Quick actions for creating tasks and projects
- Create, read, update, and delete tasks
- Priority levels: LOW, MEDIUM, HIGH, URGENT
- Status workflow: TODO, IN_PROGRESS, REVIEW, COMPLETED
- Multi-user task assignments
- Due date management with deadline tracking
- Task comments system
- File attachments support
- Subtask management
- Advanced filtering by status, priority, assignments, due dates, and subtasks
- Create and manage projects
- Add team members to projects
- Project ownership and access control
- Task organization within projects
- User authentication with NextAuth.js
- User profiles with bio and image support
- Role-based access: USER and ADMIN roles
- Admin panel for user management
- Dark/Light mode support
- Responsive design
- Modern Tailwind CSS styling
- User avatars with fallback to initials
- Rich text editor for task descriptions
- File upload and preview capabilities
- Next.js 15 - React framework
- TypeScript - Type safety
- tRPC - End-to-end typesafe APIs
- Prisma - Database ORM
- NextAuth.js - Authentication
- Tailwind CSS - Styling
- Supabase - Database and file storage
- SST - AWS deployment platform
- React Query - Data fetching and caching
- TipTap - Rich text editor
- bcryptjs - Password hashing
- Lucide React - Icon library
- next-themes - Theme switching
- Node.js 18+
- A Supabase project
-
Clone the repository
git clone <repository-url> cd task-noir
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envwith your configuration:# Next Auth AUTH_SECRET="your-auth-secret" # Database DATABASE_URL="postgresql://postgres:password@localhost:5432/task-noir" NEXTAUTH_URL="http://localhost:3000" # Supabase NEXT_PUBLIC_SUPABASE_URL="your-supabase-url" NEXT_PUBLIC_SUPABASE_ANON_KEY="your-supabase-anon-key" SUPABASE_SERVICE_ROLE_KEY="your-supabase-service-role-key"
-
Set up the database
# Generate Prisma client npx prisma generate # Run database migrations npx prisma migrate dev # (Optional) View your database npx prisma studio
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
npm run dev- Start development server with Turbonpm run build- Build the applicationnpm run start- Start production servernpm run lint- Run ESLintnpm run lint:fix- Fix ESLint errorsnpm run format:check- Check code formattingnpm run format:write- Format code with Prettiernpm run typecheck- Run TypeScript type checkingnpm run db:generate- Generate Prisma clientnpm run db:migrate- Run Prisma migrationsnpm run db:push- Push schema changes to databasenpm run db:studio- Open Prisma Studionpm run sst:dev- Start SST developmentnpm run sst:deploy- Deploy with SSTnpm run sst:deploy:prod- Deploy to productionnpm run sst:remove- Remove SST deployment
This project uses SST for deployment to AWS.
npm run sst:devnpm run sst:deploy:prod