StateFlow
A Jira-inspired task manager with drag-and-drop boards
Video walkthrough coming soon
StateFlow is a Jira-inspired project management application built with React and Tailwind CSS, focused on creating a smooth task management experience with advanced frontend engineering concepts. The project provides users with a complete workflow to create, organize, update, and manage tasks through multiple views while keeping all data persistent on the client side.
The application includes a visual Kanban-style board with drag-and-drop functionality, allowing users to move tasks between different stages with instant feedback. The drag-and-drop system was implemented using dnd-kit with custom sensors and collision detection to support smooth interactions across desktop and mobile devices. Task positions and changes are automatically synchronized with localStorage, ensuring user data remains available after page refreshes.
State management was designed using React Context API to handle shared application data without unnecessary prop drilling. Tasks, updates, and application state are managed through centralized context logic, making different sections of the application easier to maintain and extend.
One of the major engineering challenges was implementing a custom undo and redo system. Instead of relying on external libraries, I built a history management engine using the past, present, and future state pattern. Every task modification creates a history snapshot, allowing users to safely reverse or restore actions. The system supports multiple operations while keeping interactions responsive.
The application includes complete task management features such as creating, editing, deleting, archiving, filtering, sorting, pinning important tasks, setting priorities, adding deadlines, and assigning labels. Users can switch between board and list views depending on their preferred workflow. The list view supports sorting based on priority, status, deadline, and default ordering.
A keyboard shortcut system was implemented to improve productivity. Users have access to application-wide shortcuts with an integrated shortcut cheat sheet, making common actions faster without requiring additional navigation. The project also includes dark and light themes with Tailwind CSS configuration.
Data portability was considered by adding export functionality. Users can export their task information into JSON and CSV formats, allowing them to keep backups or process their data externally. Chart visualization was added using Chart.js to provide a better understanding of task distribution and project status.
The frontend architecture focuses on performance and maintainability. React.lazy and Suspense are used for code splitting and optimized loading. Components are structured around reusable patterns, while responsive layouts ensure the application works across different screen sizes. Modal and popup systems use React Portal to avoid layout conflicts caused by nested positioning and z-index issues.
During development, I solved multiple frontend challenges including drag-and-drop state synchronization, controlled form handling, localStorage data consistency, event handling issues, sorting logic, CSV formatting problems, and responsive layout improvements.
StateFlow helped me understand advanced frontend concepts beyond basic component development, including state history management, drag-and-drop architecture, performance optimization, client-side persistence, reusable component design, and building a complete user-focused application from an empty repository.
Key features
Drag-and-drop board
Instant visual feedback with persistent localStorage saves
Undo and redo engine
Custom hook tracking past, present, and future state
Keyboard shortcuts
Full shortcut system with an in-app cheat sheet