Skip to content

An enterprise-level task management system with real-time collaboration and OAuth integration.

License

Notifications You must be signed in to change notification settings

slubbles/task-flow

Repository files navigation

🎯 TaskFlow - Modern Task Management Platform

TaskFlow Banner Next.js React TypeScript Node.js PostgreSQL

A production-ready, enterprise-level task management system with real-time collaboration, OAuth integration, and responsive design.

Live Demo β€’ Documentation β€’ Report Bug β€’ Request Feature


🌟 Key Highlights

  • πŸ” Enterprise Authentication - JWT with automatic token refresh, OAuth (GitHub), email verification
  • πŸ“± Fully Responsive - Mobile-first design, works seamlessly on all devices (320px - 4K)
  • ⚑ Modern Stack - Next.js 16, React 19, TypeScript, Tailwind CSS v4
  • 🎨 Beautiful UI - Framer Motion animations, shadcn/ui components, smooth transitions
  • πŸš€ Production Ready - Comprehensive error handling, security best practices, optimized performance
  • πŸ§ͺ Well Tested - Backend tested with Jest & Supertest
  • πŸ“Š Scalable Architecture - Clean code, separation of concerns, RESTful API design

πŸ“Έ Screenshots

Landing Page

Landing Page

Dashboard

Dashboard

Task Management

Tasks

Mobile Responsive

Mobile


πŸ› οΈ Tech Stack

Frontend

Next.js 16.0         β€’ React 19.2         β€’ TypeScript 5
Tailwind CSS v4      β€’ Framer Motion      β€’ shadcn/ui
Zustand              β€’ Axios              β€’ React Hook Form

Backend

Node.js 22           β€’ Express.js 4       β€’ Prisma ORM 5
PostgreSQL 16        β€’ Redis 4            β€’ JWT Auth
Bcrypt               β€’ Passport.js        β€’ Resend (Email)

DevOps & Tools

Docker               β€’ Docker Compose     β€’ GitHub Actions
ESLint               β€’ Prettier           β€’ Jest

✨ Features

πŸ” Authentication & Security

  • JWT-based authentication with 30-day expiration
  • Automatic token refresh (seamless session management)
  • OAuth 2.0 integration (GitHub)
  • Email verification system
  • Password reset with secure tokens
  • Role-based access control (Admin, Manager, Member)
  • Bcrypt password hashing
  • Protected routes & API endpoints
  • CORS configuration
  • Helmet.js security headers

πŸ“Š Project Management

  • Create, read, update, delete projects
  • Project status tracking (Active, Completed, On Hold, Archived)
  • Project ownership & permissions
  • Task count per project
  • Project detail view with all tasks

βœ… Task Management

  • Full CRUD operations for tasks
  • Task status (To Do, In Progress, In Review, Completed)
  • Priority levels (Low, Medium, High, Urgent)
  • Task assignment to team members
  • Due date tracking
  • Advanced filtering (status, priority, assignee, project)
  • Real-time search functionality
  • Task detail modal with all information

πŸ‘€ User Management

  • User profile management
  • Avatar support
  • Password change functionality
  • Email management
  • Activity tracking
  • Role management

🎨 UI/UX Features

  • Fully responsive design (mobile-first)
  • Dark/light mode support
  • Smooth Framer Motion animations
  • Toast notifications (success, error, info)
  • Loading states & skeletons
  • Empty states with call-to-actions
  • Mobile hamburger menu
  • Touch-friendly interface
  • Accessible components (ARIA labels)

πŸš€ Getting Started

Prerequisites

  • Node.js 22.x or higher
  • PostgreSQL 16.x
  • npm or yarn package manager
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/slubbles/task-flow.git
    cd task-flow
  2. Install dependencies

    # Install root dependencies
    npm install
    
    # Install backend dependencies
    cd backend
    npm install
    
    # Install frontend dependencies
    cd ../frontend
    npm install
  3. Set up environment variables

    Backend (.env)

    # Database
    DATABASE_URL="postgresql://user:password@localhost:5432/taskflow"
    
    # JWT
    JWT_SECRET="your-super-secret-jwt-key-change-this"
    JWT_EXPIRES_IN="30d"
    
    # Email (Resend)
    RESEND_API_KEY="your-resend-api-key"
    EMAIL_FROM="onboarding@yourdomain.com"
    
    # OAuth GitHub
    GITHUB_CLIENT_ID="your-github-client-id"
    GITHUB_CLIENT_SECRET="your-github-client-secret"
    GITHUB_CALLBACK_URL="http://localhost:3001/api/auth/callback/github"
    
    # App URLs
    FRONTEND_URL="http://localhost:3000"
    BACKEND_URL="http://localhost:3001"
    
    # Redis (Optional)
    REDIS_URL="redis://localhost:6379"

    Frontend (.env.local)

    NEXT_PUBLIC_API_URL=http://localhost:3001/api
  4. Set up the database

    cd backend
    npx prisma migrate dev
    npx prisma generate
  5. Run the application

    Using Docker (Recommended)

    docker-compose up

    Or run manually

    # Terminal 1 - Backend
    cd backend
    npm run dev
    
    # Terminal 2 - Frontend
    cd frontend
    npm run dev
  6. Access the application


πŸ“ Project Structure

task-flow/
β”œβ”€β”€ backend/                    # Express.js Backend
β”‚   β”œβ”€β”€ prisma/
β”‚   β”‚   β”œβ”€β”€ schema.prisma      # Database schema
β”‚   β”‚   └── migrations/        # Database migrations
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/            # Configuration files
β”‚   β”‚   β”œβ”€β”€ controllers/       # Route controllers
β”‚   β”‚   β”œβ”€β”€ middleware/        # Custom middleware
β”‚   β”‚   β”œβ”€β”€ routes/            # API routes
β”‚   β”‚   β”œβ”€β”€ services/          # Business logic
β”‚   β”‚   β”œβ”€β”€ utils/             # Utility functions
β”‚   β”‚   └── server.js          # Entry point
β”‚   └── tests/                 # Backend tests
β”‚
β”œβ”€β”€ frontend/                   # Next.js Frontend
β”‚   β”œβ”€β”€ app/                   # App Router pages
β”‚   β”‚   β”œβ”€β”€ (auth)/           # Auth pages
β”‚   β”‚   β”œβ”€β”€ dashboard/        # Dashboard
β”‚   β”‚   β”œβ”€β”€ projects/         # Projects management
β”‚   β”‚   β”œβ”€β”€ tasks/            # Tasks management
β”‚   β”‚   └── profile/          # User profile
β”‚   β”œβ”€β”€ components/            # React components
β”‚   β”‚   β”œβ”€β”€ ui/               # shadcn/ui components
β”‚   β”‚   └── *.tsx             # Custom components
β”‚   β”œβ”€β”€ lib/                   # Utilities
β”‚   β”‚   └── api/              # API client
β”‚   β”œβ”€β”€ store/                 # Zustand stores
β”‚   └── types/                 # TypeScript types
β”‚
β”œβ”€β”€ docs/                       # Documentation
β”œβ”€β”€ docker-compose.yml         # Docker configuration
└── README.md                  # This file

πŸ”Œ API Documentation

Authentication Endpoints

POST   /api/auth/register          # Register new user
POST   /api/auth/login             # Login user
POST   /api/auth/refresh           # Refresh JWT token
POST   /api/auth/logout            # Logout user
POST   /api/auth/verify-email      # Verify email address
POST   /api/auth/forgot-password   # Request password reset
POST   /api/auth/reset-password    # Reset password
PUT    /api/auth/change-password   # Change password
PUT    /api/auth/profile           # Update profile

OAuth Endpoints

GET    /api/oauth/github           # GitHub OAuth login
GET    /api/auth/callback/github   # GitHub OAuth callback

Project Endpoints

GET    /api/projects               # Get all projects
GET    /api/projects/:id           # Get project by ID
POST   /api/projects               # Create new project
PUT    /api/projects/:id           # Update project
DELETE /api/projects/:id           # Delete project

Task Endpoints

GET    /api/tasks                  # Get all tasks (with filters)
GET    /api/tasks/:id              # Get task by ID
POST   /api/tasks                  # Create new task
PUT    /api/tasks/:id              # Update task
DELETE /api/tasks/:id              # Delete task

User Endpoints

GET    /api/users                  # Get all users

πŸ“– Full API documentation: See API.md


πŸ§ͺ Testing

# Backend tests
cd backend
npm test

# Frontend tests
cd frontend
npm test

# E2E tests
npm run test:e2e

πŸš€ Deployment

Backend (Railway/Render)

  1. Create a new project
  2. Connect your GitHub repository
  3. Add environment variables
  4. Deploy

Frontend (Vercel)

  1. Import your GitHub repository
  2. Select Next.js framework
  3. Add environment variables
  4. Deploy

Detailed deployment guide: See DEPLOYMENT.md


🀝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is MIT licensed.


πŸ‘¨β€πŸ’» Author

Idderf Salem


πŸ™ Acknowledgments


⭐ Star this repository if you find it helpful!

Made with ❀️ by Idderf Salem

⬆ Back to Top

About

An enterprise-level task management system with real-time collaboration and OAuth integration.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published