Add animated terminal demo + correct README to match the Flask output#1
Add animated terminal demo + correct README to match the Flask output#1Anioko wants to merge 2 commits into
Conversation
…output
The README documented a FastAPI app (uvicorn, Pydantic, app/routers, alembic,
openapi.yaml, ArchiMate typing), but microcodegen.py actually generates a Flask
app (app factory, blueprints, flask-sqlalchemy, JWT httpOnly cookies, db.create_all,
docker-compose Postgres). Every FastAPI claim was inaccurate. This rewrites the
README so every claim matches what the tool really emits, verified by a real run.
Adds:
- demo.svg — animated terminal demo (PRD -> running Flask app -> register/CRUD),
rendered from a real run, embedded inline at the top of the README
- demo.cast — the asciinema v2 cast (reproducible; `asciinema upload demo.cast`)
- demo.sh — one command that generates, boots, and walks the auth+CRUD flow
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 96824fc08e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Or just run the whole thing — generate, boot, and walk the auth+CRUD flow: | ||
|
|
||
| ```bash | ||
| ./demo.sh |
There was a problem hiding this comment.
Make demo.sh executable before telling users to run it
The README now advertises ./demo.sh as the one-command reproduction path, but git ls-tree cfc121ac390669395a9cddd62c39be48af6ab6e7 demo.sh shows the script is committed with mode 100644, so a fresh clone will fail with Permission denied when users run this exact command. Either commit the executable bit (100755) or document bash demo.sh instead.
Useful? React with 👍 / 👎.
| curl -s -b cookies.txt -X POST http://localhost:5000/api/projects/ \ | ||
| -H 'Content-Type: application/json' \ | ||
| -d '{"name":"My first project"}'; echo |
There was a problem hiding this comment.
Keep the demo PRD and CRUD endpoint in sync
The script accepts an arbitrary PRD path (./demo.sh path/to/prd.md), but the walkthrough always posts to /api/projects/. For any supplied PRD that does not define a Project entity, microcodegen will not emit project_bp.py, so this step returns 404 and the demo still prints “Done” because these curls do not use -f. Either restrict the script to the bundled task-manager PRD or derive the entity endpoint from the generated app before running the CRUD portion.
Useful? React with 👍 / 👎.
…files, not a skeleton) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Closing — superseded. While building this I discovered the canonical product is FastAPI, not Flask: the monorepo The real work landed elsewhere:
Recommend either syncing this repo's |
What & why
While adding a terminal demo for the Show HN, I found the README documents a FastAPI app, but
microcodegen.pyactually generates a Flask app. Every FastAPI-specific claim was inaccurate — and HN's audience will clone, run, and notice immediately.Verified against the real tool (
grepofmicrocodegen.py: 0 hits for fastapi/uvicorn/pydantic/openapi/ArchiMate; 28× Flask, 30× blueprint). The generated app's own README already correctly says "Flask + Postgres" — only the top-level README was wrong.Corrected
uvicorn main:app/alembic upgrade head→docker compose up/curl /api/health(the real flow)app/routers/,app/schemas/Pydantic v2,main.py,openapi.yaml,ARCHITECTURE.md, ArchiMate typing — none are emitted. Replaced with the real structure: app factory,app/blueprints/*_bp.py, flask-sqlalchemy models,config.py,wsgi.py,db.create_all, demo SPA page,GENOME.json.Adds
demo.svg— animated terminal demo (PRD → running Flask app → register → per-tenant CRUD → auth-refusal), embedded inline at the top of the README so it plays on GitHub without a click-through.demo.cast— the asciinema v2 cast (reproducible;asciinema upload demo.castfor an asciinema.org page).demo.sh— one command that generates, boots, and walks the full auth+CRUD flow..gitattributes— pins*.sh/*.cast/*.svgto LF so the script's shebang isn't corrupted on checkout.Dogfood check
Ran
./demo.shend-to-end from a clean clone: 25 files generated, Flask+Postgres booted in Docker, health 200, register issued a JWT cookie, project created scoped to the user, list returned only that row, and the API refused the no-cookie request. Every line in the demo is real output.