Time your activities to bill clients, and understand where your time goes.
Klepsidra is an activity timer for freelance service providers, agencies, developers, and others providing services quoted and billed in time taken. Use it to time activities, for internal use and analysis, and for client billings.
Install Elixir, clone this repository, then change into its directory.
To start your Phoenix server:
- Run
mix setup
to install and setup dependencies - Start Phoenix endpoint with
mix phx.server
or inside IEx withiex -S mix phx.server
Now you can visit localhost:4000
from your browser.
Ready to run in production? Please check our deployment guides.
- Review aggregate duration query and code, for refactoring opportunities, possible error conditions which need to be handled, code documentation and typing
- Debugging
- When starting and stopping timers, override internal 'patch' command, returning user to where they instigated the action (home page)
- When starting an automated timer and
billable
has been selected, do not show the billing duration or time increment
- UI improvements
- Add number of timers tracked on 'today' view in home screen
- When starting/stopping/adding/modifying timer on home screen, live update number of timers and total time tracked
- Correct all entity view titles
- Correct all entity button labels
- Correct business partner titles and labels to 'Customers'
- Update tag list sorting to case-insensitive alphabetical
- Implement list sorting on entities: projects, business partners, activity types, etc.
- Business partner should be visible and accessible even when
billing
is false - Provide a 'today' view
- Open timers needing closing
- Widen app width from
max-w-2xl
to full width
- Provide reporting
- Filter: by customer; tags; date range
- UI improvements
- Select a UI component framework, to aid in the building of a modern web app
- Improve on cryptic or incomplete UI error messages
- Resize datetime, duration and duration unit controls to more efficiently use space
- Start implementing colour palette
- Improve presentation of currency fields; at present they use an input control of type 'number' which is unintuitive UX
- Tagging UX improvements
- Make it possible to drill into the tag from the live component
- Provide ability to set new tag colour when creating freeform tag in live component
- Document tag selector live component
- Improve search functionality to perform fuzzy query directly in the database
- Develop ability to cope with temporary data structures, before a timer has been created?
- Look into default
timestamps()
fields; it appears that datetime stamps are in UTC, where local timezone may be preferable- Specifically for timestamps recorded for notes
- Full-text search
- Create a full-text tag search
- Begin adding keyboard shortcuts for an improved user interface
- Enable SQLite notes field full-text search
- Start enabling full-text search on other relevant database fields
- Reformat listing display to a more useful format, removing description field to a popup box or tooltip; change date display to more informative format
- Change data defaults for duration to nil, and no duration time units until clocking out
- Break down and list all ultimate desiderata for an activity timer
- Test on month-first locales
- Test on 12-hour clock locales
- Do all browsers return a 'T' delimited datetime-local stamp? Do both delimiters need to be handled? According to the standard, yes
- Official website: https://www.phoenixframework.org/
- Guides: https://hexdocs.pm/phoenix/overview.html
- Docs: https://hexdocs.pm/phoenix
- Forum: https://elixirforum.com/c/phoenix-forum
- Source: https://github.com/phoenixframework/phoenix