A modern collaborative project management platform built with Next.js, featuring real-time communication, Kanban-style task management, and team collaboration tools.
- Create, view, and delete projects
- Project dashboard with search and filtering
- Project member management (add/remove team members)
- Kanban board with drag-and-drop functionality
- Three columns: To Do, In Progress, Done
- Create, view, and update task status
- Task details view
- Real-time chat with Socket.io
- Instant message delivery
- File sharing and uploads
- Live updates across all connected clients
- JWT-based authentication
- Protected routes with middleware
- Session management with cookies
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS + DaisyUI |
| State Management | Zustand |
| Server State | TanStack React Query |
| Real-time | Socket.io Client |
| Forms | React Hook Form |
| Validation | Zod |
| Icons | Lucide React |
| Drag & Drop | @hello-pangea/dnd |
work_nest/
βββ app/ # Next.js App Router
β βββ (auth)/ # Auth routes (login, register)
β β βββ login/
β β βββ register/
β βββ dashboard/ # Protected dashboard routes
β β βββ project/
β β β βββ [projectId]/
β β βββ settings/
β βββ globals.css
β βββ layout.tsx
β βββ page.tsx
βββ components/ # React components
β βββ auth/ # Auth guards
β βββ file/ # File management
β βββ project/ # Project-related components
β βββ skeleton/ # Loading skeletons
β βββ socketProvider/ # Socket context
β βββ task/ # Task management
βββ hooks/ # Custom React hooks
β βββ useAuth.ts
β βββ useChatSocket.ts
β βββ useProject.ts
β βββ useProjectSocket.ts
β βββ useUser.ts
βββ lib/ # Libraries & utilities
β βββ api.ts
β βββ auth.ts
β βββ axiosInstance.ts
β βββ env.ts
β βββ socket.ts
βββ services/ # API services
β βββ auth.service.ts
β βββ file.service.ts
β βββ message.service.ts
β βββ project.service.ts
β βββ task.service.ts
β βββ user.service.ts
βββ store/ # Zustand stores
β βββ useAuthStore.ts
βββ types/ # TypeScript types
β βββ index.ts
βββ utils/ # Utility functions
βββ fonts.ts
βββ formatData.ts
βββ helpers.ts
Create a .env.local file in the root directory:
NEXT_PUBLIC_API_URL=http://localhost:5050
NEXT_PUBLIC_SOCKET_URL=http://localhost:5050
NODE_ENV=development- Node.js 18.x or higher
- npm, yarn, pnpm, or bun
# Clone the repository
git clone <repository-url>
# Navigate to the project directory
cd work_nest
# Install dependencies
npm install
# or
yarn install
# or
pnpm install
# or
bun install# Start the development server
npm run dev
# Open http://localhost:3000 in your browser# Build for production
npm run build
# Start production server
npm run startThe frontend expects a backend API running at http://localhost:5050 (or your configured API URL). The API should provide the following endpoints:
POST /auth/login- User loginPOST /auth/register- User registrationGET /auth/me- Get current user
GET /project- Get user's projectsPOST /project- Create new projectGET /project/:id- Get project detailsDELETE /project/:id- Delete projectGET /project/:id/members- Get project membersPOST /project/add-member- Add member to projectPOST /project/remove-member- Remove member from project
GET /tasks/:projectId- Get project tasksPOST /tasks- Create new taskPATCH /tasks/:taskId- Update task statusDELETE /tasks/:taskId- Delete task
GET /message/:projectId- Get chat historyPOST /message- Send message
GET /file/:projectId- Get project filesPOST /file/upload- Upload fileDELETE /file/:fileId- Delete file
The primary color is configured in the Tailwind CSS. Update app/globals.css to customize the theme.
- Create API service in
services/ - Add types in
types/index.ts - Create components in
components/ - Add custom hooks in
hooks/if needed - Integrate with React Query in pages
This project is private and proprietary.
Built with β€οΈ By Simon Adama using Next.js and modern web technologies.