diff options
Diffstat (limited to 'requirements')
31 files changed, 362 insertions, 33 deletions
diff --git a/requirements/catalogue/req-068.md b/requirements/catalogue/req-068.md index 1c1d1df..fb6c3dd 100644 --- a/requirements/catalogue/req-068.md +++ b/requirements/catalogue/req-068.md @@ -5,4 +5,4 @@ deleting buckets. Sources: req-056, req-000, req-025, req-089, req-102 -Satisfied by: task-030 +Satisfied by: task-030, task-075 diff --git a/requirements/catalogue/req-096.md b/requirements/catalogue/req-096.md index bec8f76..9a1fa38 100644 --- a/requirements/catalogue/req-096.md +++ b/requirements/catalogue/req-096.md @@ -1,8 +1,8 @@ # req-096 -Schist must have interfaces for viewing all drips and transactions in and out -of a given bucket alongside the history of pipes of the given bucket. +Schist must have interfaces for viewing all drips and transactions in and out of +a given bucket alongside the history of pipes of the given bucket. Source: req-100 -Satisfied by: task-061, task-062, req-113, req-115 +Satisfied by: task-061, task-081, task-062, req-113, req-115 diff --git a/requirements/catalogue/req-101.md b/requirements/catalogue/req-101.md index aa4559d..8cc0bdf 100644 --- a/requirements/catalogue/req-101.md +++ b/requirements/catalogue/req-101.md @@ -6,4 +6,4 @@ buckets in the future. Source: req-095 -Satisfied by: task-061, task-062, req-112, arch-v1.0.1 +Satisfied by: task-029, task-062, req-112, arch-v1.0.1 diff --git a/requirements/data_models/dml-bucket.md b/requirements/data_models/dml-bucket.md index 01c56b5..809fe33 100644 --- a/requirements/data_models/dml-bucket.md +++ b/requirements/data_models/dml-bucket.md @@ -8,7 +8,9 @@ A bucket represents a real category of spending, like beer or holidays. | name | string | A short description of the real category of spending. | | balance | number | The amount of money the user intends to be free to spend. | | balance_cache_key | string | A cache key for the balance. See notes. | +| group | string | The name of a group of buckets to which this belongs. | | is_hidden | boolean | Whether this bucket should be hidden in the UI. | +| is_favourite | boolean | Whether this bucket should be given priority in the UI. | Constraints: @@ -23,4 +25,4 @@ Notes: - `is_hidden` is used as an equivalent of soft-deletion. Buckets should never be actually deleted. -Sources: req-027, req-098, req-110, req-111, task-028 +Sources: req-027, req-098, req-110, req-111, task-028, ui-designs/desktop-views diff --git a/requirements/kanban.md b/requirements/kanban.md index 3ed8702..99c23ed 100644 --- a/requirements/kanban.md +++ b/requirements/kanban.md @@ -2,11 +2,29 @@ | Backlog | Ready | Doing | | -------- | -------- | -------- | -| | | epic-003 | +| | epic-000 | | | ======== | ======== | ======== | -| | task-060 | | -| ======== | ======== | ======== | -| epic-000 | | | +| | task-010 | | +| | task-073 | | +| | task-012 | | +| | task-001 | | +| | task-064 | | +| | task-072 | | +| | task-030 | | +| | task-029 | | +| | task-078 | | +| | task-057 | | +| | task-061 | | +| | task-071 | | +| | task-075 | | +| | task-074 | | +| | task-013 | | +| | task-068 | | +| | task-076 | | +| | task-080 | | +| | task-081 | | +| | task-077 | | +| | task-079 | | | ======== | ======== | ======== | | epic-008 | | | diff --git a/requirements/tasks/epic-000.md b/requirements/tasks/epic-000.md index 400a3fe..791cef7 100644 --- a/requirements/tasks/epic-000.md +++ b/requirements/tasks/epic-000.md @@ -8,13 +8,25 @@ Status: not ready ## Ordered backlog - [ ] task-010 (hello, world) +- [ ] task-073 (UI layout & nav) - [ ] task-012 (SQLite) - [ ] task-001 (inserting transactions) - [ ] task-064 (deleting transactions) -- [ ] task-029 (CRUDing pipes) +- [ ] task-072 (import from Actualbudget) - [ ] task-030 (CRUDing buckets) -- [ ] task-061 (viewing drips, transactions and historic pipes) +- [ ] task-029 (CRUDing pipes) +- [ ] task-078 (groups in Buckets view) - [ ] task-057 (long-term expected monthly tank change) +- [ ] task-061 (viewing drips, transactions and historic pipes) - [ ] task-071 (updating transactions) +- [ ] task-075 (hiding buckets UI) +- [ ] task-074 (viewing hidden buckets) - [ ] task-013 (config & caches) -- [ ] task-068 (guarantee immutable pipes) +- [ ] task-076 (balances line graph) +- [ ] task-080 (daily net in/out histogram) +- [ ] task-081 (pipes timeline) +- [ ] task-077 (callout next to pipe editor) +- [ ] task-079 (new bucket from transactions view) +- [ ] task-082 (Overview in Balances view) +- [ ] task-084 (groups in Balances view) +- [ ] task-083 (hidden buckets in Balances view) diff --git a/requirements/tasks/epic-003.md b/requirements/tasks/epic-003.md index 3dbda50..72bc33e 100644 --- a/requirements/tasks/epic-003.md +++ b/requirements/tasks/epic-003.md @@ -2,6 +2,8 @@ For this Epic, the project should be ready to start work. +Status: done + ## Ordered backlog - [x] task-007 (architecture) @@ -9,4 +11,4 @@ For this Epic, the project should be ready to start work. - [x] task-063 (add extensions to processes) - [x] task-059 (CRUD matrix) - [x] task-028 (UI designs) -- [ ] task-060 (refine epic-000) +- [x] task-060 (refine epic-000) diff --git a/requirements/tasks/epic-008.md b/requirements/tasks/epic-008.md index e686a6a..e7b6b99 100644 --- a/requirements/tasks/epic-008.md +++ b/requirements/tasks/epic-008.md @@ -10,3 +10,4 @@ Status: not ready - [ ] task-049 (mutating transactions forces correction of bucket balances) - [ ] task-050 (up-to-date bucket balance cache key guarantees correct balance) - [ ] task-051 (test for accurate bucket balances) +- [ ] task-068 (guarantee immutable pipes) diff --git a/requirements/tasks/task-001.md b/requirements/tasks/task-001.md index 26d585d..80aff97 100644 --- a/requirements/tasks/task-001.md +++ b/requirements/tasks/task-001.md @@ -2,10 +2,20 @@ Schist must have a desktop interface for inserting transactions. -Source: req-048 +- [ ] Add a table of transactions to the transactions view main content with + these columns: + - Date + - Bucket + - Payee + - Quantity + - Balance +- [ ] Add a new transaction form at the top of the table +- [ ] Move the Balance column header to after the new transaction form + +Source: req-048, ui-designs/desktop-views Epic: epic-000 -Blocked by: task-010, task-012, task-028 +Blocked by: task-010, task-012 Relates to: req-073, req-037, req-035, req-030 diff --git a/requirements/tasks/task-012.md b/requirements/tasks/task-012.md index 97ae41b..e45c74b 100644 --- a/requirements/tasks/task-012.md +++ b/requirements/tasks/task-012.md @@ -2,6 +2,11 @@ The desktop GUI must persist domain entities to an SQLite file. +For the purposes of this task, any read/write operation is enough to prove that +the pattern is ready to be used in other tasks. As this blocks using actual +domain entities, then, a good place to start would be storing a database schema +version number. + Source: ard-001 Epic: epic-000 @@ -9,6 +14,3 @@ Epic: epic-000 Blocked by: task-010 Blocks: task-001 - -For the purposes of this task, any read/write operation is enough to prove that -the pattern is ready to be used in other tasks. diff --git a/requirements/tasks/task-013.md b/requirements/tasks/task-013.md index 6d52806..84dc264 100644 --- a/requirements/tasks/task-013.md +++ b/requirements/tasks/task-013.md @@ -8,5 +8,13 @@ Epic: epic-000 Blocked by: task-010 +## Notes + For the purposes of this task, any read/write operation is enough to prove that the pattern is ready to be used in other tasks. + +A good config option might be some keyboard shortcuts for top-level and +second-level navigation respectively. + +A good caching option might be caching the previously used counterparties for +use in the dropdown when editing a counterparty in the transactions view. diff --git a/requirements/tasks/task-029.md b/requirements/tasks/task-029.md index ea8a318..9141063 100644 --- a/requirements/tasks/task-029.md +++ b/requirements/tasks/task-029.md @@ -7,4 +7,14 @@ Sources: req-069, req-106 Epic: epic-000 -Blocked by: task-028 +Blocked by: task-030 + +## Notes + +According to the UI designs, the interface for this should be a part of the +editable section in the Buckets view. It should feel like editing a Bucket, +although the underlying data structure is creating a new pipe. + +There should be an auto-saving amount input and an auto-saving period select. + +The informative callout is out of scope: see task-077. diff --git a/requirements/tasks/task-030.md b/requirements/tasks/task-030.md index bb1f2b4..e776cdf 100644 --- a/requirements/tasks/task-030.md +++ b/requirements/tasks/task-030.md @@ -1,10 +1,29 @@ # task-030 -Schist's desktop GUI must have an interface for viewing, creating, updating and -deleting buckets. +Schist's desktop GUI must have an interface for viewing, creating and updating +buckets. Source: req-068 Epic: epic-000 -Blocked by: task-028 +Blocks: task-029 + +## Notes + +The UI must include: + +- [ ] Name as an editable heading at the top of the main content +- [ ] Balance in the top-right of the main content +- [ ] Name and balance in the second-level nav +- [ ] An auto-saving group input +- [ ] An auto-saving Favourite checkbox +- [ ] A New option in the second-level nav in the Buckets view +- [ ] The New main content looks similar to the editable section of an existing + bucket, but is not auto-saving, and has an Add button, which you can guess + what that does + +Not in scope: + +- A Hidden checkbox: that is covered by task-075 +- A historical data section: that is covered by task-076 diff --git a/requirements/tasks/task-057.md b/requirements/tasks/task-057.md index 1af09b9..d5fe087 100644 --- a/requirements/tasks/task-057.md +++ b/requirements/tasks/task-057.md @@ -1,9 +1,9 @@ # task-057 Schist's desktop UI should display prominently the results of the procedures, -`calculate_long_term_expected_monthly_tank_change`, as described in req-088, -and `calculate_tank_balance`, as described in req-092, in any view from which -the user may be thinking about how to create, update or delete their buckets or +`calculate_long_term_expected_monthly_tank_change`, as described in req-088, and +`calculate_tank_balance`, as described in req-092, in any view from which the +user may be thinking about how to create, update or delete their buckets or pipes. Sources: req-089, req-093 @@ -11,3 +11,16 @@ Sources: req-089, req-093 Epic: epic-000 Relates to: req-088, req-092, task-028 + +## Notes + +- [ ] Tank balance is in the second-level nav in the Buckets view +- [ ] Tank balance is in the top-right of the main content in the All option of + the Buckets view +- [ ] Long-term expected change is displayed per week, month and year in the + first section of the main content in the All option of the Buckets view +- [ ] The main content of a group should look similar, but the second-level nav + should not be the same + +Long-term expected change should not be implemented for groups, because the user +isn't expected to balance incomings and outgoings within each group. diff --git a/requirements/tasks/task-060.md b/requirements/tasks/task-060.md index 33b7ac6..c55a7f5 100644 --- a/requirements/tasks/task-060.md +++ b/requirements/tasks/task-060.md @@ -2,6 +2,6 @@ Refine epic-000 into a state ready to start development work. -Epic: epic-003 +Status: done -Blocked by: task-028 +Epic: epic-003 diff --git a/requirements/tasks/task-061.md b/requirements/tasks/task-061.md index 06435b5..f83d24a 100644 --- a/requirements/tasks/task-061.md +++ b/requirements/tasks/task-061.md @@ -3,10 +3,16 @@ Schist must have a desktop interface for viewing all drips and transactions in and out of a given bucket alongside the history of pipes of the given bucket. -Sources: req-096, req-101 +Sources: req-096 Epic: epic-000 -Blocked by: task-028 - Relates to: req-097 + +## Notes + +This should be implemented, as specified in the UI designs, as a table in the +historical data section in the Buckets view. It should work for buckets, groups +and the All option. + +There should be a date range selector to narrow down the relevant dates. diff --git a/requirements/tasks/task-064.md b/requirements/tasks/task-064.md index 765a9e9..23ab134 100644 --- a/requirements/tasks/task-064.md +++ b/requirements/tasks/task-064.md @@ -2,8 +2,13 @@ Schist must have a desktop interface for deleting transactions. +- [ ] Add checkboxes to transactions list +- [ ] Add delete button +- [ ] Delete button is only enabled when at least one transaction is selected +- [ ] Delete button leads to confirmation modal +- [ ] OK-ing the confirmation modal deletes the transactions, dismissing the + modal does nothing + Epic: epic-000 Source: req-120 - -Blocked by: task-028 diff --git a/requirements/tasks/task-071.md b/requirements/tasks/task-071.md index 1a47ba2..57ff87f 100644 --- a/requirements/tasks/task-071.md +++ b/requirements/tasks/task-071.md @@ -5,3 +5,32 @@ Schist must have a desktop interface for updating transactions. Epic: epic-000 Source: req-125 + +Blocks: task-079 + +## Notes + +- [ ] The table cells in the Transactions view should be editable, and should + auto-save +- [ ] If the user enters a bucket name which doesn't exist yet, the edit fails + (see task-079) +- [ ] The user should only be able to enter numbers into the Date column +- [ ] If the user enters an invalid value into any column, it is underlined in + red, and if submitted, it is reset to its previous value +- [ ] When editing the Bucket column, the user should get a dropdown list of the + available options, filtered by what the user has already entered by a + case-insensitive fuzzy search +- [ ] When editing the Counterparty column, the user should get a dropdown list + of the previously used counterparties, filtered by what the user has + already entered by a case-insensitive fuzzy search +- [ ] When editing the Balance column, numbers should always be in the format, + /-?[0-9]+(.[0-9][0-9])?/, no matter how they're formatted when not editing +- [ ] When editing the Amount column, whitespace and commas are ignored, unless + exactly one comma is supplied, in which case it is interpreted as a + decimal separator +- [ ] After editing the Amount column, the Balances should all immediately + update + +- The table cells in the table in the Buckets view should not be editable. This + poses too many UX problems. +- The Balance column should not be editable. diff --git a/requirements/tasks/task-072.md b/requirements/tasks/task-072.md new file mode 100644 index 0000000..a5626e0 --- /dev/null +++ b/requirements/tasks/task-072.md @@ -0,0 +1,6 @@ +# task-072 + +Schist must have a desktop interface for importing transactions from an +Actualbudget SQLite file. + +Epic: epic-000 diff --git a/requirements/tasks/task-073.md b/requirements/tasks/task-073.md new file mode 100644 index 0000000..e610b91 --- /dev/null +++ b/requirements/tasks/task-073.md @@ -0,0 +1,14 @@ +# task-073 + +- Schist's desktop interface must include 3 views: the Buckets view, the + Balances view, and the Transactions view +- Each view must have three columns +- The first column must be the top-level nav and contain a button for each view +- The second column must be the second-level nav as detailed in the UI designs +- The third column must be the main content +- All the columns must be properly spaced out +- For this ticket, the main content can be empty or contain a placeholder + +Epic: epic-000 + +Source: ui-designs/desktop-views diff --git a/requirements/tasks/task-074.md b/requirements/tasks/task-074.md new file mode 100644 index 0000000..c1bfa98 --- /dev/null +++ b/requirements/tasks/task-074.md @@ -0,0 +1,11 @@ +# task-074 + +Schist's desktop UI must have a means of viewing hidden buckets. + +Epic: epic-000 + +Source: ui-designs/desktop-views + +## Notes + +There are currently no UI designs for this. You may want to create some. diff --git a/requirements/tasks/task-075.md b/requirements/tasks/task-075.md new file mode 100644 index 0000000..ef6cd55 --- /dev/null +++ b/requirements/tasks/task-075.md @@ -0,0 +1,13 @@ +# task-075 + +Schist's desktop UI must have a UI for hiding buckets which strongly discourages +the user from hiding buckets with a non-zero balance or a non-zero active pipe, +and which makes it easy for users to resolve those problems. + +Epic: epic-000 + +Source: req-068, ui-designs/desktop-views + +## Notes + +There are currently no UI designs for this. You may want to create some. diff --git a/requirements/tasks/task-076.md b/requirements/tasks/task-076.md new file mode 100644 index 0000000..9cb99f4 --- /dev/null +++ b/requirements/tasks/task-076.md @@ -0,0 +1,8 @@ +# task-076 + +Schist's desktop UI, in the historical data section of the Buckets view, should +include a Balance line graph. + +Epic: epic-000 + +Source: ui-designs/desktop-views diff --git a/requirements/tasks/task-077.md b/requirements/tasks/task-077.md new file mode 100644 index 0000000..8e61cda --- /dev/null +++ b/requirements/tasks/task-077.md @@ -0,0 +1,9 @@ +# task-077 + +In the Buckets view in Schist's desktop UI, there should be a callout next to +the pipe form, which summarises recent spending in terms of the currently +specified pipe period, as seen in the UI designs. + +Epic: epic-000 + +Source: ui-designs/desktop-views diff --git a/requirements/tasks/task-078.md b/requirements/tasks/task-078.md new file mode 100644 index 0000000..4c4c84b --- /dev/null +++ b/requirements/tasks/task-078.md @@ -0,0 +1,9 @@ +# task-078 + +In the Buckets view in Schist's desktop UI, the second-level nav should group +buckets together by their group, and should include an 'All' option. The main +content should be as specified in the UI designs. + +Epic: epic-000 + +Source: ui-designs/desktop-views diff --git a/requirements/tasks/task-079.md b/requirements/tasks/task-079.md new file mode 100644 index 0000000..f7e3e00 --- /dev/null +++ b/requirements/tasks/task-079.md @@ -0,0 +1,25 @@ +# task-079 + +In the transactions view in Schist's desktop UI, if the user enters a bucket +name which doesn't exist yet, they should be prompted if they would like to +create a new bucket. + +Epic: epic-000 + +Blocked by: task-071 + +## Notes + +- [ ] When the user enters a new bucket, a modal arises asking if they'd like to + create a new bucket +- [ ] OK-ing the modal navigates to the New bucket view, dismissing the modal + does nothing and returns the transaction's bucket value to its previous + state +- [ ] The modal should include a list of similar bucket names which the user can + select instead +- [ ] If the user OK-s the modal, the New bucket view should have a Back nav + button which returns the user to the Transactions view without doing + anything +- [ ] If the user adds the new bucket, they should be taken to the new bucket's + bucket view, with a Back nav button, which returns the user to where they + were in the transactions view with the bucket updated and focused diff --git a/requirements/tasks/task-080.md b/requirements/tasks/task-080.md new file mode 100644 index 0000000..e4f8632 --- /dev/null +++ b/requirements/tasks/task-080.md @@ -0,0 +1,14 @@ +# task-080 + +Schist's desktop UI, in the historical data section of the Buckets view, should +include a daily/weekly/monthly/yearly net histogram. + +Epic: epic-000 + +Source: ui-designs/desktop-views + +## Notes + +The UI designs currently only have a daily net histogram. However, this might be +quite inflexible. Consider adding a select to switch between daily, weekly, +monthly and yearly views - or add all of them. diff --git a/requirements/tasks/task-081.md b/requirements/tasks/task-081.md new file mode 100644 index 0000000..e475534 --- /dev/null +++ b/requirements/tasks/task-081.md @@ -0,0 +1,16 @@ +# task-081 + +Schist's desktop UI, in the historical data section of the Buckets view, should +include a pipe change timeline. + +Epic: epic-000 + +Source: ui-designs/desktop-views, req-096 + +## Notes + +The timeline should only include pipes which were ever effective. That is, if a +pipe was overwritten by another on the same day, it shouldn't appear on the +timeline. This matters, because the user may make several edits to a pipe in one +session, all of which are automatically committed to the database as a separate +pipe. diff --git a/requirements/tasks/task-082.md b/requirements/tasks/task-082.md new file mode 100644 index 0000000..2c2c5cb --- /dev/null +++ b/requirements/tasks/task-082.md @@ -0,0 +1,22 @@ +# task-082 + +Schist's desktop UI, in the Balances view, should have an Overview option. + +Epic: epic-000 + +Source: ui-designs/desktop-views, req-068 + +Related to: task-084 + +## Notes + +- [ ] Display a list of bucket balances as coloured bars, proportionate to the + amount flowing through the current pipe of each bucket +- [ ] Sort by the magnitude of each bucket's balance relative to the amount + flowing through the current pipe for each bucket +- [ ] Sort favourited and off-balance buckets to the top with a gap between + these and the rest of the buckets, if there are any + +Not in scope: + +- Hidden buckets: see task-083 diff --git a/requirements/tasks/task-083.md b/requirements/tasks/task-083.md new file mode 100644 index 0000000..e31865b --- /dev/null +++ b/requirements/tasks/task-083.md @@ -0,0 +1,22 @@ +# task-082 + +Schist's desktop UI, in the Balances view, should have an option for showing +hidden buckets and for hiding and un-hiding buckets. + +Epic: epic-000 + +Source: ui-designs/desktop-views, req-068 + +Blocked by: task-082 | task-084, task-075 + +## Notes + +In the Balances view: + +- [ ] Add a checkbox to toggle showing hidden buckets +- [ ] Hidden bucket's names are in italics +- [ ] Hidden buckets have a un-hide button next to them +- [ ] Non-hidden buckets have a hide button next to them, which should initiate + a flow similar to that implemented in task-075 + +There are currently no UI designs for hiding and un-hiding buckets. diff --git a/requirements/tasks/task-084.md b/requirements/tasks/task-084.md new file mode 100644 index 0000000..27f908b --- /dev/null +++ b/requirements/tasks/task-084.md @@ -0,0 +1,23 @@ +# task-084 + +Schist's desktop UI, in the Balances view, should have an option for each group +of buckets. + +Epic: epic-000 + +Source: ui-designs/desktop-views, req-068 + +Related to: task-082 + +## Notes + +- [ ] Display a list of bucket balances as coloured bars, proportionate to the + amount flowing through the current pipe of each bucket +- [ ] Sort by the magnitude of each bucket's balance relative to the amount + flowing through the current pipe for each bucket +- [ ] Sort favourited and off-balance buckets to the top with a gap between + these and the rest of the buckets, if there are any + +Not in scope: + +- Hidden buckets: see task-083 |
