-
Notifications
You must be signed in to change notification settings - Fork 2
Possible Feedback On Time Tracking CLI Implemented In Rust #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thanks for reaching out, and I am flattered you are also watching
Unfortunately, I can't really test it out yet for a variety of reasons which I jolt down below. Please do know though that I am very interested, it just seems too early for me.
I also use it from my phone from time to time, but it would be acceptable to only use it on one machine at first. Having it sync across machines is a feature I'd pay for, along with a way to interact with data on a website. Self-hosting would of course be optimal, but such a tool if done right could be a product. Look at Clockify, and that's the 'best' I could find. They are so bad and steal my data, telemetry can't be opted out either. It's insane, to the point where I intentionally obfuscate messages because my time-tracker can't be trusted. Let's leave this issue open, maybe you can ping me here once my issues above are somewhat addressed so I can try to switch 🙏. Please do keep going :). |
Hey @Byron thanks for your early feedback! <3
Yeah, I understand that, currently it uses a toml file as a storage, because for the beginning I found it easy to use and it could be edited in a text editor, which I found quite important as well, for some use cases. It is locally saved, can be backed up and archived, by e.g. renaming the file. Currently the standard name is Currently an entry in the log file looks like this: [01HQXSQ6J231Q50MDPKGQ83CV9]
category = "Developer::Pace"
description = "Explain Piratricia pace"
begin = "2024-03-01T23:59:59"
end = "2024-03-02T16:07:55"
duration = 58076
kind = "activity"
tags = ["dev", "bla"]
status = "ended"
[01HQZRMCXDQZXDKTZSAFKW1JN0]
category = "Developer::Pace"
description = "Explain Piratricia pace"
begin = "2024-03-02T15:21:04"
end = "2024-03-02T16:06:52"
duration = 2748
kind = "intermission"
parent-id = "01HQXSQ6J231Q50MDPKGQ83CV9"
status = "ended" I already chose a format that will make it easy to adopt the whole infrastructure to a database. As the activity data are already being parsed into a
Importing existing data is one thing, that is on the to-do list, for sure. Do you happen to have some recommendations, which formats you are having in mind? I'm thinking of abstracting that away behind an
Having a toml file, currently, fulfils this, I would say. That being said, it's super helpful, that you state what you want to read on the front page, because the current readme is the one I started out with to track currently implemented features and commands. So I will for sure adapt that in the near future, when I overwork the documentation for users and devs.
Absolutely agreed 👍, it's definitely something I will implement rather sooner than later, because I see the need for that as well.
Also agreed, I implemented nearly 100 tests to this day. Especially for dealing with the The current testing strategy involves unit tests for a lot of things, integration tests for the main services ( The current test coverage is: For timezone switching, I will certainly have to still implement things, currently I only work with |
I am glad I could help a little.
This looks like an append-only file format which has advantages, as at worst it could write garbage to the end of the file leaving it un-parseable. But that can be fixed by hand so it's not a total loss. Concurrency also isn't a problem with typical user interaction as these appends would be so fast it's hard to interleave them with multiple processes/concurrent writes.
I truly think that using SQLite here would help, for one as rock-solid data store and for users to feel they have control over their data by default. Tools exist to introspect SQLite database, for example, it's easy to export to other formats as well. It's a whole ecosystem that then comes for free.
I think having a Rust API for it would be great! I can imagine contributing an implementation of such 'import module' for clockify then, should be easy enough.
Yes, I agree, a TOML file would qualify.
It's great to hear I was just missing them (as in: didn't find them).
It's really interesting that you use code-coverage in Rust. It's something I don't do at all, but rather, depending on the task admittedly, write tests first. In other cases, higher up the abstraction level, it's usually just one or two tests as fence-poles for typical usage, knowing the the Rust type system probably has you covered.
❤️🙏 |
Hey Sebastian,
fellow Berliner and
gitoxide
fan here :)I'm currently working on an activity tracking (and hopefully a future task, project, and time management tool) written in Rust. Some time ago, I was looking at your time sheets and found it impressive to have this level of transparency. For some future self-employment, I wanted to create a CLI activity tracking tool. It's called
pace
and is on crates.io:Currently, it's at the stage, where the base activity tracking and reporting is implemented (although I still need to implement the output to
csv
, which will come soon.json
output of a review summary is already supported).Some future vision for `pace` in short
implement HTML templating for
review
so people can export their activity logs to their own (and a premade) HTML template and print it as pdf, also they could create bills for customers like that (additional functionality for billable activities would be as easy as adding a new optional struct field to the activity log)create a
pace-server
after implementing logging toSQLite
so people could use pace on different devices and essentially self-hostimplement task and project management file based first, so pace would create a
projects.pace.toml
in a directory root and then people could create multipletasks.pace.toml
in lower directory hierarchies that reference the rootprojects.pace.toml
to have hierarchical tasks for e.g. monorepositoriesbased on the implementation of
tasks
we can then add pomodoro and other workflowsPomodoro requires a longer running process, so here it would be essential to implement a small GUI like
work-break
did, more like a notification pop-up that is able to handle the pomodoro sessionsafterwards it would be nice to expand support from individual use to team collaboration
I wonder if you would be able to test
pace
a bit and give some feedback from your perspective and use cases, so I can improve it. I think that would be really valuable to me. As I wrote it for people like you (and me).Until then, and thank you for your work on
gitoxide
,Simon
The text was updated successfully, but these errors were encountered: