Skip to content
Black Bao Studio
accepting · Q3 / Q4 // est. Alicante

Websites, engineered like infrastructure .

We are a two-desk studio that ships curated, performance-obsessed sites. Vanilla TypeScript on the frontend. Go and Rust where it matters. Nothing bloated, nothing imported for show.

Perf budget Lighthouse 100 target
LCP target < 1.0s on 4G
JS budget < 15kb typical
Frameworks none, by design
curated deterministic observable hand-tuned css no trackers edge-deployed typescript-first go + rust backends
§ 01 · What we replace

Heavy stacks go out. Sharp ones come in.

01 Next.js marketing site Bun + vanilla TS
02 Webpack + babel Bun + esbuild
03 Styled-components Tailwind v4
04 Node + Express Go / Rust services
05 Firebase lock-in SQLite you own
06 GA + Segment + HotJar Plausible, one script
07 jQuery soup Typed, tree-shaken TS
08 Page-builder CMS Git-based content
§ 02 · What we build

Two halves. Engineering rigor and typographic taste.

01.A // technical

Platform & backend

Go services, Rust where throughput matters, PostgreSQL that behaves. Observability from commit one. Traces, SLOs, error budgets. Boring infra so the interesting work can ship.

  • Go / Rust APIs and workers
  • Postgres schema design & migrations
  • CI/CD, IaC, reproducible deploys
  • OpenTelemetry, Prometheus, Grafana
  • Edge functions, caching, queues
01.B // surface

Interface & front-of-house

Vanilla TypeScript. Tailwind. Every animation earns its frames. Every byte justifies itself. Sites that feel hand-tailored because they are, not spun out of a template generator.

  • UI/UX design, end-to-end
  • Marketing & product sites
  • Vanilla TS, no framework lock-in
  • Motion that respects reduced-motion
  • A11y and perf treated as features
§ 03 · Stack

Sharp tools. Few of them.

Surface

  • TypeScriptstrict
  • Vanilla JSnative
  • Tailwind CSSv4
  • Bunruntime

Platform

  • Goservices
  • Rusthot paths
  • PostgreSQLprimary
  • MySQLscale-out
  • SQLiteedge / embed

Ops

  • TerraformIaC
  • GitHub ActionsCI
  • Cloudflareedge
  • OpenTelemetrytraces
  • Grafana / Lokiobs
Rule of thumb
Start SQLite. Graduate to MySQL or Postgres only when load or ops demand it. Most marketing, CMS and portfolio sites never graduate.
§ 04 · Process

Four weeks. Four phases. Nothing in between.

W1 01

Discover

Audit what exists. Interview stakeholders. Map constraints, budgets, SLOs. Write the brief your team never had time to write.

W2 02

Design

Typography system, component primitives, interaction grammar. Design in-browser, not in static mocks. Ship prototypes by end of week.

W3 03

Build

Types, tests, telemetry. CI from the first commit. Daily deploys to staging. Perf budgets enforced, not aspired to.

W4 04

Handover

Runbooks, dashboards, postmortem templates. Your team inherits a repo they can run. Not a black box we have to babysit.

§ 05 · Principles

How we actually work.

  1. 01

    Performance is a feature.

    If it doesn't load on a three-year-old phone over a bad train connection, it isn't finished. We budget kilobytes and milliseconds the way other studios budget time.

  2. 02

    Fewer frameworks. Sharper code.

    Most sites don't need a 300kb runtime. We reach for vanilla first, add complexity only when it earns its keep, and keep dependencies auditable.

  3. 03

    Ship it like we own it.

    SRE habits come baked in. SLOs, dashboards, runbooks, on-call thinking. We hand over systems our clients can actually operate.

  4. 04

    Taste isn't optional.

    Typography, spacing, motion, copy. All engineered with the same care as the API layer. The surface is the product.

§ 06 · FAQ

Things we get asked every week.

Why no React / Next / Vue?

Because most websites are not applications. A marketing site, a docs hub, a portfolio. None of these need a client-side router and a 120kb runtime. Vanilla TypeScript plus a light static generator gets you to parity on features and beats anything framework-based on load time. When an SPA is genuinely the right tool, we will tell you, and pick one.

Can you work with our existing stack?

Yes. We have shipped inside Next.js, Laravel, Rails, Django, Flask, and a handful of in-house Go monoliths. The stack is a constraint, not a problem. We audit, fit in, and leave it tidier than we found it.

How small is "small"? How fast is "fast"?

Target: LCP under 1 second on 4G, total JS under 15kb on a typical marketing site, Lighthouse 100 across all four pillars on launch day. Real numbers, instrumented from staging, checked again every deploy.

Do you offer ongoing support?

Yes. Retainers for content updates, perf regressions, and on-call rotation. Most clients keep a small monthly envelope so we can ship fixes the day they are needed.

Pricing?

Fixed-fee per project, scoped after the discovery week. No hidden line items, no licence taxes, no per-seat tooling you inherit. If the scope moves, we re-quote before work continues.

Is AI writing the code?

We use LLMs like any other sharp tool. Scaffolding, boilerplate, reviews. The architecture, the taste calls, and the final byte you ship are human decisions. Nothing lands in main without a person behind it.

§ 07 · Say hello

Got a project that deserves better than a template?

Write to us

contact@blackbao.studio
Based
Alicante, ES
Timezone
UTC+1 / +2
Booking
Q3 / Q4 open
Languages
EN · ES · FR