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.
- 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
- Node.js - Runtime environment
- Express.js - Web framework
- Prisma - ORM for database management
- PostgreSQL - Relational database
- Zod - Schema validation
- β 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
- β 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
- β
Keyboard Shortcuts:
Ctrl+K/Cmd+K- Open searchCtrl+N/Cmd+N- New taskEnter- Save/SubmitEsc- Close/Cancel
- β Inline Task Editing - Click title to edit
- β Auto-focus Management for better workflow
- β Responsive Design - Mobile-first approach
- β 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
- β 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
- β 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
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- PostgreSQL (v14 or higher)
- npm or yarn
-
Install dependencies:
# Backend cd backend npm install # Frontend cd ../frontend npm install
-
Setup database:
- Create a PostgreSQL database named
kanban_db - Update
backend/.envwith your database connection string
- Create a PostgreSQL database named
-
Run migrations:
cd backend npx prisma generate npx prisma migrate dev --name init -
Start all services:
# From project root start.batThis will open separate windows for backend and frontend servers.
git clone <repository-url>
cd "XORO - Kanban Task Manager"- Create a PostgreSQL database:
CREATE DATABASE kanban_db;- Update the database connection string in
backend/.env:
DATABASE_URL="postgresql://username:password@localhost:5432/kanban_db?schema=public"cd backend
npm install
npx prisma generate
npx prisma migrate dev --name init
npm run devThe backend server will run on http://localhost:3001
Open a new terminal:
cd frontend
npm install
npm run devThe frontend will run on http://localhost:5173
- Create a Task: Click the "New Task" button in the header
- Edit a Task: Click the edit icon on a task card or click the task title
- Move a Task: Drag and drop a task card to a different column
- Delete a Task: Click the delete icon on a task card
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
GET /api/tasks- Get all tasksGET /api/tasks/:id- Get task by IDPOST /api/tasks- Create a new taskPUT /api/tasks/:id- Update a taskDELETE /api/tasks/:id- Delete a task
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"
}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
}- 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.
- 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.
- Reason: Prisma offers type-safe database access, excellent developer experience, and automatic migrations. The Prisma Client provides IntelliSense and compile-time error checking.
- Reason: Provides instant feedback to users, making the app feel more responsive. Errors are handled gracefully with rollback via toast notifications.
- Reason: Reduces friction in task management. Users can quickly edit tasks without opening a modal, improving workflow efficiency.
- 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.
- Create Tasks: Add multiple tasks with different statuses
- Drag & Drop: Move tasks between columns
- Edit Tasks: Click task titles or edit icons to modify tasks
- Delete Tasks: Remove tasks and verify they're deleted
- Refresh Test: Refresh the page - all data should persist
- Error Handling: Try creating a task without a title (should show validation error)
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
- Visit https://xoro-rho.vercel.app
- Try Dark Mode - Click the moon/sun icon in the header
- Test Search - Press
Ctrl+Kor click the search icon - Create Tasks - Click "New Task" or press
Ctrl+N - Drag & Drop - Move tasks between columns
- Mobile Test - Resize browser to see responsive design
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)
-
Set environment variables:
DATABASE_URLPORTFRONTEND_URL
-
Run migrations:
npx prisma migrate deploy-
Set environment variable:
VITE_API_URL(your backend URL)
-
Build:
npm run buildPORT=3001
DATABASE_URL="postgresql://user:password@localhost:5432/kanban_db?schema=public"
FRONTEND_URL=http://localhost:5173VITE_API_URL=http://localhost:3001/api- Ensure PostgreSQL is running
- Verify DATABASE_URL in backend/.env is correct
- Run
npx prisma migrate devto create tables
- Check FRONTEND_URL in backend/.env matches your frontend URL
- Ensure backend server is running
- Change PORT in backend/.env
- Update VITE_API_URL in frontend/.env accordingly
- Check browser console for errors
- Verify backend server is running
- Check API connection in Network tab
- Ensure all dependencies are installed
This project is built for a technical evaluation/hackathon.
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.