// project · /catalog · production · type=website
Check Duty
Tap counter. PWA, local-first, calendar-aware.
entity
────────────────────────────────────────────────────────────────
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: duty
title: Check Duty
tags: [react, typescript, vite, vitest, cloudflare-pages, pwa, local-first, calendar-aware]
spec:
type: website
lifecycle: production
owner: anil-ardic
system: anilardic-portfolio
dependsOn: [Component:ai-startup-tycoon] annotations
────────────────────────────────────────────────────────────────
- anilardic.com/repo
- /home/anil/projects/utilities/duty
- cloudflare.com/pages-project
- duty
links
────────────────────────────────────────────────────────────────
notes
────────────────────────────────────────────────────────────────
v0.1 PWA scaffold: domain types + state shell + service-worker registration are in. Discriminated-union Cadence (one-shot · daily · weekly · monthly · islamic · lifetime) ready for the new-duty form (T1) in next sprint. Inspired by ai-startup-tycoon for SW idiom, CSP, save/load shape, and dark UI tokens — dependsOn relationship is genuine.