Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Development Roadmap

010-klepsidra_development_roadmap.livemd

Development Roadmap

Outline

  1. Release 0.1.3 <== Current
  2. Release 0.1.4 <== In development
  3. Release 0.1.5
  4. Release 0.1.6
  5. Release 0.2
  6. Release 0.3
  7. Someday/maybe

Release 0.1.3

Ensure all code works, that any obvious bugs have been quashed.

  • [X] Tagging projects
  • [X] Tagging journal entries
  • [X] Make it possible to drill into the tag from the live component
  • [X] Provide ability to set new tag colour when creating freeform tag in live component
  • [X] Improve search functionality to perform fuzzy query directly in the database
  • [X] Develop ability to cope with temporary data structures, before an entity has been created
  • [X] Reformat timer listing display to a more useful format, relegating full description field to a popup box or tooltip, showing only a truncated version spanning at most two lines
  • [X] Change date display to more informative format
  • [X] Allow stopping a timer from timer ‘show’ view
  • [X] Changing the tag selection in any way on a modal screen should send back a message only if it’s inside a show view which also has a tag selector in it

Release 0.1.4

Implement basic trip tracker functionality, recording how many days have been spent in each country or block, with particular regard to visa regulation regimes.

  • [X] Creation of quotes and citations of wisdom entity
  • [X] Meaningful display of quotes in a prominent place
  • [X] Develop a more generic patch of phoenix_live_head, and push as a PR, for the library to be extended upstream.
  • [ ] Create new feature, recording time spent in economic territories/countries, for nomads, showing how close to limit they are, according to the prevailing legislation
    • [ ] Create users entity
    • [ ] Create user_preferences entity
    • [X] Create document_types entity
    • [ ] Create documents entity
    • [ ] Create notifications entity
    • [ ] Create trips entity
    • [ ] Create visa_types entity
    • [ ] Create visas entity
    • [ ] Create visa_blocks entity
    • [ ] Create country_visa_blocks entity
  • [ ] UI and UX improvements
    • [ ] Display tags for open and closed timers, on timer listings
    • [ ] Restyle timer listings, giving more visual value to the time recorded, rather than the times the timer was started and stopped
    • [ ] On timer note timeline, next to the created_on date, display the updated_on date in a visually highlighted way, showing that a note was edited and when
  • [ ] Today view
    • [ ] Provide daily navigation facility: back and forward a day; jump to today
  • [ ] Timer reporting and analysis
    • [ ] Develop tag-based filtering in the reporting view
    • [ ] Report on aggregate time spent, or timed, by tag, reporting on tag show page
    • [ ] Report on aggregate time spent by activity type, reporting on activitytype _show page
  • [ ] Debugging
    • [ ] There seems to be an issue when the last tag has been removed from an edit view, and a new one is manually added in the show view, where suddenly both are attached to the entity, only temporarily, on the show view (still recorded somewhere in component)

Release 0.1.5

Audit all existing code for documentation quality, documenting missing functionality; ensure all functionality has type specifications; ensure all backend functionality has at least basic unit tests defined; add property tests where relevant.

  • [ ] Add field(s) to projects
    • [ ] End date, project review date, deadline date, etc.
    • [ ] Completed, completion notes, type of completion, e.g. finished, cancelled, deprioritised, etc.
  • [ ] UI and UX improvements
    • [ ] Ensure a second warning message is displayed to the user, ensuring they truly understand the impact of deleting a timer with notes attached
    • [ ] Look for good UX examples, as this is likely to become a UX annoyance, more than a saviour of data loss

Release 0.1.6

Implement a notes functionality, where users can record snippets of any thoughts, information needed for later, inspirations, and any other information deemed useful for the future.

The inspiration for this feature, most directly, is TiddlyWiki.

> TiddlyWiki, a unique non-linear notebook for capturing, organising and sharing complex information

What is incredibly useful about this software is that these snippets can be opened alone, together with other tiddleres, which can be expanded or collapsed, or closed entirely at any time.

  • [ ] Create notes functionality
  • [ ] Develop full-text search
    • [ ] Enable SQLite notes fields full-text search (timers, business partners, projects)
    • [ ] Enable SQLite description fields full-text search (tags, projects)

Release 0.2

By this point, the application is not only fully self-hosted, but can also be used by a wider range of users—it is not yet widely usable, but is acceptable to power users and those willing to be active testers of the system.

During the lifetime of this release, adopt one consistent UI component system, converting the application to using it. Fully audit the entire user interface, unifying it in a new direction, ensuring the system is consistent and visually easy to use.

  • [ ] Audit other timers for strengths and weaknesses
  • [ ] Permit pausing and resuming timers; add forward-pointing field to next timer, like a linked list
  • [ ] Extend tagging functionality
    • [ ] Provide way to deactivate old tags
    • [ ] Make it possible to merge tags which are similar, where having both starts causing complications
    • [ ] Develop way to create tag hierarchies
  • [ ] UI/UX improvements
    • [ ] Select a UI component framework, to aid in the building of a modern web app
    • [ ] Resize datetime, duration and duration unit controls to more efficiently use space
    • [ ] Redevelop all series 0.1.x views, modularising displays into reusable components
    • [ ] Improve on cryptic or incomplete UI error messages
    • [ ] Calculate duration of open timers, client-side, updating continuously
    • [ ] Replace timer listing description pop-up (title attribute), with a proper HTML-formatted popover component

Release 0.3

  • [ ] UI/UX improvements
    • [ ] Incorporate Gov.uk Design System (https://design-system.service.gov.uk/) accessibility and user interface/experience decisions, starting from input controls
    • [ ] Start implementing colour palette
    • [ ] Improve presentation of currency fields; at present they use an input control of type ‘number’ which is unintuitive UX
  • [ ] Look into default timestamps() fields; it appears that datetime stamps are in UTC, where local timezone may be preferable
    • [ ] This is most specifically important for timestamps recorded for notes and activities, where the times reported may be relied on by users

Someday/maybe

Multitasking

One major area at which web applications fall short is multitasking; in the desktop paradign, we have been trained to enjoy the ability to run multiple programs side by side, and to open windows next to each other for cross-reference. Web apps cannot do this, and usually—at best—only provide modal content as an attempt at a solution.

Logseq provides a real alternative to this problem, taking its cue from TiddlyWiki: it opens a permanent sidebar, which can be populated with any kind of content. This content can be stacked up endlessly, any or all items can be minimised to reduce clutter, and any and all can also be closed. The sidebar stays populated with the option of choice for the duration of the session.

  • [ ] Multitasking

    • [ ] Provide a sidebar in which any type of content, and any number of entitits can be openedo Once opened, this content lives in the sidebar for continues reference; any item can be minimised or closed (‘Logseq: A Privacy-First, Open-Source Knowledge Base’).
    • [ ] This sidebar is a permanent companion to the app. Whichever area of the system people are in, the sidebar is present (though it can be hidden), with the information previously opened in it (‘Logseq: A Privacy-First, Open-Source Knowledge Base’.).
  • Start creating an undo feature, reducing reliance on confirmation dialogs, particularly for deletions

    • Build an audit trail-like functionality, to be able to undo any deletion or modification, at any time, as well as to see a history of actions taken
  • Document truncate and markdown_to_html functions

  • Markdown and other markup languages

    • Provide ability to use other popular markup languages: Org-mode, TiddlyWiki, etc.
    • Refactor conversion of plain text to Markdown everywhere; should interpretation happen at table layout level, or earlier at query level?
    • Create a dedicated field to markdown text, and another for HTML, to improve performance, by not requiring just in time mardown interpretation
  • Expand role of activity types beyond the hour rate, to act as a rigid categorisation for major types of activities, which cannot be entrusted to tags only, e.g. exercise, learning, professional development

    • Automate billable, duration unit measurements, and tags within it; selecting this on an activity should automatically adjust these attributes on a timer
  • Security improvements

Interface

  • [ ] Develop keyboard shortcut functionality for an improved power-user interface
  • [ ] Develop command-line interface, providing another input method for power users
  • [ ] Develop voice recognition interface, making it possible to use aspects of the application in circumstances where a keyboard doesn’t exist (watches), or is impractical (phones), or merely undesirable (tablets)
  • [ ] Develop self-contained version of the app—LiveView Native—packaging it as a macOS desktop app, and an iOS iPhone and iPad app, with a potential iWatch app where timers can be quickly started and stopped

References

  1. logseq. ‘Logseq: A Privacy-First, Open-Source Knowledge Base’, 29 July 2024. https://logseq.com.