lukas 7d46cc24b9 Design spec: typed custom-element + htpy-style HTML authoring
Brainstormed design for replacing the trusted HTML/JS f-strings (Alpine
selectors, @@TOKEN@@ played-row) with three composing layers:

- htpy-style sugar on the existing Element (kwargs attrs + [] children),
  additive, keeps Media/collect_media — no build step.
- Custom Elements (light DOM, TypeScript) for behavior, with the native
  connectedCallback lifecycle replacing the onSwap shim.
- A typed contract: one Python Props type per component, codegen'd into a TS
  interface + attribute reader, so server↔client drift fails `tsc`.

Toolchain: tsc per-module (no bundler, preserves per-component Media),
build-only/gitignored output, wired into make + Docker. Exemplars:
GameStatusSelector, SessionDeviceSelector, played-row. Alpine retired for
those three; existing .js migrated later.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:43:35 +02:00
2024-11-09 11:56:20 +01:00
2023-01-16 19:46:15 +01:00
2025-03-22 20:58:30 +01:00
2026-05-12 16:29:34 +00:00
2023-11-16 16:30:17 +01:00
2026-05-12 16:29:34 +00:00
2024-08-08 14:48:20 +02:00
2026-06-09 08:47:20 +02:00
2026-05-12 16:29:34 +00:00
2026-05-12 16:29:34 +00:00
2026-05-12 18:36:46 +02:00
2024-11-09 11:56:20 +01:00
2023-01-20 17:15:53 +01:00
2026-05-12 18:36:46 +02:00
2026-05-12 16:29:34 +00:00
2026-06-12 22:45:25 +02:00
2024-08-11 17:24:26 +02:00
2026-02-17 22:14:16 +01:00
2026-06-09 12:47:44 +02:00
2026-06-02 15:07:53 +02:00
2026-06-09 12:47:44 +02:00

Timetracker

A simple game catalogue and play session tracker.

Development

The project uses uv to manage Python versions and dependencies. Simply run:

make init

This installs the correct Python version, syncs all dependencies, and installs npm packages. Afterwards, you can start the development server using make dev.

S
Description
No description provided
Readme 15 MiB
2026-05-12 16:36:46 +00:00
Languages
Python 62.4%
JavaScript 17.5%
CSS 14.9%
HTML 3.8%
TypeScript 0.6%
Other 0.7%