Piko mascot

Your Go backend deserves
a Go frontend

Stop maintaining two codebases, two languages, two deploys. Piko compiles .pk templates to Go code. You ship one binary.

Get started

Alpha release · open source · Apache 2.0

Your types flow end to end

Your Go structs appear in your templates at compile time, with no API layer or runtime type assertion in between. Rename a field and the compiler tells you, not a broken page in production. The directives (p-for, p-if, p-model) will look familiar if you've used Vue.

One binary, one deploy

Skip the separate frontend hosting, the CORS config, webpack, and node_modules. Piko compiles your .pk templates to Go source code. Run go build and ship a single binary with pages, styles, and assets baked in.

Same syntax for pages, emails, and PDFs

The .pk template format works for web pages, transactional emails, and PDF documents. Same directives, same Go script block, same scoped CSS. Learn one thing and it covers all three.

So, what changes?

What’s the difference between Piko and any old frontend framework?

Today

  • Go API serves JSON
  • React/Vue/Next renders the HTML
  • TypeScript types duplicated from Go structs
  • Two repos, two CI pipelines
  • Two Docker images, CORS config
  • npm install (947 packages)

With Piko

  • Go handles data and rendering
  • .pk templates get your Go types directly
  • No serialisation layer, no API contracts
  • One repo, one build
  • One binary, one deploy
  • go build (one toolchain)

Start simple.
Scale when you need to.

Piko never forces you to understand your final architecture on day one. Add complexity only when your demands require it.

Start
Grow
Scale
Frontend
.pk pagesServer-rendered, no JS
ActionsServer calls, forms, mutations
.pkc componentsBuild your own reactive component library

Every adapter in the WDK follows this pattern. Start with the simplest option and swap to a more powerful one when you're ready. Same API, one import change.

Playful Piko mascot

See for yourself!

Install Piko. Build a page. See what it feels like when you don’t need npm.

Let's get started!