kennethwussmann / zeitraum Goto Github PK
View Code? Open in Web Editor NEWTime tracking with tags integrated in your workflow
License: MIT License
Time tracking with tags integrated in your workflow
License: MIT License
I noticed that multiple tags are combined to express a specific activity. It sometimes takes effort to remember the exact combination.
For example: life
, cleaning
, bathroom
In such a case, a quick activity could be lovely, which bundles multiple tags and a note together. Like a time span preset.
Example preset:
Name: Cleaning Bathroom
Tags: life
, cleaning
Note: Bathroom
TimeSpanPreset
. They hold an array of tags, an optional note, and a display name.TimeSpanPreset
s.Currently, it's required to start a server, so SOFA generates the OpenAPI spec on the fly. But that's rather inconvenient to just check the API. There is still the GraphQL schema one can just look at but some still prefer REST.
Also for @zeitraum/client
it could be helpful to have the TypeDoc online.
Build when the tag is published and upload to GH Pages.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
docker-compose.yml
postgres 15
prom/prometheus v2.43.0
Dockerfile
node 18-slim
node 18-slim
.github/actions/docker-publish/action.yml
docker/login-action v2
docker/build-push-action v4
.github/actions/npm-install/action.yml
actions/setup-node v3
.github/workflows/build.yml
actions/checkout v3
.github/workflows/dependencies.yml
actions/checkout v3
peter-evans/create-pull-request v5
.github/workflows/release-cli.yml
actions/checkout v3
wangyoucao577/go-release-action v1.38
.github/workflows/release-docker-develop.yml
actions/checkout v3
.github/workflows/release-docker-latest.yml
actions/checkout v3
.github/workflows/release-npm.yml
actions/checkout v3
changesets/action v1
packages/cli/go.mod
go 1.20
package.json
@changesets/cli ^2.26.1
@moia-oss/eslint-prettier-typescript-config 0.11.45
@types/jest ^29.5.1
@types/node 18.*
@typescript-eslint/eslint-plugin ^5.59.1
@typescript-eslint/parser ^5.59.1
@vercel/ncc ^0.36.1
eslint ^8.39.0
eslint-plugin-jest ^27.2.1
eslint-plugin-monorepo ^0.3.2
husky ^8.0.3
jest ^29.5.0
jest-mock-extended ^3.0.4
lint-staged ^13
npm-check-updates ^16.10.9
prettier ^2.8.8
ts-jest ^29.1.0
tsx ^3.12.7
turbo ^1.9.3
typescript 4.*
zx ^7.2.1
node 18
npm 9
packages/cli/package.json
packages/client/package.json
cross-fetch ^3.1.5
@graphql-codegen/add ^4.0.1
@graphql-codegen/cli ^3.3.1
@graphql-codegen/typescript ^3.0.4
@graphql-codegen/typescript-generic-sdk ^3.1.0
@graphql-codegen/typescript-operations ^3.0.4
@graphql-codegen/typescript-resolvers ^3.2.1
packages/commons/package.json
winston ^3.8.2
winston-daily-rotate-file ^4.7.1
zod ^3.21.4
packages/server/package.json
@apollo/server ^4.7.0
@graphql-tools/graphql-file-loader ^7.5.17
@graphql-tools/load ^7.8.14
@graphql-tools/merge ^8.4.1
@prisma/client ^4.13.0
dotenv ^16.0.3
express ^4.18.2
graphql ^16.6.0
graphql-scalars ^1.21.3
ical-generator ^4.1.0
lightship ^7.1.1
prom-client ^14.2.0
sofa-api ^0.16.3
zod ^3.21.4
@graphql-codegen/add ^4.0.1
@graphql-codegen/cli ^3.3.1
@graphql-codegen/typescript ^3.0.4
@graphql-codegen/typescript-resolvers ^3.2.1
@types/express ^4.17.17
@types/seedrandom ^3.0.5
date-fns ^2.30.0
prisma ^4.13.0
seedrandom ^3.0.5
.nvmrc
node 18
The zeitraum ls
command currently lists all time spans.
It would be nice to allow something like zeitraum ls work meeting
that returns only time spans that are assigned to at least work
and meeting
. If they are also assigned to a third daily
it should still return.
The backend allows filtering by tags already: https://github.com/KennethWussmann/zeitraum/blob/main/packages/server/src/api/graphql/schema.graphql#L30
To be verified if this needs adjustment to include the at least
logic.
Currently, running time spans without an end are not exported in iCal, but it would be better if they were so that one at least knows that something is tracking.
It could be written in the title that the time span is still active.
Every client should know it's version.
zeitraum version
and zeitraum -v
should return it's currently used version and the version of the server it's connected to.
Should have a constant that is built into the released package with it's version.
The server knows it's version already and also provides it via a query to clients, but it should also expose a query with all latest versions of the client & the CLI.
This will be useful for update and compatibility checks.
If you misspelled a tag, it will be forever in the DB.
Instead, they could be pruned on update & delete of time spans so they get deleted when they are no longer assigned anywhere.
Another option could be to offer update and delete operations for tags, but it sounds tedious to implement in clients for occasional use.
For a potential client, it could be helpful to know about the time spans in real time because time can be tracked by multiple clients.
Add a subscription for the timeSpans
query.
I didn't want to, but a frontend would be more comfortable than iOS Shortcuts.
The Shortcuts can't be edited easily; keeping them up-to-date is a mess.
Edit:
Resume:
I'd like to start and stop specific tag combinations via Stream Deck for quick tracking while working.
But maybe not be worth it because the CLI or HTTP API should be sufficient. Could still offer a better UX.
It would be nice to have an iCal export. This way, one can easily have an overview of what they spent time on that day.
The go table lib used for the list command can have a footer.
Write the sum of all durations of the list into the footer as total duration.
This way one could do queries like zeitraum ls work --today
to know how much they worked today. This specific example requires #43, but in general is independent.
Currently the CLI returns all the time spans (up to 1000) when using zeitraum ls
. Would be good to switch the default behaviour and only return the time spans of today, like the --today
flag already does. Then add a --all
& -a
flag that returns all time spans like before.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.