{"id":39700845,"url":"https://github.com/drenlia/easy-kanban","last_synced_at":"2026-01-18T10:24:14.041Z","repository":{"id":263502812,"uuid":"890067940","full_name":"drenlia/easy-kanban","owner":"drenlia","description":"Simple and easy Kanban web application built with React TS (with Cursor AI)","archived":false,"fork":false,"pushed_at":"2025-12-27T18:14:20.000Z","size":7566,"stargazers_count":21,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T11:26:14.380Z","etag":null,"topics":["agile","agile-development","agile-management","agile-methodology","javascript","kanban","open-source","productivity","project","project-management","react","reactjs","self-hosted","sprint","sprint-planning","task-board","task-management","typescript"],"latest_commit_sha":null,"homepage":"https://kanban.demo.drenlia.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drenlia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-17T23:14:26.000Z","updated_at":"2025-12-24T03:15:33.000Z","dependencies_parsed_at":"2024-11-18T22:57:46.253Z","dependency_job_id":"a3a8f62f-6cfc-44e1-a2be-425ca98dec0e","html_url":"https://github.com/drenlia/easy-kanban","commit_stats":null,"previous_names":["danielatdrenlia/easy-kanban","drenlia/easy-kanban"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/drenlia/easy-kanban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drenlia%2Feasy-kanban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drenlia%2Feasy-kanban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drenlia%2Feasy-kanban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drenlia%2Feasy-kanban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drenlia","download_url":"https://codeload.github.com/drenlia/easy-kanban/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drenlia%2Feasy-kanban/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agile","agile-development","agile-management","agile-methodology","javascript","kanban","open-source","productivity","project","project-management","react","reactjs","self-hosted","sprint","sprint-planning","task-board","task-management","typescript"],"created_at":"2026-01-18T10:24:13.909Z","updated_at":"2026-01-18T10:24:14.006Z","avatar_url":"https://github.com/drenlia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Easy Kanban\n\nA modern team collaboration Kanban board application with user management, authentication, and role-based permissions. Built with React/TypeScript frontend and Node.js/Express backend.\n\n\u003cimg src=\"/screenshots/overview.png\" alt=\"Screenshot of easy-kanban\" width=\"100%\"\u003e\n\n*[View all screenshots and features →](/screenshots/SCREENSHOTS.md)*\n\n## Key Features\n\n### Core Functionality\n- **Multi-board Kanban system** with drag-and-drop functionality\n- **Multiple view modes**: Kanban (visual board), List (table format), and Gantt (timeline) views\n- **Real-time collaboration** - see changes instantly as team members work\n- **User authentication** with local accounts and Google OAuth support\n- **Role-based access control** (Admin/User permissions)\n- **Theme support** - Light and dark mode\n\n### Task Management\n- **Task management** with priorities, comments, and file attachments\n- **Rich text editing** for task descriptions and comments with formatting, links, and embedded content\n- **Task relationships** - Link tasks as parent-child or related relationships\n- **Task view modes** - Compact, shrink, and expand views for optimal screen space\n- **Task toolbar** - Quick actions on hover (assign members, change priority, add tags, copy tasks)\n- **Quick edit** - Inline editing without opening full task details\n- **Task watchers \u0026 collaborators** - Add team members to watch or collaborate on tasks\n- **Requesters** - Track who requested each task\n- **Sprint association** - Organize tasks by time-based planning periods\n\n### Team \u0026 Collaboration\n- **Team management** with color-coded member assignments\n- **Activity feed** - Draggable panel showing real-time changes, comments, and team activity\n- **Member filtering** - Filter tasks by assignees, watchers, collaborators, requesters, and system tasks\n\n### Views \u0026 Navigation\n- **Kanban View** - Visual board with drag-and-drop between columns\n- **List View** - Table format with sorting, filtering, column configuration, and horizontal scrolling\n- **Gantt View** - Timeline view with task dependencies, visual arrows, and virtual scrolling\n- **Advanced search \u0026 filtering** - Filter by text, dates, members, priorities, tags, project IDs, and sprints\n- **Saved filters** - Save and share frequently used filter combinations\n- **Sprint filtering** - Filter tasks by sprint or view backlog (unassigned tasks)\n\n### Reporting \u0026 Analytics\n- **Reports module** - Comprehensive analytics and insights (when enabled)\n- **My Stats** - Personal performance dashboard with points, tasks completed, effort, and achievements\n- **Leaderboard** - Team rankings based on performance metrics (when gamification enabled)\n- **Burndown charts** - Track planned vs actual task completion over time\n- **Team Performance** - Team-wide activity metrics and productivity analysis\n- **Task List Report** - Detailed task listings with filtering and export capabilities\n\n### Admin Features\n- **User management** - Create, edit, invite, activate/deactivate users, assign roles\n- **Board \u0026 column management** - Create, rename, reorder, and delete boards and columns\n- **Site settings** - Configure site name, URL, and global preferences\n- **SSO configuration** - Google OAuth Single Sign-On setup\n- **Mail server** - SMTP configuration for email notifications and invitations\n- **Tags management** - Create and manage custom tags with colors\n- **Priorities management** - Customize priority levels with names and colors\n- **App settings** - Configure default language, view modes, and application behavior\n- **Project settings** - Manage project identifiers and board configurations\n- **Sprint settings** - Create and manage sprints for time-based task organization\n- **Reporting configuration** - Enable/disable reports, gamification, leaderboard, and achievements\n- **Licensing** - View and manage license information, usage limits, and subscriptions\n- **System monitoring** - Real-time resource monitoring (RAM, CPU, disk usage)\n\n### Data \u0026 Export\n- **Export functionality** - Export tasks to CSV or Excel format (admin only)\n- **Excel export** - Multi-sheet Excel files with proper formatting when exporting all boards\n- **File uploads** - Task attachments and user avatars with size and type restrictions\n\n### Additional Features\n- **Email notifications** - Configurable email notifications for task activities\n- **Gamification** - Points, achievements, and leaderboard (when enabled)\n- **Keyboard shortcuts** - F1 for help, efficient keyboard navigation\n- **Column persistence** - Column preferences saved between sessions\n- **Multi-level sorting** - Sort by multiple columns in List View\n\n## Getting Started\n\n**Default Admin Account:**\n- Email: `admin@kanban.local`\n- Password: `generated` at initialization - look for it in the backend console log\n\n1. Log in with the default admin account\n2. Go to the admin panel and setup:\n   1. The site name and URL in Site Settings\n   2. In the App Settings, choose the default language (FR/EN)\n   3. Review the Project Settings\n   4. Add sprints in the Sprint Settings\n   5. Review Reports Settings\n4. Create team members in the Users Tab\n5. Go to Kanban View and set up your boards and columns\n6. Start creating and managing tasks\n7. Configure Google OAuth (optional) in Admin \u003e SSO settings\n\n## Permissions\n\n| Action | Admin | User |\n|--------|-------|------|\n| View kanban boards | ✓ | ✓ |\n| View List and Gantt views | ✓ | ✓ |\n| Create/edit/delete tasks | ✓ | ✓ |\n| Add comments and attachments | ✓ | ✓ |\n| Move tasks between columns | ✓ | ✓ |\n| Associate tasks with sprints | ✓ | ✓ |\n| Create/edit/delete boards | ✓ | ✗ |\n| Reorder boards and columns | ✓ | ✗ |\n| Manage columns (add/remove/reorder) | ✓ | ✗ |\n| Access Admin panel | ✓ | ✗ |\n| Manage users | ✓ | ✗ |\n| Configure site settings | ✓ | ✗ |\n| Configure Google OAuth | ✓ | ✗ |\n| Configure mail server | ✓ | ✗ |\n| Manage tags and priorities | ✓ | ✗ |\n| Export data (CSV/Excel) | ✓ | ✗ |\n| Access Reports (when enabled) | ✓ | ✓* |\n| View Leaderboard (when enabled) | ✓ | ✓* |\n| Update own profile | ✓ | ✓ |\n| Configure own notifications | ✓ | ✓ |\n\n*Some reports may be restricted to admins only depending on settings\n\n## Requirements\n\n- nodejs v 20.18\n\n## Installation\n\n### Docker\n\n**Step 1: Clone and setup**\n```bash\n# Clone the repo\ngit clone https://github.com/drenlia/easy-kanban.git\ncd easy-kanban\ncp docker-compose-example.yml docker-compose.yml\n```\n\n**Step 2: Configure and run**\n1. Edit `docker-compose.yml` and update the following environment variables:\n   - `JWT_SECRET`: Set a strong secret key for authentication\n   - `ALLOWED_ORIGINS`: Set your domain(s), e.g., `yourdomain.com`\n   - `DEMO_ENABLED`: Set to `true` to try the demo with generated data, `false` for production\n\n2. Start the application:\n```bash\nnpm run docker:dev\n```\n\n**Access the application:**\n- Frontend: http://localhost:3010\n- Backend API: http://localhost:3222\n\n*For more Docker information, see [DOCKER.md](/DOCKER.md)*\n\n## Database Backup \u0026 Restore\n\n### Automated Backup Script\n\nUse the included backup script for easy database management:\n\n```bash\n# Create a timestamped backup with automatic cleanup\n./backup-db.sh\n\n# List all existing backups\n./backup-db.sh --list\n\n# Manual cleanup (keeps last 10 backups)\n./backup-db.sh --cleanup\n\n# Create backup without auto-cleanup\n./backup-db.sh --no-cleanup\n\n# Show help and options\n./backup-db.sh --help\n```\n\n**Features:**\n- Timestamped backups (`kanban-backup-YYYYMMDD_HHMMSS.db`)\n- Automatic cleanup (keeps last 10 backups)\n- Latest backup symlink (`kanban-latest.db`)\n- Colored output and error handling\n- Backup size reporting\n\n### Manual Backup Methods\n\n**From Docker Container:**\n```bash\n# Quick backup\ndocker cp easy-kanban:/app/server/data/kanban.db ./kanban-backup.db\n\n# Backup with timestamp\ndocker cp easy-kanban:/app/server/data/kanban.db ./kanban-backup-$(date +%Y%m%d_%H%M%S).db\n```\n\n**From Docker Volume:**\n```bash\n# Using volume mount\ndocker run --rm -v easy-kanban_kanban-data:/source -v $(pwd):/backup alpine cp /source/kanban.db /backup/kanban-backup.db\n```\n\n### Restore Database\n\n```bash\n# Stop the application gracefully (keeps container running)\ndocker-compose stop\n\n# Replace database\ndocker cp ./kanban-backup.db easy-kanban:/app/server/data/kanban.db\n\n# Restart application\ndocker-compose start\n```\n\n**Important:** Always stop the application before restoring to prevent data corruption.\n\n## Security\n\nThe application includes JWT-based authentication and role-based access control. However, for production deployments:\n\n- Change the default admin password immediately\n- Set a strong JWT secret in production\n- Configure HTTPS/SSL\n- Consider additional network security measures\n\n## Authors and acknowledgment\nDevelopped with AI assistance\n\n## License\n\nMIT License\n\nCopyright (c) 2024 Easy Kanban\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Project status\n\nImprovements are always welcome.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrenlia%2Feasy-kanban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrenlia%2Feasy-kanban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrenlia%2Feasy-kanban/lists"}