A full-stack Project Management and Collaboration tool built with the T3 stack, designed for team productivity and seamless project management. This application integrates a Next.js frontend with a serverless backend deployed on AWS using SST, and it leverages Supabase for PostgreSQL database management.
- Overview
- Tech Stack
- User Journey
- Features
- Installation & Setup
- Deployment
- CI/CD Pipeline
- Known Issues
WorkNest is a task management and collaboration tool that allows users to:
- Sign up and create their first project.
- Invite teammates and assign different roles.
- Create and manage tasks with deadlines, tags, and statuses.
- Collaborate using a drag-and-drop interface for easy task updates.
- Manage projects with strict access controls ensuring that each projectโs data is isolated and secure.
The app is built using modern technologies, leveraging the T3 stack, and is deployed on AWS via SST, utilizing services like AWS Lambda (Edge functions), S3, CloudFront, and CloudWatch.
- Frontend Framework: Next.js (15 App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- API & Data Layer: tRPC
- ORM: Prisma
- Database: PostgreSQL (via Supabase)
- Authentication: NextAuth with GitHub Provider (JWT strategy)
- Deployment: AWS using SST (Serverless Stack)
- CI/CD: GitHub Actions
-
Signup:
Users sign up using their GitHub account. -
Project Creation:
After registration, users create their first project. -
Collaboration:
Within each project, users can invite teammates and assign roles (e.g., owner, admin, member). -
Task Management:
- Users create tasks with detailed descriptions, deadlines, and tags.
- Tasks can be assigned to specific users.
- Task statuses can be updated manually or via a drag-and-drop interface.
- Only owners/admins have permissions to edit or delete projects or tasks, while members can only view tasks created by or assigned to them.
-
Project Isolation:
Each project is isolated ensuring that tasks and data are accessible only to the relevant team members.
-
Intuitive Task Management:
Create, assign, and track tasks with deadlines and priorities. -
Role-Based Access Control:
Different levels of access (owner, admin, member) to manage tasks and project settings. -
Real-Time Collaboration:
Invite team members, assign roles, and view tasks dynamically. -
Secure Authentication:
Utilize NextAuth with GitHub authentication (JWT) to secure user sessions. -
Serverless Deployment:
Deployed on AWS using SST with underlying services:- AWS Lambda (for Edge functions)
- S3 (for site data)
- CloudFront (for CDN)
- CloudWatch (for logging)
-
Automated CI/CD:
GitHub Actions pipeline for continuous integration and deployment on every code push.
- Node.js (v20 or higher)
- npm
- An AWS Account with proper IAM credentials
- A Supabase Account for PostgreSQL database management
git clone https://github.com/ayusharma-ctrl/WorkNest.git
cd WorkNest
npm install
npm run dev
Before deploying, ensure your AWS credentials are properly configured. Follow the guide here:
๐ Configure AWS IAM Credentials
Once configured, deploy with:
npx sst deploy --stage production
npm create t3-app@latest
- Project Name: AppName
- Language: TypeScript
- Styling: Tailwind CSS
- API: tRPC
- Authentication: NextAuth.js
- ORM: Prisma
- Router: Choose the classic pages or Next.js App Router as required
npm create sst
npm install sst@two --save-exact
- Create an IAM user in your AWS account.
- Generate an Access Key and Secret.
- Follow the SST IAM Credentials Guide to properly configure your environment.
- Create an IAM group, add your user to the group, create a policy for the group, and attach the policy.
npm run deploy
This command is equivalent to running:
sst deploy --stage production
Create a .env file in the root directory with the following keys or follow .env.example file:
AUTH_SECRET=your_secret
NEXTAUTH_URL=your_server_url
DATABASE_URL=your_postgresql_connection_string
AUTH_GITHUB_ID=your_github_client_id
AUTH_GITHUB_SECRET=your_github_client_secret
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
You also need to save these to github repository if you have plans to setup CI/CD using Github Actions.
- SST may have limited support on native Windows environments. It is recommended to use Windows Subsystem for Linux (WSL) if you encounter issues.