Velocity is a production-grade project management application designed for remote collaboration. It features user authentication, role-based access control, dynamic UI components, and full AWS cloud deployment.
- User Authentication: Secure login and registration with AWS Cognito
- Project Management: Create, update, and track projects with multiple views
- Task Tracking: Manage tasks with priorities, statuses, and assignments
- Team Collaboration: Organize users into teams with specific roles
- Multiple Views: Board, List, Table, and Timeline views for projects
- Role-Based Access: Different permissions for admins and standard users
- Responsive Design: Works seamlessly across desktop and mobile devices
Layer | Technology | Purpose |
---|---|---|
Frontend | Next.js + Tailwind CSS | UI components, routing, responsive styling |
Backend | Node.js + Express + Prisma ORM | Server logic, API integration, DB access |
Database | PostgreSQL via AWS RDS | Storing user data, tasks, and project info |
Authentication | AWS Cognito | Secure login, user pools, token validation |
Hosting | AWS EC2 | Hosting the backend Node server |
State Management | Redux | Client-side state management |
Process Management | PM2 | Node.js process management in production |
velocity/
├── client/ # Frontend Next.js application
│ ├── public/ # Static assets
│ └── src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # Reusable UI components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions
│ └── state/ # Redux state management
│
└── server/ # Backend Node.js application
├── prisma/ # Database schema and migrations
│ ├── migrations/ # Database migration files
│ └── schema.prisma # Prisma schema definition
└── src/
├── controllers/ # API controllers
├── routes/ # API route definitions
└── index.ts # Server entry point
- Node.js (v16+)
- npm or yarn
- PostgreSQL database
- AWS account (for Cognito and RDS)
-
Navigate to the client directory:
cd client
-
Install dependencies:
npm install
-
Create a
.env.local
file with the following variables:NEXT_PUBLIC_API_URL=http://localhost:3000 NEXT_PUBLIC_COGNITO_USER_POOL_ID=your-cognito-user-pool-id NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=your-cognito-client-id
-
Start the development server:
npm run dev
-
Navigate to the server directory:
cd server
-
Install dependencies:
npm install
-
Create a
.env
file with the following variables:PORT=3000 DATABASE_URL=postgresql://username:password@localhost:5432/velocity
-
Run database migrations:
npx prisma migrate dev
-
Seed the database (optional):
npx prisma db seed
-
Start the development server:
npm run dev
- Create a PostgreSQL RDS instance in AWS
- Configure security groups to allow access from your EC2 instance
- Update your server's
.env
file with the RDS connection string
- Create a User Pool in AWS Cognito
- Configure app client settings
- Update your client's
.env.local
file with Cognito credentials
- Launch an EC2 instance with Amazon Linux 2
- Follow the deployment instructions in
server/aws-ec2-instructions.md
- Configure security groups to allow HTTP/HTTPS traffic
The application uses the following core entities:
- User: Application users with authentication details
- Team: Groups of users working together
- Project: Container for tasks with metadata
- Task: Individual work items with status, priority, and assignments
- Comment: User comments on tasks
- Attachment: Files attached to tasks
- JWT-based authentication with AWS Cognito
- Secure password handling
- HTTPS for all communications
- Environment variables for sensitive information
- Cross-Origin Resource Policy implementation
Built with ❤️ using Next.js, Node.js, and AWS