A modern, full-stack project management application built with Next.js and Express, designed to streamline team collaboration and task management.
- π Project Management - Create, organize, and track projects with ease
- β Task Tracking - Comprehensive task management with priorities, statuses, and assignments
- π₯ Team Collaboration - Manage teams, assign roles, and coordinate work
- π Advanced Search - Quickly find projects, tasks, and team members
- π Timeline View - Visualize project timelines and deadlines
- π¬ Comments & Attachments - Collaborate with comments and file attachments
- π± Responsive Design - Beautiful UI that works on all devices
- π¨ Modern UI - Built with Material-UI, Tailwind CSS, and Framer Motion
- Framework: Next.js 16 (React 19)
- Language: TypeScript
- Styling: Tailwind CSS, Material-UI, Styled Components
- State Management: Redux Toolkit with Redux Persist
- UI Components:
- Material-UI (MUI) for data grids and core components
- Lucide React for icons
- Recharts for data visualization
- Framer Motion for animations
- Additional Libraries:
- React DnD for drag-and-drop functionality
- Gantt Task React for project timeline visualization
- React Scroll Parallax for smooth scrolling effects
- Framework: Express.js
- Language: TypeScript
- Database: PostgreSQL
- ORM: Prisma
- Security: Helmet, CORS
- Logging: Morgan
- Development: Nodemon, tsx for hot reloading
Milestone/
βββ client/ # Next.js frontend application
β βββ app/ # Next.js app directory
β β βββ (components)/ # Shared components
β β βββ home/ # Home page
β β βββ projects/ # Projects management
β β βββ priority/ # Priority view
β β βββ timeline/ # Timeline view
β β βββ teams/ # Team management
β β βββ users/ # User management
β β βββ search/ # Search functionality
β β βββ settings/ # Settings page
β βββ components/ # Reusable components
β βββ state/ # Redux state management
β βββ lib/ # Utility functions
β βββ public/ # Static assets
β
βββ server/ # Express backend application
βββ src/
β βββ routes/ # API routes
β β βββ projectRoutes.ts
β β βββ taskRoutes.ts
β β βββ userRoutes.ts
β β βββ teamsRoutes.ts
β β βββ searchRoutes.ts
β βββ index.ts # Server entry point
βββ prisma/
β βββ schema.prisma # Database schema
β βββ seed.ts # Database seeding
βββ lib/ # Utility functions
The application uses Prisma ORM with PostgreSQL and includes the following models:
- User - User accounts with profile information
- Team - Team organization with product owners and project managers
- Project - Projects with descriptions and timelines
- Task - Tasks with priorities, statuses, and assignments
- ProjectTeam - Many-to-many relationship between projects and teams
- TaskAssignment - Task assignments to users
- Comment - Task comments
- Attachment - File attachments for tasks
- Node.js 20+
- PostgreSQL database
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd Milestone
-
Install dependencies
For the client:
cd client npm installFor the server:
cd server npm install -
Set up environment variables
Create a
.envfile in theserverdirectory:DATABASE_URL="postgresql://user:password@localhost:5432/Milestone" PORT=8000
Create a
.env.localfile in theclientdirectory:NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_...
-
Set up the database
cd server npx prisma generate npx prisma migrate dev npm run seed # Optional: seed with sample data
-
Start the backend server
cd server npm run devThe server will run on
http://localhost:8000 -
Start the frontend application
cd client npm run devThe application will run on
http://localhost:3000 -
Open your browser Navigate to
http://localhost:3000to see the application
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
npm run dev- Start development server with hot reloadnpm run build- Compile TypeScript to JavaScriptnpm start- Start production servernpm run seed- Seed the database with sample data
The backend provides the following API routes:
/projects- Project management endpoints/tasks- Task management endpoints/users- User management endpoints/teams- Team management endpoints/search- Search functionality endpoints
- Responsive Dashboard - Adaptive layout for all screen sizes
- Data Grids - Powerful data tables with sorting and filtering
- Gantt Charts - Visual project timeline representation
- Drag & Drop - Intuitive task organization
- Dark Mode Support - Eye-friendly dark theme
- Smooth Animations - Polished user experience with Framer Motion
- Helmet.js - Secure HTTP headers
- CORS - Cross-origin resource sharing configuration
- Input Validation - Request validation and sanitization
The Next.js application can be easily deployed to Vercel:
cd client
vercelThe Express server can be deployed to any Node.js hosting platform:
cd server
npm run build
npm startMake sure to:
- Set up environment variables on your hosting platform
- Configure PostgreSQL database
- Update CORS settings for production domains
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
Pratik Patil
- Next.js team for the amazing framework
- Prisma team for the excellent ORM
- Material-UI for beautiful components
- All open-source contributors
Built with β€οΈ using Next.js and Express