🚧 FLIN is in active development. Coming soon! Thank you for your patience. Join Discord for updates

Built-in Demos

These demos are bundled with the FLIN binary. Just run the command and open http://localhost:3000.

Starter

The simplest FLIN app — a reactive counter

Beginner
flin dev embedded/starter
Reactive variables Event handlers Template syntax

Todo App

Classic TodoMVC with entity-based persistence

Intermediate
flin dev embedded/todo-app
Entity definitions @validators CRUD operations Queries Form binding

Full-Stack

Complete web app with auth, middleware, and more

Advanced
flin dev embedded/fullstack
Middleware Route guards OAuth 2FA / TOTP WebSockets i18n

Mini Apps Collection

Real-world applications demonstrating FLIN's persistence and UI capabilities. Each app will be available on hub.flin.dev — copy the code, make it yours.

Copy, Don't Install

Unlike npm packages, FLIN Hub templates are copied directly into your project. You own the code — no dependencies, no version lock, no black boxes. Browse templates →

App Description Features
Notes Note-taking with colors and pinning CRUD, colors, pin, search
Contacts Contact manager with favorites CRUD, favorites, search
Bookmarks Bookmark organizer with categories CRUD, categories, visit tracking
Shopping List Shopping list with categories CRUD, categories, bought status
Expenses Expense tracker with totals CRUD, categories, amounts
Habits Habit tracker with streaks CRUD, streaks, logging, archive
Blog Simple blog with drafts CRUD, drafts, publish, views
Recipes Recipe book with favorites CRUD, favorites, categories
Projects Project manager with nested tasks CRUD, nested tasks, archive
Polls Quick polls with voting CRUD, voting, close polls
Timezone Converter Convert times across timezones Time functions, formatting
The FLIN Way
// Define your data
entity Note {
    title: text @required
    content: text
    color: text = "yellow"
    pinned: bool = false
}

// Create, save, query — zero config
note = Note { title: "My first note" }
save note

notes = Note.all
pinned = Note.where(pinned == true)

What You'll Learn

Entity Persistence

Data auto-saved to FlinDB

CRUD Operations

save, delete, .all, .where()

Reactive State

Variables with bind={}

Relationships

Tasks → Projects, Options → Polls

FLIN vs The React Ecosystem

FLIN replaces your entire npm dependency tree:

React Ecosystem FLIN Equivalent
Zustand (state) count = 0 — reactive by default
Zod (validation) @email @required @minLength(3)
TanStack Query http_get(url)
React Hook Form <input bind={name} />
date-fns time_format(now(), "MMM D")
bcrypt bcrypt_hash(password)
passport.js auth_google_login()
Socket.io socket "/chat" { ... }
More Resources