Skip to content

Toviarock1/work_nest

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WorkNest

A modern collaborative project management platform built with Next.js, featuring real-time communication, Kanban-style task management, and team collaboration tools.

Next.js TypeScript Tailwind CSS

πŸš€ Features

Project Management

  • Create, view, and delete projects
  • Project dashboard with search and filtering
  • Project member management (add/remove team members)

Task Management

  • 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 Collaboration

  • Real-time chat with Socket.io
  • Instant message delivery
  • File sharing and uploads
  • Live updates across all connected clients

Authentication & Security

  • JWT-based authentication
  • Protected routes with middleware
  • Session management with cookies

πŸ› οΈ Tech Stack

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

πŸ“ Project Structure

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

βš™οΈ Environment Variables

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

🚦 Getting Started

Prerequisites

  • Node.js 18.x or higher
  • npm, yarn, pnpm, or bun

Installation

# 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

Development

# Start the development server
npm run dev

# Open http://localhost:3000 in your browser

Build

# Build for production
npm run build

# Start production server
npm run start

πŸ”Œ API Integration

The frontend expects a backend API running at http://localhost:5050 (or your configured API URL). The API should provide the following endpoints:

Authentication

  • POST /auth/login - User login
  • POST /auth/register - User registration
  • GET /auth/me - Get current user

Projects

  • GET /project - Get user's projects
  • POST /project - Create new project
  • GET /project/:id - Get project details
  • DELETE /project/:id - Delete project
  • GET /project/:id/members - Get project members
  • POST /project/add-member - Add member to project
  • POST /project/remove-member - Remove member from project

Tasks

  • GET /tasks/:projectId - Get project tasks
  • POST /tasks - Create new task
  • PATCH /tasks/:taskId - Update task status
  • DELETE /tasks/:taskId - Delete task

Messages

  • GET /message/:projectId - Get chat history
  • POST /message - Send message

Files

  • GET /file/:projectId - Get project files
  • POST /file/upload - Upload file
  • DELETE /file/:fileId - Delete file

🎨 Customization

Theme Colors

The primary color is configured in the Tailwind CSS. Update app/globals.css to customize the theme.

Adding New Features

  1. Create API service in services/
  2. Add types in types/index.ts
  3. Create components in components/
  4. Add custom hooks in hooks/ if needed
  5. Integrate with React Query in pages

πŸ“„ License

This project is private and proprietary.

πŸ‘€ Author

Built with ❀️ By Simon Adama using Next.js and modern web technologies.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.7%
  • CSS 1.1%
  • JavaScript 0.2%