Back to themes

Koa - Portfolio & Studio Theme, Capacitor iOS App + AI Ready

Astro 7 portfolio theme: six case studies, an index filterable by discipline, drawn project plates instead of stock photos, and a contact page that answers. English and French, light and dark. It ships to the App Store with Capacitor, and carries an AGENTS.md so an AI agent extends it instead of breaking it.


Cost

Paid


Created by
Aloha Pixel

Koa is the theme for people whose work is the argument. Six case studies, an index you can filter by discipline, and a studio page that reads like a person wrote it.


It ships to the App Store, not only to a browser

Capacitor is wired in, so the same code base becomes a native iOS app. The floating bar respects the iPhone safe area, taps carry haptic feedback, and nothing in the layout assumes a mouse.


It is written to be extended by an AI agent

An AGENTS.md at the root, and five files of written conventions beside it: design, content, internationalisation, components and deployment. They say where a token lives, why a rule exists and what breaks if it is ignored. Point an agent at the repository and it extends the theme instead of fighting it.


What you get

23 built pages across English and French, from one page source each. Six projects, each with its own case study. A studio page, a contact page whose form ships without an endpoint on purpose, and a legal page with bracketed fields to fill in.


Drawn, not photographed

Every project carries an original SVG plate generated from two fields of the project file. Two kilobytes, sharp at any density, retinted by the palette, and no licence to check. The day you have real images, fill in the cover field and the plate steps aside: same tag, same framing, same grid.


Built to be read

Astro 7 static output, Tailwind CSS 4 with CSS-first tokens, TypeScript in strict mode. No React, no animation library, no WebGL. One command repaints the whole theme from a single brand colour. The SEO layer is hand-written files in the repo rather than a plugin, and the same source builds an iOS and Android app through Capacitor.


Bilingual by construction

English at the root, French under /fr/, one output per language from one page source. The dictionary is a typed object, so a missing translation is a build error instead of an English sentence in production.