No description
  • Rust 82.5%
  • CSS 8.4%
  • Shell 5.1%
  • TypeScript 4%
Find a file
Robert Perce 5b06718e61
All checks were successful
/ test-and-build (push) Successful in 3m56s
/ trigger-deploy (push) Successful in 11s
feat: rudimentary page-refresh banner
2026-07-27 22:14:56 -05:00
.forgejo/workflows fix: deploy run number, not run id 2026-07-23 14:34:48 -05:00
e2e Initial commit; adaptation from mascarpone 2026-05-30 12:15:04 -05:00
migrations feat: stats and settings pages 2026-07-20 23:46:08 -05:00
src feat: rudimentary page-refresh banner 2026-07-27 22:14:56 -05:00
static feat: taller graph on stats 2026-07-23 14:24:05 -05:00
.gitignore Initial commit; adaptation from mascarpone 2026-05-30 12:15:04 -05:00
build.rs chore: update deps, clippy 2026-07-24 15:58:18 -05:00
Cargo.lock chore: update deps, clippy 2026-07-24 15:58:18 -05:00
Cargo.toml chore: update deps, clippy 2026-07-24 15:58:18 -05:00
CHANGELOG.md chore: update deps, clippy 2026-07-24 15:58:18 -05:00
cliff.toml Initial commit; adaptation from mascarpone 2026-05-30 12:15:04 -05:00
mise.toml Initial commit; adaptation from mascarpone 2026-05-30 12:15:04 -05:00
README.md feat: ability to hide underdue tasks 2026-05-31 22:02:32 -05:00
Taskfile feat: taller graph on stats 2026-07-23 14:24:05 -05:00

Entretien

It means "maintenance" in French.

I can't actually pronounce it correctly.


A task list for a relatively stable set of fundamentally-repeating task list, e.g., house cleaning and maintenance.

Live at https://entretien.dukeceph.xyz/. Log in with demo as both the username and password to check it out!

Contact me if you want an account there.

Features:

  • Supports daily, weekly, fortnightly, monthly, seasonal, semiannual, and yearly target cadences.
  • Sorts in-section by least-recently-done first.
  • Allows for bulk completion-entry.

Eventual planned features:

  • Review functionality wherein tasks' target cadences can be compared to their actual cadences.
  • Beeminder-consumable completion-stats view.

Development / self-hosting

  1. Clone the repo.
  2. Build for your system with ./Taskfile _cargo build --release.
  3. Deploy the binary from ./target/release/entretien to wherever you want that's in PATH (or use it from here if you want)
  4. In the working directory that you want the server to save its databases in,
    1. Create a user for yourself with entretien set-password YOUR_USERNAME. This will create a users.db file.
    2. Run mkdir dbs.
    3. Copy the hashed_static directory from the code repository.
  5. Run entretien serve [port] from that working directory. The default port is 3000.

Feel free to contact me if you need help.

Example systemd service file

[Unit]
Description=Entretien
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/local/entretien/
ExecStart=/usr/bin/entretien serve --port 6234
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target