Skip to main content

Terminal-native billable ledger for solo developers

Project description

TTD

Terminal-native billable ledger for solo developers who invoice by the hour.

Install

PyPI distribution: ttd-ledger. CLI command: ttd.

uv tool install ttd-ledger
ttd --help

One-off: uvx ttd-ledger.

Quick start (development)

just setup
prek run --all-files
uv run ttd

Development

Command Purpose
just setup Install dependencies (uv sync) and git hooks (uv run prek install)
uv sync Install dependencies only
prek install Install git hooks only
prek run --all-files Run all checks (same as CI)
uv run ttd CLI (Rich tables; health check by default)
just db-seed Seed local DB with demo clients, projects, and entries
just release-smoke Build wheel/sdist and verify ttd from the artifact
just release Full checks + smoke, then trigger GitHub Release workflow
uv run ttd-api Litestar API (scaffold)
uv run ttd-tui Textual TUI (scaffold)

Release (maintainers)

One-time setup

  1. PyPI project — Register ttd-ledger (name must match project.name in pyproject.toml).

  2. Trusted publishing — On that project: PublishingAdd a new pending publisherGitHub:

    Field Value
    Owner syn54x
    Repository ttd
    Workflow name release.yml
    Environment pypi
  3. GitHub environment — Repo SettingsEnvironments → create pypi (no secrets required for OIDC).

  4. GitHub PagesSettingsPagesSource: GitHub Actions.

Pre-release check

just release-smoke

Builds the wheel/sdist and runs ttd --help from the artifact (same layout CI publishes).

Publish

  1. Complete one-time setup above.

  2. Merge to main with conventional commits since the last tag.

  3. From a clean, pushed main:

    just release
    

    Runs CI checks, release-smoke, then triggers the Release workflow (cz bump, PyPI publish, GitHub Release, docs deploy).

    Watch progress: gh run watch --workflow release.yml

  4. Smoke test after publish:

    uvx ttd-ledger --help
    uv tool install ttd-ledger
    ttd
    

Roadmap

Milestone sequencing and v1 scope: docs/roadmap.md. Product direction: STRATEGY.md.

Architecture

  • ttd.core — async domain services and SQLite (ferro-orm)
  • ttd.cli — cyclopts CLI adapter
  • ttd.api — Litestar API adapter (scaffold)
  • ttd.tui — Textual TUI adapter (scaffold)

Domain logic lives only in ttd.core. Surfaces are thin adapters.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ttd_ledger-0.1.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttd_ledger-0.1.0-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file ttd_ledger-0.1.0.tar.gz.

File metadata

  • Download URL: ttd_ledger-0.1.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ttd_ledger-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2a3c10af2622aeac31a1655823a6d810ee4c15c7f31602f03c67cc890f81becd
MD5 801b450874bd20395ea6ed6d5282b1f7
BLAKE2b-256 81658100515919114cc795e33aa6cd470e3f2153b49e89342c9375c0ff91bc65

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttd_ledger-0.1.0.tar.gz:

Publisher: release.yml on syn54x/ttd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ttd_ledger-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ttd_ledger-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ttd_ledger-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae756f0555112e0d42348c77990882f3e7c2a35f5b5c60768b0af885143982b6
MD5 db31f70f70b233a15b95e7f581a6034a
BLAKE2b-256 48e0f3963d489dbccaff8ae5ba3848c7366a31b3f27b81900d1ce39e00cffdf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ttd_ledger-0.1.0-py3-none-any.whl:

Publisher: release.yml on syn54x/ttd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page