How glvgvzh/cozy-kanban works
Purpose and entry points
This is a Vite-powered React task-board application with task creation, editing/detail views, deletion, deadline handling, notifications, settings, and install-banner support. The browser entry path is index.html → src/main.jsx → src/App.jsx. A separate bot/runtime entry exists at server/bot.js, indicating optional server-side automation or messaging integration outside the React client.
Application orchestration
src/App.jsx is the likely state and control boundary for the board: it composes columns, task UI, modals, notifications, settings, and install prompt behavior. It coordinates user actions such as creating, selecting, updating, moving, and deleting tasks across the client-side component tree.
• src/App.jsx
• src/main.jsx
• src/data/boardData.js
Board and task presentation
The board is modeled as columns containing task cards. Column represents a workflow lane; TaskCard and TaskCardContent render task summaries and task-specific visual/content concerns. Detailed task interaction is separated into a modal rather than embedded in the board.
• src/Column.jsx
• src/TaskCard.jsx
• src/TaskCardContent.jsx
Modal-driven task lifecycle
Task mutations are handled through focused modal boundaries: creation, detailed inspection/editing, deletion confirmation, and user settings. Modal is the shared overlay/container primitive, while specific modals own their respective interaction flows and report actions upward to application state.
• src/Modal.jsx
• src/CreateTaskModal.jsx
• src/TaskDetailsModal.jsx
• src/DeleteTaskConfirmationModal.jsx
• src/SettingsModal.jsx
Persistence and initial data
The application appears client-state-centric. src/data/boardData.js supplies initial board/task data, and src/hooks/useLocalStorage.js provides browser-local persistence, allowing board and preference state to survive reloads without requiring a primary backend API.
• src/data/boardData.js
• src/hooks/useLocalStorage.js
• src/App.jsx
Deadline and notification flow
Deadline-related task data is processed by deadlineUtilities; notification derivation or scheduling is centralized in notificationUtilities. NotificationCenter is the UI delivery point for resulting alerts. This creates a boundary between raw task/deadline state, notification policy, and presentation.
• src/utils/deadlineUtilities.js
• src/utils/notificationUtilities.js
• src/NotificationCenter.jsx
Runtime, delivery, and styling boundaries
The main runtime is a React single-page application built and served by Vite (vite.config.js). CSS is organized by layout, component, modal, mobile, and theme-variable concerns rather than colocated styles. InstallBanner suggests Progressive Web App-oriented installation UX, though no service-worker configuration is present in the tree. The separate server/bot.js is the only server-side artifact and should be treated as an independent integration boundary until its transport/service dependencies are inspected.
• vite.config.js
• src/InstallBanner.jsx
• src/styles/index.css
• server/bot.js
Main entry points: App.jsx App controller · Modal.jsx Modal shell · main.jsx React bootstrap · deadlineUtilities.js Deadline utilities
Components 19
React client
Vite single-page task board.
- React bootstrap
src/main.jsx - App controller · Coordinates board state and user actions.
src/App.jsx - Install banner
src/InstallBanner.jsx
State and policy
Initial data, local persistence, and deadline notification logic.
- Initial board data
src/data/boardData.js - Local storage hook · Persists board and preference state in the browser.
src/hooks/useLocalStorage.js - Deadline utilities
src/utils/deadlineUtilities.js - Notification utilities
src/utils/notificationUtilities.js
Board and modal UI
Task workflow presentation and interaction surfaces.
- Workflow columns
src/Column.jsx - Task cards
src/TaskCard.jsx - Task card content
src/TaskCardContent.jsx - Modal shell
src/Modal.jsx - Create task modal
src/CreateTaskModal.jsx - Task details modal
src/TaskDetailsModal.jsx - Delete confirmation
src/DeleteTaskConfirmationModal.jsx - Settings modal
src/SettingsModal.jsx - Notification center
src/NotificationCenter.jsx
Runtime boundaries
Build delivery and independent automation entry points.
- Browser entry
index.html - Vite runtime
vite.config.js - Bot runtime · Independent server-side integration boundary.
server/bot.js
Connections 21
- Browser entry → React bootstrap: loads
- React bootstrap → App controller: mounts
- Vite runtime → Browser entry: serves/builds
- App controller → Initial board data: initializes from
- App controller → Local storage hook: persists state
- App controller → Workflow columns: renders
- Workflow columns → Task cards: contains
- Task cards → Task card content: renders
- App controller → Create task modal: opens for creation
- App controller → Task details modal: opens for inspect/edit
- App controller → Delete confirmation: opens for deletion
- App controller → Settings modal: opens for preferences
- Create task modal → Modal shell: uses
- Task details modal → Modal shell: uses
- Delete confirmation → Modal shell: uses
- Settings modal → Modal shell: uses
- App controller → Deadline utilities: evaluates task deadlines
- Deadline utilities → Notification utilities: supplies deadline state
- Notification utilities → Notification center: derives alerts for
- App controller → Notification center: renders
- App controller → Install banner: renders