-
Notifications
You must be signed in to change notification settings - Fork 0
Labels
enhancementNew feature or requestNew feature or request
Milestone
Description
✏️ Expense Category Editing
As a User
I want to be able to edit an existing expense category
So that I can update its name, color, and manage related tags
🛠 Functional Requirements
Category Editing Screen
A new screen will allow the user to edit an existing category. This screen can be accessed via the edit action in the category list.
Editable Fields
- Description: must be unique among all categories; required field;
- Color: optional field for visual grouping;
- Tags: the user can add or remove multiple tags associated with the category;
- A tag is a text string up to 20 characters;
- Tags must be unique within the same category (case-insensitive);
- Tags are only saved when the form is submitted;
Behaviors
- Editing a category updates the existing record in the database;
- The system must validate that the new description does not conflict with other existing categories;
- On save, tags are fully synchronized — removed tags are deleted, and new ones are created;
- Feedback must be shown to the user upon success or failure;
- Tags are shown as chips/pills with an "x" to remove them individually;
- An input with autocomplete or creation behavior will be used to enter new tags;
📏 Non-Functional Requirements
- Tags should be saved using a normalized relational structure:
- Create a separate
tagstable with fields:id,name(unique),category_id (FK); - Enforce uniqueness of
name+category_idusing a composite unique constraint; - Prefer transactional updates when syncing tags to avoid partial data inconsistency;
- Create a separate
- All changes must be persisted via a RESTful
PUT /categories/{id}endpoint; - Database queries for tag insertion/deletion must be optimized to avoid unnecessary writes (compare existing vs incoming list);
✅ Definition of Done (DoD)
- All the functional and non functional requirements were developed and tested;
- Documentation is complete;
Reactions are currently unavailable
Sub-issues
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
User Stories