No description
  • JavaScript 33.7%
  • CSS 30.4%
  • Python 18.5%
  • HTML 17%
  • Dockerfile 0.4%
Find a file
2026-10-12 10:10:22 +02:00
showcase_images Add showcase images for the repo readme 2026-10-08 11:26:16 +02:00
static Initial website 2026-10-08 11:04:23 +02:00
templates Fixed by making the delta not signed and only in the past like it should 2026-10-12 10:09:42 +02:00
.gitignore ignore update 2026-10-08 11:03:38 +02:00
app.py Fixed by making the delta not signed and only in the past like it should 2026-10-12 10:09:42 +02:00
config.json Initial website 2026-10-08 11:04:23 +02:00
docker-compose.yml Initial website 2026-10-08 11:04:23 +02:00
Dockerfile Initial website 2026-10-08 11:04:23 +02:00
LICENSE Initial commit 2026-10-08 11:01:47 +02:00
README.md Update README.md 2026-10-08 11:31:19 +02:00
requirements.txt Initial website 2026-10-08 11:04:23 +02:00

Made using an AI agent - not made to be exposed to the internet

💕 ThingsRadar

Track how long since you last contacted anything — people, projects, games, habits — organized in lists.

Run with Docker

docker compose up -d --build

Then open http://localhost:5050 — you'll land on the list index.

Navigate to any list by URL: http://localhost:5050/friends, http://localhost:5050/sports, etc. A list is created automatically the first time you add someone to it.

Features

  • Grid of cards — avatar (your URL or auto-generated via DiceBear if none provided)
  • Last Talked To and Last Seen IRL dates (date only, no time)
  • Border color gradient: green (recent) → orange → red (past threshold), configurable per-list via ⚙️ settings (default 14 days)
  • Multiple lists via routes: /<list_name> (e.g. /friends, /sports, /games)
  • Reversed mode — per-list toggle that flips colors (recent = red, old = green) and sort order (oldest first). Useful for things where recency is bad (e.g. "last time I had to fix this")
  • Card size — per-list setting (small / medium / big) controls how large cards are in the grid
  • Sortable: most recent contact (default), name A→Z, name Z→A, recently added
  • Search bar to filter by name
  • Duplicate name check — confirms before adding a name that already exists in the list
  • Responsive grid — compact cards on mobile (2+ per row)
  • Title is clickable — goes back to the home page
  • Click a card → detail modal with inline editing (name, image, dates, notes) and quick-action buttons: "💬 Talked Now" and "👁️ Seen IRL Now"
  • Add modal to input new people
  • Tags — add comma-separated tags to any entry, filter by clicking tag chips in the tag bar
  • Cute pinkish/red theme with emojis and ✨ sparkles on interactions
  • JSON storage — one file per list in data/, fully portable

Storage

data/
  friends.json
  sports.json
  ...
  _meta.json     ← per-list settings (threshold, reversed mode)
config.json      ← global defaults (dicebear style, site name, default threshold)

API

Method Endpoint Description
GET /<list_name> Grid page
GET /api/<list_name> All people in list
POST /api/<list_name> Add person
PUT /api/<list_name>/<id> Update person
DELETE /api/<list_name>/<id> Delete person
POST /api/<list_name>/<id>/talked/0 Mark talked today
POST /api/<list_name>/<id>/seen/0 Mark seen IRL today
GET /api/<list_name>/settings Get list settings
PUT /api/<list_name>/settings Update list settings (threshold_days, reversed)
GET /api/config Get global config
PUT /api/config Update global config

Without Docker

pip install -r requirements.txt
python app.py

Showcase

Showcase image 1 Showcase image 2 Showcase image 3