With the design system in place and the task management screens clearly defined, it’s time to bring our app to life with functionality.
Task management epic with each user story can be found in the ClickUp task.
We will implement the following user stories:
To make sure that the stories can be worked on independently, we had to check what common dependencies there are, and we created two additional technical tickets that were blocking implementation:
Task
, and place restrictions on the name. See changes on GitHub.As standard, we added storybooks, and unit tests for quality assurance for the user stories.
We have made some additional changes too:
In this update, we introduced a centralised type definitions package and a mock API for task management.
A new package, @repo/types
, has been added to centralise type definitions. This package defines the Task
type and exports it for use across the codebase.
A new mock API called useMockTaskApi
has been implemented using Zustand to manage task-related actions in local state. The store provides methods for:
getTaskById(id)
- Retrieves a single task by its IDgetTasks()
- Returns a list of all taskscreateTask(name)
- Adds a new task with a generated ID and default stateupdateTask(id, updatedData)
- Updates an existing task with new valuesdeleteTask(id)
- Removes a task from the storeThese methods allow interaction with tasks in a structured way, mimicking real API behaviour while keeping all operations in memory. This is only a temporary solution to make the app able to interact with, and will be replaced with a real API.
In this update, we introduced a centralised validation schema package and integrated Zod for schema validation. This enhances form validation and ensures data consistency across the application.
A new package, @repo/validation-schema
, has been created to define validation rules for task-related data. The package:
taskSchema
using Zod, enforcing constraints such as name length limitsTask
type inferred from the schema, replacing the manually defined type in @repo/types
This change standardises validation and type definitions, ensuring tasks follow a consistent structure.
The app now uses Zod for validation and zod-i18n-map
to provide translated error messages. Updates to i18n.ts
:
This allows validation errors to be displayed in multiple languages without manually handling messages.
ClickUp stories:
This update implements the core task functionality, allowing users to view tasks and mark them as complete or incomplete.
TasksMain
Tasks
Task
getTasks
), displayed in a vertical list indicating their completion status, and nameisCompleted
flag in real-time using updateTask
of the mock API. As per designs, a completed task will have its checkbox checked, and its name struck through/:taskId
), setting up a foundation for future editingWe've implemented the ability to add new tasks as specified in the acceptance criteria of the user story.
AddTask
- A large underline-style input that expands with a tick button to submit, and an × button to discardAddTaskPlusButton
- An additional way to add tasks, and upon pressing, it points focus to AddTask
@repo/validation-schema
) to ensure valid inputcreateTask
, and visible in the task list after submittingThis update implements task editing upon pressing a task through a modal interface, preventing accidental changes while maintaining data integrity.
EditTask
/:taskId
)getTaskById
(redirects to /
if not found)EditTaskModal
@repo/validation-schema
) for name input handling, just as in create taskupdateTask
operation of the mock API/
We've extended the Edit task modal with task deletion, allowing users to remove tasks permanently through a confirmation dialog.
DeleteTaskModal
- Displays a confirmation dialog before deleting a task, preventing accidental deletion by requiring explicit confirmationEditTaskDialog
, so that the Delete button is now interactive, opening a confirmation modal instead of being a placeholderdeleteTask
API function, and redirects to the task list (closing both modals)The final product can be tried out using this link.
Summary of all changes in the code can be found here: GitHub link.
Tasks and subtasks for this setup are listed on our ClickUp board.
Full designs can be found in the Figma file:
All key project documentation is available in our ClickUp wiki.
We have a working prototype ready for the product team to collect feedback.
In the meantime, design is working on the authentication screens:
The development team will start to initialise the backend to be able to implement authentication, and migrate from local storage to a real database for task management.
Here's how our timeline look like now: