A convention-over-configuration framework
for agentic full-stack TypeScript.
Web, app, server, fragmented frameworks, integrations, and duplicated declarations wear teams down. Akan lets one line of business code describe web, iOS, Android, server, and database surfaces together.
Configure less, repeat less, and keep business intent readable from database to UI.
Akan.js
Business code becomes the whole product
export class ProductInput extends via((field) => ({
name: field(String),
})) {}Web / App
SEO web and native-feeling client transitions.
Server / Realtime
Bun-powered HTTP and WebSocket surfaces.
Database / Validation
SQLite first, scalable, and schema validated.
Docs / Plugins
Live docs and official feature blocks.
Designed to make developers happier
Akan keeps decisions consistent so teams can spend more energy on business code and less on framework assembly.
Config Hell Ends
Configure everything in akan.config.ts. Even when you configure nothing, the defaults keep your product moving.
Monorepo Shared Code
Use verified code everywhere. Share domain logic without reinventing the wheel for every surface.
Strict Rules, Unified Style
File paths, names, structures, and declarations stay consistent. Code reads like you wrote it, no matter who did.
Less Code, Better Review
Fewer lines mean fewer tokens, clearer intent, and updates that are easier to read, review, and ship.
Stop repeating the same plumbing
Akan turns business declarations into docs, APIs, queries, state, and loading behavior so repetitive work disappears.
Schema becomes DB documentation
Business schema is not only runtime code. It becomes documentation your team can inspect together.
Endpoint becomes live API docs
API contracts stay close to implementation, and the generated surface can be tested as you build.
Query condition expands into reads
One query condition can power list, detail, and statistics reads without repeating the same plumbing.
Slice removes spaghetti state
Declare a slice once and get list loading, pagination, statistics, state, and loading behavior together.
One declaration, many generated surfaces
A single business field can drive schema, validation, API contracts, fetch types, state, and UI contracts without scattering intent across the stack.
export class ProductInput extends via((field) => ({
name: field(String),
})) {}Everything a business app needs, connected
Akan supports web, iOS, Android, server, database, validation, internationalization, and official plugins as one coherent stack.
SEO-ready server-side rendering
iOS / Android client rendering
Bun HTTP / WebSocket server
SQLite first, Postgres / Redis ready
Schema validation and secure middleware
Type-safe from DB to UI
Built-in internationalization
Official plugin blocks
bunx create-akan-workspace@latestSee the business, not the system
These demos show how one convention-driven workspace carries business intent through multiple surfaces.
How Conventions Expand Your Business Definition
Cross-Platform Development
One page can become SEO-ready web and app-ready client screens with native-feeling transitions.
Database & API Integration
Schema changes flow into database, validation, API contracts, and generated clients without hand wiring.
Full-Stack Type Safety
Database schema changes automatically influence server, API, state management, and UI types.
Domain-Driven State Management
State, loading, pagination, and statistics follow the domain so UI code stays predictable.
Agent-Ready Code Generation
Official patterns and plugins give agents predictable blocks for upload, login, admin, chat, boards, and alerts.
