← Back to projects

Two Tongue Tales

personalised bilingual storybooks, built solo for a client in Singapore.

freelance, sole developer, client project

A client in Singapore wanted a way for parents to turn a real family memory into a keepsake-quality storybook their kid could read in two languages at once. I built it end to end, on my own, from a v0 scaffold into a real product flow.

twotonguetales.co

the flow

  1. sign in

    An email claims one free story credit. No account wall before you've seen the thing work.

  2. create

    The parent enters the child's name, age range, and target language (English plus 8+ others), uploads a photo for character consistency, and describes the memory.

  3. generate

    The engine turns that into a 10-page bilingual storybook, illustrations and narrative sized to the child's age.

  4. preview & edit

    Text can be edited and images regenerated before anything gets finalised.

  5. order

    Save it digitally, or order a print-on-demand softcover ($39.90) or hardcover ($59.90).

the mood

The client's reference point was warm, kid-friendly, closer to a picture book than a SaaS dashboard. A custom OKLCH palette and Geist type carry that through every screen, from the create flow down to the final printed spread.

Warm illustrated countryside scene with a cottage, a winding path, and a bright sun
the illustration style the client wanted to hit
An open storybook with colourful illustrations of children in a garden
the end product: a real, printed keepsake

what I actually built

Next.js App Router underneath, Zustand with localStorage persistence carrying auth state and in-progress drafts across the multi-step flow, and shadcn/ui for the component layer. Being the only developer on a client project means the design system, the state model, and the page-by-page flow all had to hang together with nobody else around to catch the seams.

Next.js 15, TypeScript, Tailwind CSS v4, Zustand, shadcn/ui