cavite-mutiny-meme is a humour-first web app that generates witty, humorous memes about The Cavite Mutiny of 1872, captioned in Taglish (a combination of Tagalog and English), and delivers each meme as a downloadable image. The product treats a historical grievance with affectionate, witty irreverence — the opposite of a museum plaque — for an audience of young Filipino internet users who think in Taglish, share memes in group chats, and expect an app to be a toy, not a tool.
The app serves two accepted audiences:
Product intent, in priority order: (1) a meme generator that turns a Taglish caption plus a chosen template into a rendered meme image; (2) a ready-made gallery of Cavite Mutiny memes that people can browse and share; (3) a humorous, witty tone throughout; (4) Taglish captions; (5) the Cavite Mutiny of 1872 as the subject matter; (6) image output the user can download.
The current delivery is a custom-UI web application with three pages — Landing, Meme Generator, and Gallery — all reachable anonymously (access_requirement: none). There is no account, login, or identity requirement anywhere in the accepted scope; the app is a toy, not a tool, and every accepted journey completes without establishing identity.
Current accepted behavior:
Actors:
Narrow exclusions (binding):
Delivery ownership. All three pages are first-party, application-owned custom UI. The app owns the caption input, the template picker, the live meme canvas, the render step, the download action, and the gallery of ready-made memes. The only non-first-party surfaces are the browser's own download and share affordances, which the app invokes but does not own.
Access ownership. Every accepted page is anonymously reachable. No accepted journey requires a user to establish identity, sign in, or resume durable actor-specific state; the app therefore has no login, signup, or account surface, and none is inferred. Durable state that does exist is product content (the ready-made gallery and the template set), not per-user state.
Current vs. future. Everything in this document is current. No future-horizon requirements were accepted in the authoritative thread; the only forward-looking material is the user's original one-off request for a single meme image, which is fully satisfied by the current generator and download workflow.
Tone boundary. Humorous and witty is a hard constraint on captions, sample content, and copy — not a licence to add adjacent social, commenting, or community features, none of which were accepted.
Not applicable — no reference directive in this project declares content_source, so no source content inventory is rendered.
Gumawa ng Meme (primary pill, #FF2D8A) → Meme Generator. Tingnan ang Gallery (outlined pill in ink) → Gallery.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Generate a Cavite Mutiny meme image from a Taglish caption and a template (explicit) As a Meme Creator, I should type a Taglish caption and pick a template, and the app should render the meme image, so that I get a witty Cavite Mutiny meme as an image.
FR-2 — Download the generated meme image (explicit) As a Meme Creator, I should download the generated meme image, so that I can share it in a group chat.
FR-3 — Browse a ready-made gallery of Cavite Mutiny memes (explicit) As a Meme Browser, I should browse a ready-made gallery of Cavite Mutiny memes, so that I can enjoy and pick memes without making one myself.
FR-4 — Share a ready-made meme (explicit) As a Meme Browser, I should share a meme from the gallery, so that other people receive it.
FR-5 — Understand the product before interacting (required_inference) As a Meme Creator or Meme Browser, I should understand on first arrival that this is a Taglish, humorous Cavite Mutiny of 1872 meme generator with a ready-made gallery, so that I know what to do next.
Gumawa ng Meme, Tingnan ang Gallery) are visible and reachable.FR-6 — Captions are Taglish (explicit constraint) As a Meme Creator, my caption should be Taglish — a combination of Tagalog and English — so that the meme lands with the audience it is written for.
FR-7 — Meme subject matter is the Cavite Mutiny of 1872 (explicit constraint) As a Meme Creator or Meme Browser, every template and every ready-made meme should depict the Cavite Mutiny of 1872, so that the product stays on its subject.
FR-8 — Humorous and witty tone (explicit constraint) As a Meme Creator or Meme Browser, the captions, sample content, and copy should be humorous and witty, so that the product reads as a toy rather than a museum plaque.
Gumawa ng Meme pill (#FF2D8A). The pill squashes 4% and springs back.Tingnan ang Gallery pill, outlined in ink. The pill squashes 4% and springs back.The creative direction is authoritative for this section. Muse: Karim Rashid — sensual pop minimalism for history's most extra mutiny. Headline idea: history's most extra mutiny, rendered as candy-coloured pop.
Colour tokens — light mode
| Role | Hex | Use |
|---|---|---|
| Background | #FF6FB5 | Hot bubblegum pink — the dominant ground, not a white page. Everything sits on colour. |
| Surface | #FFF7FB | Near-white blush — reserved for the meme canvas and panel interiors so captions stay readable. |
| Text | #1A0B14 | Ink-plum — the only text colour. |
| Primary | #FF2D8A | Primary action colour (Generate, Download) and the soft offset shadow at 12% opacity. |
| Accent | #B6FF3C | The single hot accent — sticker/tag layer, hover highlights, and the lime capsule in the headline. |
| Muted | #7A2E57 | Secondary labels. |
No blue, no indigo, no gradient blobs — flat glossy colour fields with a white specular highlight.
Typography
clamp().Shape language
#FF2D8A at 12% opacity.Layout
Imagery
Readability rule (takes precedence over every decorative gesture): headlines, wordmarks, labels, numbers, and cards' text and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, and no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control. Moving and scrollable content (the punchline marquee, the template strip) may cross the viewport or container edge by design; every item must become fully readable as it passes. Under prefers-reduced-motion, provide a usable static arrangement — wrap items into rows or allow horizontal scrolling so each item can be brought fully into view.
The toy slab on a hot-pink field.
The public entry is a hot-pink #FF6FB5 field, not a white page. A 112px Baloo 2 headline in #1A0B14 runs edge-to-edge across the upper half — "1872 CAVITE MUTINY, PERO MAKE IT MEME" — with the word MEME set in a #B6FF3C lime capsule that breaks the line and interrupts the baseline. Below and to the right, a single meme card floats tilted −4° on a curved blush #FFF7FB panel, already showing a sample Taglish caption, with two capsule CTAs pinned beneath it: Gumawa ng Meme in #FF2D8A and Tingnan ang Gallery outlined in ink.
The concept carries through the whole product as one gesture: the working surface is a physical toy slab you decorate. On the Meme Generator, the meme canvas lives inside a sticky blush panel with a 48px radius and a soft offset pink shadow, so the canvas reads as an object you are handling rather than a form you are filling. The template picker is a horizontally scrollable strip of tilted, sticker-shaped thumbnails (3–6° rotation) that wobble into place on selection — never a grid of identical cards. A curved 120px-radius arc divides the pink hero from the blush gallery section, with a lime marquee of Taglish punchlines ("grabe naman ang 1872", "chismis era") scrolling along the seam. Every action button is a full pill that squashes 4% on press and returns with a spring — while the exported meme itself stays a clean rectangle so it looks native in a group chat.
At 375px the headline stacks to 40px, the card sits below it at full width, and both CTAs become full-width pills.
This concept recomposes only accepted content, states, and controls: the headline, the sample Taglish caption, the two CTAs, the template strip, the canvas, the Download pill, the gallery masonry, and the punchline marquee.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
No 3D/WebGL scene is required: the direction specifies layered_2d hero dimensionality, so no Canvas/R3F/Drei dependency is mandated.
prefers-reduced-motion, the curved colour-block wipe and the button squash must be removed, leaving only instant state changes, and moving or scrollable content must provide a usable static arrangement in which every item can be brought fully into view. Rationale: creative-direction motion rule.#FF6FB5, #FFF7FB, #1A0B14, #FF2D8A, #B6FF3C, #7A2E57) and fonts (Baloo 2 for headings, Quicksand for body) must be used as specified, with no blue, indigo, or violet primary/accent, no white or near-white page backgrounds, and no Inter, Roboto, Poppins, Arial, or system-ui for headings or body. Rationale: explicit creative direction and user design constraints.No technology choices were specified by the user. The following are coherent defaults for the accepted scope, labeled as defaults.
[Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user]Kubernetes is not required for the accepted scope.
Assumptions
[Assumption — from Planning Scope][Assumption — required_inference from the absence of any accepted identity-bound journey][Assumption — no user submission capability was accepted][Assumption — no in-app social or messaging capability was accepted][Assumption — from the creative direction's imagery specification]Constraints
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!