Kanban Workflow with Drag & Drop
Move applications between stages with drag and drop, with changes reflected instantly in the UI and synced to the database through the backend API.
A full-stack job application tracker designed to bring structure to the job search process, from saved roles to final offers. Users can manage applications through an interactive Kanban workflow with drag-and-drop status updates, switch to a detailed table view, archive older entries, and keep their data synced through a custom REST API and MongoDB backend.
Move applications between stages with drag and drop, with changes reflected instantly in the UI and synced to the database through the backend API.
Switch between a visual Kanban board and a structured table view, depending on whether you want a quick overview or a more detailed comparison.
Status changes feel immediate through optimistic updates, while the backend request runs in the background. If something fails, the previous state can be restored.
Search and filter active applications by relevant criteria, with board and table views reading from the same central dataset.
Archive older or inactive applications instead of deleting completely, keeping the workspace clean without losing important data.
Designed for desktop and smaller screens, including adapted touch behavior for mobile drag-and-drop interactions.
The application is built as a separated full-stack application, with a React frontend and a Node.js and Express API backed by MongoDB. The frontend and backend are deployed independently, reflecting a more realistic production setup.
On the frontend, the application uses a central jobs state as the single source of truth. The Kanban board, table view, search, filters, and archive logic are derived from the same dataset, which keeps the UI consistent across different views.
Status updates are handled optimistically: the interface updates immediately, while the backend request runs in the background. This makes the app feel faster while still keeping the frontend and database synchronized.
This was the first project I planned and built independently after finishing my course, which meant making both technical and product decisions without a predefined path.
Instead of treating the app as a collection of features, I focused on how people actually manage a job search and built the experience around that flow.
Building multiple views, drag-and-drop interactions, and optimistic updates taught me how important clean state structure is as an application grows.