Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

XORO – eXperience-Oriented Workflow Organizer

Screenshot 2026-01-01 180752 Screenshot 2026-01-01 163630 Screenshot 2026-01-01 142146 Screenshot 2026-01-01 142135

XORO is a premium, feature-rich Kanban-style task management application built with React, Node.js, Express, and PostgreSQL. This application delivers an exceptional user experience with professional-grade features including dark mode, real-time search, focus mode, keyboard shortcuts, and advanced responsive design. XORO demonstrates modern frontend development capabilities with SaaS-level UI/UX polish.

πŸš€ Tech Stack

Frontend

  • React 18 - Modern UI library with hooks
  • Vite - Lightning-fast build tool and dev server
  • Tailwind CSS - Utility-first CSS framework with dark mode
  • @dnd-kit - Modern drag & drop library with accessibility
  • react-hot-toast - Beautiful toast notifications
  • Axios - HTTP client with interceptors
  • Lucide React - Professional icon library

Backend

  • Node.js - Runtime environment
  • Express.js - Web framework
  • Prisma - ORM for database management
  • PostgreSQL - Relational database
  • Zod - Schema validation

🌟 Premium Features

🎯 Core Task Management

  • βœ… Create, update, and delete tasks with inline editing
  • βœ… Drag & drop tasks between columns with smooth animations
  • βœ… Task descriptions (optional) with character limits
  • βœ… Three status columns: Todo, In Progress, Done
  • βœ… Optimistic UI updates for instant feedback
  • βœ… Data persistence with PostgreSQL backend

🎨 Advanced UI/UX

  • βœ… Dark Mode Toggle with localStorage persistence
  • βœ… Real-time Search & Filter across task titles and descriptions
  • βœ… Focus Mode - Hide Done column for productivity
  • βœ… Sorting Options - By creation date, last updated, or default
  • βœ… Column Task Counters with animated indicators
  • βœ… Skeleton Loaders with shimmer animation
  • βœ… Hover Effects & Smooth Animations throughout
  • βœ… Professional Toast Notifications for all actions
  • βœ… Custom Logo & Favicon with brand consistency

⌨️ Productivity Features

  • βœ… Keyboard Shortcuts:
    • Ctrl+K / Cmd+K - Open search
    • Ctrl+N / Cmd+N - New task
    • Enter - Save/Submit
    • Esc - Close/Cancel
  • βœ… Inline Task Editing - Click title to edit
  • βœ… Auto-focus Management for better workflow
  • βœ… Responsive Design - Mobile-first approach

πŸ“± Mobile Experience

  • βœ… Fully Responsive Header with hamburger menu
  • βœ… Touch-Friendly Interface with proper tap targets
  • βœ… Mobile-Optimized Search with compact layout
  • βœ… Adaptive Layout for all screen sizes
  • βœ… Professional Mobile Menu with slide-in animation

πŸ”§ Technical Excellence

  • βœ… Error Handling with user-friendly messages
  • βœ… Loading States with skeleton loaders
  • βœ… Accessibility Features with ARIA labels
  • βœ… Performance Optimizations with lazy loading
  • βœ… Clean Code Architecture with separation of concerns
  • βœ… Environment Configuration for production deployment

🎨 Visual Polish

  • βœ… Modern Design System with consistent spacing
  • βœ… Smooth Transitions and micro-interactions
  • βœ… Status Color Indicators for visual hierarchy
  • βœ… Professional Typography and text hierarchy
  • βœ… Glass Morphism Effects with backdrop blur
  • βœ… Custom Animations with CSS keyframes

πŸ› οΈ Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v18 or higher)
  • PostgreSQL (v14 or higher)
  • npm or yarn

πŸ“¦ Installation & Setup

Quick Start (Windows)

  1. Install dependencies:

    # Backend
    cd backend
    npm install
    
    # Frontend
    cd ../frontend
    npm install
  2. Setup database:

    • Create a PostgreSQL database named kanban_db
    • Update backend/.env with your database connection string
  3. Run migrations:

    cd backend
    npx prisma generate
    npx prisma migrate dev --name init
  4. Start all services:

    # From project root
    start.bat

    This will open separate windows for backend and frontend servers.

Manual Setup

1. Clone the Repository

git clone <repository-url>
cd "XORO - Kanban Task Manager"

2. Database Setup

  1. Create a PostgreSQL database:
CREATE DATABASE kanban_db;
  1. Update the database connection string in backend/.env:
DATABASE_URL="postgresql://username:password@localhost:5432/kanban_db?schema=public"

3. Backend Setup

cd backend
npm install
npx prisma generate
npx prisma migrate dev --name init
npm run dev

The backend server will run on http://localhost:3001

4. Frontend Setup

Open a new terminal:

cd frontend
npm install
npm run dev

The frontend will run on http://localhost:5173

🎯 Usage

  1. Create a Task: Click the "New Task" button in the header
  2. Edit a Task: Click the edit icon on a task card or click the task title
  3. Move a Task: Drag and drop a task card to a different column
  4. Delete a Task: Click the delete icon on a task card

πŸ“ Project Structure

XORO - Kanban Task Manager/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”‚   └── database.js          # Prisma client configuration
β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   └── taskController.js   # Task CRUD operations
β”‚   β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”‚   β”œβ”€β”€ errorHandler.js     # Centralized error handling
β”‚   β”‚   β”‚   └── notFound.js         # 404 handler
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   └── taskRoutes.js       # API route definitions
β”‚   β”‚   β”œβ”€β”€ validators/
β”‚   β”‚   β”‚   └── taskValidator.js    # Zod validation schemas
β”‚   β”‚   └── server.js               # Express server setup
β”‚   β”œβ”€β”€ prisma/
β”‚   β”‚   └── schema.prisma           # Database schema
β”‚   └── package.json
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ AddTaskModal.jsx    # Task creation modal
β”‚   β”‚   β”‚   β”œβ”€β”€ ErrorBoundary.jsx   # Error boundary component
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.jsx          # App header
β”‚   β”‚   β”‚   β”œβ”€β”€ KanbanColumn.jsx    # Column component
β”‚   β”‚   β”‚   β”œβ”€β”€ SkeletonLoader.jsx  # Loading skeleton
β”‚   β”‚   β”‚   └── TaskCard.jsx        # Individual task card
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── api.js              # API service layer
β”‚   β”‚   β”œβ”€β”€ App.jsx                 # Main app component
β”‚   β”‚   β”œβ”€β”€ main.jsx                # React entry point
β”‚   β”‚   └── index.css               # Global styles
β”‚   └── package.json
β”œβ”€β”€ start.bat                        # Windows startup script
β”œβ”€β”€ start.sh                         # Linux/Mac startup script
└── README.md

πŸ”Œ API Endpoints

Tasks

  • GET /api/tasks - Get all tasks
  • GET /api/tasks/:id - Get task by ID
  • POST /api/tasks - Create a new task
  • PUT /api/tasks/:id - Update a task
  • DELETE /api/tasks/:id - Delete a task

Request/Response Examples

Create Task:

POST /api/tasks
{
  "title": "Complete project documentation",
  "description": "Write comprehensive README",
  "status": "TODO"
}

Update Task:

PUT /api/tasks/:id
{
  "title": "Updated title",
  "status": "IN_PROGRESS"
}

πŸ—„οΈ Database Schema

model Task {
  id          String     @id @default(uuid())
  title       String
  description String?
  status      TaskStatus @default(TODO)
  createdAt   DateTime   @default(now())
  updatedAt   DateTime   @updatedAt

  @@index([status])
}

enum TaskStatus {
  TODO
  IN_PROGRESS
  DONE
}

🎨 Technical Decisions

1. @dnd-kit over react-beautiful-dnd

  • Reason: @dnd-kit is actively maintained, has better TypeScript support, and works well with React 18's concurrent features. It's also more performant and accessible.

2. Zod for Validation

  • Reason: Zod provides runtime type safety, excellent error messages, and integrates seamlessly with TypeScript. It's more flexible than express-validator for complex validation scenarios.

3. Prisma ORM

  • Reason: Prisma offers type-safe database access, excellent developer experience, and automatic migrations. The Prisma Client provides IntelliSense and compile-time error checking.

4. Optimistic UI Updates

  • Reason: Provides instant feedback to users, making the app feel more responsive. Errors are handled gracefully with rollback via toast notifications.

5. Inline Editing

  • Reason: Reduces friction in task management. Users can quickly edit tasks without opening a modal, improving workflow efficiency.

6. Premium SaaS Design

  • Reason: Following Basco-inspired design principles ensures the application looks professional and modern. The minimalist approach with generous whitespace and subtle animations creates a calm, confident user experience.

πŸ§ͺ Testing the Application

  1. Create Tasks: Add multiple tasks with different statuses
  2. Drag & Drop: Move tasks between columns
  3. Edit Tasks: Click task titles or edit icons to modify tasks
  4. Delete Tasks: Remove tasks and verify they're deleted
  5. Refresh Test: Refresh the page - all data should persist
  6. Error Handling: Try creating a task without a title (should show validation error)

🌐 Live Demo

XORO is live and ready to use!

  • πŸš€ Production URL: https://xoro-rho.vercel.app (reload if app doesn't load at first time)😊
  • πŸ“± Fully Responsive - Works on desktop, tablet, and mobile
  • 🎨 Premium Features - Dark mode, search, focus mode, keyboard shortcuts
  • ⚑ Instant Demo - No login required, start managing tasks immediately

Quick Demo Guide

  1. Visit https://xoro-rho.vercel.app
  2. Try Dark Mode - Click the moon/sun icon in the header
  3. Test Search - Press Ctrl+K or click the search icon
  4. Create Tasks - Click "New Task" or press Ctrl+N
  5. Drag & Drop - Move tasks between columns
  6. Mobile Test - Resize browser to see responsive design

πŸš€ Deployment

Deployment link = https://xoro-rho.vercel.app/ (if app doesn't opens on 1st time try again as vercel takes time to naturally connect with backend in railway)

Backend Deployment (e.g., Railway, Render)

  1. Set environment variables:

    • DATABASE_URL
    • PORT
    • FRONTEND_URL
  2. Run migrations:

npx prisma migrate deploy

Frontend Deployment (e.g., Vercel, Netlify)

  1. Set environment variable:

    • VITE_API_URL (your backend URL)
  2. Build:

npm run build

πŸ“ Environment Variables

Backend (.env)

PORT=3001
DATABASE_URL="postgresql://user:password@localhost:5432/kanban_db?schema=public"
FRONTEND_URL=http://localhost:5173

Frontend (.env)

VITE_API_URL=http://localhost:3001/api

πŸ› Troubleshooting

Database Connection Issues

  • Ensure PostgreSQL is running
  • Verify DATABASE_URL in backend/.env is correct
  • Run npx prisma migrate dev to create tables

CORS Errors

  • Check FRONTEND_URL in backend/.env matches your frontend URL
  • Ensure backend server is running

Port Already in Use

  • Change PORT in backend/.env
  • Update VITE_API_URL in frontend/.env accordingly

Blank Page

  • Check browser console for errors
  • Verify backend server is running
  • Check API connection in Network tab
  • Ensure all dependencies are installed

πŸ“„ License

This project is built for a technical evaluation/hackathon.

πŸ‘€ Author

Built as a full-stack demonstration project showcasing modern web development practices by Ahad Dangarvawala.


Note: This application is production-ready and demonstrates best practices in full-stack development, including proper error handling, validation, and user experience considerations.

About

XORO (eXperience-Oriented Workflow Organizer) is a Premium Kanban Task Manager with Dark Mode, Search & Keyboard Shortcuts and 50+ premium feature

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages