Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build and deploy a small but real application on Cloudflare Workers (or Pages + Functions) using Wrangler. It must use at least two storage primitives correctly for their consistency model — e.g. KV for read-heavy config/cache (eventually consistent), D1 (SQLite) for relational data, R2 for file storage, or a Durable Object for strongly-consistent state (a counter/rate-limiter/chat room). Handle requests in the fetch handler with Web-standard APIs, store secrets via wrangler (not in code), and deploy globally. Explain WHY you chose each storage product (consistency, access pattern, cost).
Runs on Workers (isolates); fetch handler + Web-standard APIs; bindings via env; secrets via wrangler, not hardcoded; deploys cleanly.
2+ storage primitives used appropriately for their consistency/access model (KV eventual vs Durable Objects strong; D1 relational; R2 objects); choices justified.
The app actually works end-to-end and is deployed globally; sensible error handling.
Explains consistency/cost trade-offs behind each storage choice.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# An edge app on Workers with storage ## Goal Build and deploy a small but real application on Cloudflare Workers (or Pages + Functions) using Wrangler. It must use at least two storage primitives correctly for their consistency model — e.g. KV for read-heavy config/cache (eventually consistent), D1 (SQLite) for relational data, R2 for file storage, or a Durable Object for strongly-consistent state (a counter/rate-limiter/chat room). Handle requests in the fetch handler with Web-standard APIs, store secrets via wrangler (not in code), and deploy globally. Explain WHY you chose each storage product (consistency, access pattern, cost). ## Acceptance criteria - [ ] Workers correctness: Runs on Workers (isolates); fetch handler + Web-standard APIs; bindings via env; secrets via wrangler, not hardcoded; deploys cleanly. - [ ] Right storage choice: 2+ storage primitives used appropriately for their consistency/access model (KV eventual vs Durable Objects strong; D1 relational; R2 objects); choices justified. - [ ] Functionality: The app actually works end-to-end and is deployed globally; sensible error handling. - [ ] Reasoning: Explains consistency/cost trade-offs behind each storage choice. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.