A modern, full-featured Kanban board application built with Vue 3 and a robust backend API, featuring user authentication via Clerk, real-time project management, and collaborative task tracking.
- Clerk Integration: Enterprise-grade authentication with sign-in/sign-out
- User Profiles: Display user information with profile images
- Protected Routes: Secure API endpoints with JWT token validation
- Multi-user Support: Assign tasks to team members and track ownership
- Multiple Projects: Create, switch between, and manage unlimited projects
- Project Dropdown: Quick project selection from sidebar
- Project CRUD: Full create, read, update, delete operations
- Task Tracking: Automatic task count per project
- Confirmation Dialogs: Safe deletion with user confirmation
- Responsive Design: Mobile-first approach with desktop optimization
- Dark Mode: Toggle between light and dark themes with persistent preference
- Collapsible Sidebar: Adaptive sidebar for mobile and desktop
- Professional Navbar: User profile dropdown with settings
- Smooth Animations: Polished transitions and micro-interactions
- Toast Notifications: Real-time feedback for all actions
- Drag & Drop: Seamless task movement between columns (To Do, In Progress, Done)
- Task Management: Add, edit, clone, and delete tasks
- Priority Levels: High, Medium, Low with visual indicators and color coding
- Due Dates: Set deadlines with overdue detection and badges
- User Assignment: Assign tasks with avatar display and tooltips
- Rich Text Editing: TipTap editor with formatting, links, and images
- Tags System: Organize tasks with custom, colorful tags
- Search & Filter: Advanced filtering by user, tag, and text search
- Sorting Options: Sort by priority, due date, creation date, or title
- Search Bar: Full-text search across task titles and descriptions
- User Filter: Filter by assigned user or show unassigned tasks
- Tag Filter: Filter by specific tags
- Smart Filtering: Combine multiple filters for precise results
- Clone Tasks: Duplicate tasks with auto-incrementing copy numbers
- Bulk Operations: Delete all tasks in a column or project
- Task Details: Rich descriptions with formatting
- Overdue Indicators: Visual badges for expired tasks
- User Tooltips: Hover over avatars to see user details
- Creation Timestamps: Track when tasks were created
- Vue 3: Composition API with reactive state management
- Vite: Lightning-fast build tool and dev server
- Tailwind CSS: Utility-first styling with custom components
- Clerk Vue: Authentication SDK with built-in UI components
- Axios: HTTP client with interceptors for auth
- TipTap: Modern rich text editor
- VueUse: Collection of essential Vue composition utilities
- Heroicons: Beautiful SVG icon set
- RESTful API with JWT authentication
- PostgreSQL database with Prisma ORM
- Real-time data synchronization
- Error handling and validation
- Node.js 16 or higher
- npm or yarn package manager
- Clerk account (clerk.com)
- Backend API running (separate repository)
-
Clone the repository
git clone <repository-url> cd vue-kanban-board
-
Install dependencies
npm install
-
Set up environment variables
Create a
.envfile in the root directory:VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key VITE_API_URL=http://localhost:3000/api
-
Configure Clerk
- Create a Clerk account at clerk.com
- Create a new application in your Clerk dashboard
- Copy your publishable key to the
.envfile - Configure allowed redirect URLs in Clerk settings
-
Start the development server
npm run dev
-
Access the application
- Open your browser to
http://localhost:5173 - Sign in with your Clerk credentials
- Open your browser to
docker build -t vue-kanban-board \
--build-arg VITE_CLERK_PUBLISHABLE_KEY=your_key \
--build-arg VITE_API_URL=https://api.yourdomain.com \
.docker run -d -p 80:80 vue-kanban-boardsrc/
โโโ api/ # API client and endpoints
โ โโโ client.js # Axios instance with auth interceptor
โ โโโ projects.js # Project CRUD operations
โ โโโ tasks.js # Task CRUD operations
โ โโโ user.js # User management
โ
โโโ components/ # Vue components
โ โโโ Layout.vue # Main layout wrapper
โ โโโ Sidebar.vue # Project management sidebar
โ โโโ Navbar.vue # User profile navbar
โ โโโ AuthWrapper.vue # Authentication wrapper
โ โโโ AddTaskModal.vue # Task creation modal
โ โโโ EditTaskModal.vue # Task editing modal
โ โโโ TiptapEditor.vue # Rich text editor
โ โโโ TagInput.vue # Tag input component
โ โโโ ToastNotification.vue # Toast notifications
โ
โโโ composables/ # Reusable composition functions
โ โโโ useProjects.js # Project management logic
โ โโโ useClerkAuth.js # Clerk authentication helper
โ
โโโ utilits/ # Utility functions
โ โโโ helpers.js # General helper functions
โ โโโ dateFormatter.js # Date formatting utilities
โ โโโ storage.js # Local storage helpers (legacy)
โ
โโโ App.vue # Main application component
โโโ main.js # Application entry point
โโโ style.css # Global styles and Tailwind
| Variable | Description | Example |
|---|---|---|
VITE_CLERK_PUBLISHABLE_KEY |
Clerk publishable key | pk_test_... |
VITE_API_URL |
Backend API base URL | http://localhost:3000/api |
-
Dashboard Settings
- Enable email/password authentication
- Configure OAuth providers (optional)
- Set up redirect URLs
-
JWT Template (Backend)
- Create a JWT template in Clerk
- Include user ID and email in claims
- Configure token expiration
Edit tailwind.config.js to customize the color scheme:
module.exports = {
theme: {
extend: {
colors: {
primary: {...},
secondary: {...},
}
}
}
}- User signs in via Clerk
- Clerk returns JWT token
- Token stored in Clerk session
- API requests include token in Authorization header
- Backend validates token and processes request
GET /projects- Get all user projectsGET /projects/:id- Get single projectPOST /projects- Create projectPUT /projects/:id- Update projectDELETE /projects/:id- Delete project
GET /tasks/project/:projectId- Get project tasksPOST /tasks- Create taskPUT /tasks/:id- Update taskPUT /tasks/:id/move- Move task to different statusDELETE /tasks/:id- Delete task
GET /users- Get all users (for assignment)GET /users/current- Get current user info
# Run unit tests
npm run test
# Run E2E tests
npm run test:e2e
# Run linting
npm run lint# Build for production
npm run build
# Preview production build
npm run previewThe build outputs to the dist/ directory and is optimized for performance.
- Real-time collaboration with WebSockets
- Task comments and activity log
- File attachments for tasks
- Calendar view for due dates
- Team workspaces and permissions
- Email notifications
- Task templates
- Time tracking
- Analytics dashboard
- Export to CSV/PDF
Made using Vue 3, Tailwind CSS, and Clerk