Skip to content

Instantly share code, notes, and snippets.

@senko
Created March 21, 2026 16:08
Show Gist options
  • Select an option

  • Save senko/b5d2da3557353f8567ad38e51a200d18 to your computer and use it in GitHub Desktop.

Select an option

Save senko/b5d2da3557353f8567ad38e51a200d18 to your computer and use it in GitHub Desktop.
Pingu website checker initial prompt

First let's scope this out:

  1. internal tool - login (username+password), but no registration; no "reset password" flow either, I can always access the db manually if I really need to
  2. nice, simple, functional web interface to list web URLs that are checked, with their status (up or down) and last check, ability to add, modify or remove checks. on details of every check, show checks history for the past 24h and availability chart for longer periods in the past.
  3. for each config: 1. url to hit, 2. method (default is GET); 3. headers (if any); 4. body (if method is POST or PUT); allowed statuses (tags/labels with multiple select or can be manually entered; default 200, 201, 204); timeout (default 10s)
  4. tech : backend: python (use "uv" for managing the project), django for backend, use sqlite for database. django management command that will run every minute and should run the checks (the checks themselves should be in parallel to avoid spending too much time, so use async for just that small part - everything else, use standard sync stuff). use httpx, not requests. configuration should be via .env, using python-dotenv, and then django's settings.py should populate from the env instead of hardcoding (provide an .env.sample).
  5. backend tests/checks: use ruff for linting and formatting, ty for type checks (use type hinting whenever feasible). use pytest (with coverage plugin). write comprehensive test. use red/green tdd (for each feature, first implement a relevant test, ensure it fails, implement it, check that test succeeds). use "prek" (rust fork of pre-commit) so that ruff, ty and tests are run before each commit. Also set up GitHub actions yaml for CI/CD.
  6. frontend: server-side rendered django templates, using tailwind css for styling - nice, modern, clean, sleek design. design should be responsive so I can use it on a full-hd screen, on mobile phone, and on everything in between.
  7. docs: provide a README with a general description, quickstart, how to run tests, etc. Document the config in .env.example. Document the architecture in doc/ARCHITECTURE.md; also in doc folder, provide examples for systemd service (for web) and timer (for checks every minute) files.
  8. misc: this is only for our internal use (small team), for a dozen or so sites, scalability is not a concern, high-availability is not a concern (I don't worry if both this and the actual prod servers will fail over at the same time).

This is the initial idea, now I want to create a specification (covering both the functional product requirements, and technical requirements). Carefully analyze this, and let me know if you have any questions - any ambiguities, potential standard stuff that should or should not be included, etc?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment