Skip to content
Bold
Banana
Back to portfolio

Bold Banana Agency Platform

Type label
internal project
Status
in build
Languages
PL (default) and EN
Routes in the router
13 — each in both languages
Off-palette colours
0 — the gate blocks them
Brand key visual: a dense collage — a camera lens in motion, screens full of design panels, yellow tape reading MAKE NOISE, a sticky note reading BE BOLD OR BE IGNORED and the huge BOLD BANANA wordmark in the middle.
A brand key visual, not a screenshot of the platform — the screens in the render are set dressing, not this site's interface. The working version is one link below.

Goal

The website has to do what we sell: run two languages without duplicating content, hold a single brand system, and refuse anything we could not defend. It is the studio's shop window and its first portfolio project at the same time.

Process

  1. Canon before code: decisions about brand, offer and portfolio rules live in one file, not in two people's heads.

  2. Skeleton: pnpm monorepo, Next.js 15 with the App Router, TypeScript, Tailwind v4 with brand tokens in @theme — no Tailwind config file.

  3. Bilingual from day one: next-intl, Polish as the default, translated URLs (/pl/oferta ↔ /en/services), hreflang and canonical on every page.

  4. Gates before merge: a brand script blocks any off-palette colour, a second one guards the canon version, and typecheck plus a production build have to pass.

Stack

Demonstrated result

Demo

The demo of this project is the page you are standing on. Click anything — it is not a mockup or a recording.

Open the home page

Where it stands today

Some pages are still drafts. The contact form and enquiry storage arrive in the next session, and boldbanana.agency is bought but deliberately not pointed here yet. The «in build» status comes off when the project meets the definition of done from our canon — not before.

Back to portfolio