Ticketing App
Context
Trello-like task manager using drag & drop, Zustand and dark/light theme.

Challenge
Replicating the core flow of a Trello-style board —multiple boards, columns and cards dragged between states— without making the interaction feel slow or the state drift out of sync. Dragging touches structure and UI at the same time, and the content had to survive sessions without a backend.
Approach
Movement is handled with DnD Kit: reordering within each column with sortable and drops between columns with core, translating every drag event into a state operation instead of direct DOM mutations. That state lives in Zustand with Immer —clear writes without manually copying nested structures— and serializes to localStorage. Board, column and card forms validate with react-hook-form and Zod, deletes ask for confirmation, and I added a filter sidebar plus board data export from a dedicated module.
Outcome
A complete, growing task manager: fluid drags between columns, content persistent across reloads and a state layer ready to connect to a backend without rewriting the UI.
Responsibilities
- - Multiple boards with a board list, kanban columns and cards draggable with DnD Kit (sortable within columns, core between columns)
- - Global board state in Zustand with Immer: create, edit, move and delete cards without prop drilling
- - Modals for boards, columns and cards with react-hook-form and schema validation with Zod
- - Deletes with explicit confirmation via alert-dialog and action toasts
- - Board filter sidebar and data export module (lib/export)
- - Board persistence in localStorage with next-themes for light/dark mode