Flappy Bird Made with HTML and CSS, No JavaScript
CSS-only Flappy Bird is a fun five-minute novelty with no practical use beyond the demo itself.

GPU rendering from scratch with wgpu and Vello instead of relying on Skia.
Systems programmers interested in browser internals
Servo · Ladybird · NetSurf
It currently implements a minimal end-to-end pipeline: parsing a narrow HTML subset, building a DOM tree, parsing CSS from style tags, computing basic styles, deriving a simple block layout tree, and painting the result into a small text framebuffer. It also includes basic HTTP/HTTPS fetching with redirect support.
JavaScript execution is integrated using the Boa JavaScript engine. This is still early, but simple scripts do run.
Rendering is done on the GPU from scratch using wgpu and Vello, without relying on Skia. The renderer uses a single atlas and a simple pipeline for batching and rasterization.
The goal is not to build a full browser, but to understand and implement the core pieces of the pipeline in a small and explicit way.
Next steps are improving tokenization, expanding CSS support, making layout less primitive, and continuing work on the GPU rendering path.
Current render snapshot : https://imgur.com/a/NtbgR5i
CSS-only Flappy Bird is a fun five-minute novelty with no practical use beyond the demo itself.
It skips headless Chromium entirely and implements an HTML/CSS-to-PDF pipeline in Rust, exposing a Python wheel and CLI that releases the GIL and uses Rayon for parallel batch renders. The deterministic bits — fixed-point base unit, --repro-record/--repro-check, SHA256 outputs and vendored assets — are a clear, practical play for audited VDP/transactional workflows; what's still unknown is CSS spec coverage and whether subtle print-layout quirks will require hand-holding.
Full chess game state in pure CSS—no JS—which shouldn't be possible.
Another gated founder community landing page with a pixel art rocket.
PicoCSS aesthetics at 3.8 KB with fewer variables and Open Props integration.
Embeds DOM selectors in markdown comments so scrapers don't need LLM on every run.