Inspiration

Conferences are global, but the knowledge they produce is not. Every year thousands of brilliant talks are shared as slide decks — and almost every one stays locked inside the single language it was written in. As someone active in regional tech communities, I watched great local talks never reach a wider audience simply because of the language they happened to be presented in. The ideas were right there on the screen; most of the world just couldn't read them.

We named the project Hiravi — from the Japanese "hirari" (the light flutter of a sheet of paper) and "hiraku" ("to open"). A single slide, opened to the whole world.

What it does

  • Upload once, read anywhere. Drop in a PDF and Hiravi turns it into a web-native slideshow automatically translated into 75+ languages.
  • The original is never touched. Translations render as an optional overlay on top of the source slide, so layout, fonts, and visuals stay pixel-perfect. Readers can toggle Overlay, plain-text transcript, or Original.
  • Instant language switching. One click swaps the entire deck into the reader's language.
  • Effortless authoring. Sign in, drop a PDF, pick target languages — no reformatting, no re-exporting, no slide-by-slide copy-paste.
  • Shareable by design. Every deck lives at a clean, Google-Meet-style URL (/@username/abcdefghij); the UI itself is localized (English / Japanese).
  • A growing open library. Published talks join a shared, browsable gallery.

How we built it

Scaffolded with Vercel v0 and deployed on Vercel, with a fully serverless AWS backend in the Tokyo region (ap-northeast-1).

  • Frontend — Next.js 16 (App Router), React 19, Tailwind CSS v4, shadcn/ui. All AWS calls go through Server Actions. Deck pages use ISR and are revalidated by a webhook from the processing pipeline.
  • Auth — Clerk (OAuth + sessions; anonymous likes via signed cookie).
  • Upload — Browser uploads the PDF directly to Amazon S3 via a presigned POST, so large files never pass through Vercel functions. The size cap is enforced server-side by the content-length-range condition.
  • Async pipelineS3 → SQS → Lambda decouples the fast upload request from heavy processing. A Python 3.12 Lambda (PyMuPDF + Ghostscript layer) renders each page to WebP, extracts the text layer, and translates it through Amazon Translate (75+ languages, parallelized per slide × language).
  • Database — Amazon Aurora DSQL (multi-region serverless PostgreSQL). Tables: decks, slides, slide_texts (per-language), deck_likes. Connections authenticate with short-lived IAM tokens (@aws-sdk/dsql-signer) — no static DB password.
  • Infra as code — AWS CDK (TypeScript, 6 stacks). Observability via AWS X-Ray + Sentry.

Why Aurora DSQL (the AWS Database)

Track 3 is about apps built for millions of users worldwide, so the data layer had to be globally scalable and operationally near-zero. Aurora DSQL is serverless and multi-region, scales horizontally without managing instances, and speaks PostgreSQL so our schema and queries stayed familiar. We designed around its optimistic-concurrency model rather than fighting it: the Lambda retries 40001 serialization failures with exponential backoff instead of relying on locks. Array-like fields (tags, target_languages) use JSONB (DSQL has no TEXT[]), and indexes are created with CREATE INDEX ASYNC. The Clerk username is denormalized into decks so public deck/list pages resolve owners straight from DSQL with no external API call.

Challenges we ran into

  • Translating without destroying design. The breakthrough was treating translation as a separate reference layer in slide_texts, rendered as an overlay — the source images are never modified.
  • Keeping uploads fast under load. Direct-to-S3 presigned uploads + an SQS-buffered Lambda pipeline keep the request path light no matter how large or busy.
  • Optimistic concurrency in DSQL. Embracing OCC with retry/backoff instead of locking.
  • Clean, stable URLs. Random 10-letter slugs with 301 redirects from legacy title-based URLs.

Accomplishments we're proud of

  • A genuinely shippable product, not a demo: real auth, real async processing, real multi-region database.
  • Pixel-perfect translation overlays across 75+ languages.
  • A least-privilege, IaC-defined AWS footprint (scoped IAM, secrets in Secrets Manager, DLQ, tracing).

What we learned

  • Designing with a database's consistency model (OCC) instead of against it.
  • How far a serverless event-driven pipeline can go for heavy media + AI workloads.
  • Localizing a Next.js app via a cookie + Server Action, without per-locale route segments.

What's next for Hiravi

  • Human-in-the-loop translation review and glossaries for technical terms.
  • Speaker-notes and audio narration translation.
  • Embeddable decks and team/organization spaces.
  • More source formats (Keynote, PowerPoint, Google Slides).

Built With

Share this project:

Updates