v1.0.0-alpha.2·Free to Use

The Full-Stack Language That Remembers

One language. Zero configuration. Build complete web applications with a built-in database, 180 UI components, and AI — all in a single binary.

"É flîn nù" — "It Remembers Things" in Fongbé (Benin)

curl -fsSL https://flin.sh | bash

47 Technologies Become 1

Job listings want React, Next.js, Prisma, PostgreSQL, Redis, Docker, and 41 more. What if you just needed FLIN?

47
1
Technologies
1,847
0
Dependencies
15+
0
Config Files
~3h
5m
First App

One File. Complete Application.

Entity, functions, template — everything in a single .flin file. No imports, no build step, no configuration.

app/index.flin
// Define your data
entity Todo {
    title: text @required
    done: bool = false
}

// State
newTitle = ""

// Functions
fn add() {
    todo = Todo { title: newTitle }
    save todo
    newTitle = ""
}

fn toggle(t: Todo) {
    t.done = !t.done
    save t
}

// Template — just HTML + {curly braces}
<h1>Todos ({Todo.count})</h1>

<form submit={add()}>
    <input bind={newTitle} placeholder="What needs doing?" />
    <button>Add</button>
</form>

{for todo in Todo.all}
    <div>
        <input type="checkbox"
            checked={todo.done}
            change={toggle(todo)} />
        <span>{todo.title}</span>
    </div>
{/for}
L2-5
Entity = Data Model10 types, 49 validators, auto ID/timestamps
L8
Reactive VariablesAll variables auto-update the UI
L11-14
save = PersistOne keyword. Database, WAL, indexing — automatic
L22
{Todo.count} = Live QueryTemplate method chains — zero boilerplate
L24-25
bind = Two-WayOne attribute replaces value + onChange
L28-33
{for} = Server-RenderedNo virtual DOM. No hydration. Just HTML.

Everything Built-In

No packages to install. No services to configure. Every feature ships in the binary.

Zero Configuration

Single binary. File-based routing. No webpack, no babel, no tsconfig, no package.json. Create a .flin file and run it.

Memory-Native Database

FlinDB ships inside the binary. WAL, CRC-32 checksums, file locking, auto-checkpointing. Define an entity, save it — done.

AI-Native

Mark a field as semantic text and it becomes AI-searchable. Built-in embeddings, vector search, RAG, and ask_ai() with 8 providers.

180 Components

FlinUI is embedded in the binary. <Button>, <Card>, <DataTable>, charts, e-commerce — zero imports, zero npm.

Built-in Auth

Session management, OAuth (Google, GitHub, Discord, Apple, LinkedIn), 2FA/TOTP, JWT, WhatsApp OTP — all native functions.

Admin Console

Every FLIN app ships with /_flin — an admin dashboard with entity browser, query editor, API docs, metrics, and logs.

The Database That Remembers Everything

FlinDB is embedded in every FLIN app. No installation. No connection strings. No migrations. Just define entities and save.

FlinDB in action
// 10 field types, 49 validators, enums
enum Priority { Low, Medium, High, Critical }

entity Task {
    title: text @required @minLength(2)
    done: bool = false
    priority: Priority = "Low"
    notes: semantic text          // AI-searchable!

    @index(done, priority)
    @unique(title)
}

// Queries — chain freely
Task.where(done == false).order_by("priority", "desc").limit(10)
Task.where(priority == "Critical").count

// Semantic search
results = search "tasks about database optimization" in Task

Write-Ahead Log

CRC-32 checksums, auto-checkpointing, file locking. Production-grade durability.

Semantic Search

Mark any field as semantic text. Embeddings generated automatically. Search by meaning, not keywords.

49 Validators

@required, @email, @minLength, @one_of, @unique, @index — declare constraints, FLIN enforces them.

420+
Built-in Functions
180
UI Components
1,675
Embedded Icons
86
Learning Guides

180 Components. Zero Imports.

FlinUI is embedded in the binary. Use any component like an HTML tag — no npm, no imports, no registration.

app/dashboard.flin
// No imports — just use them
<Grid columns="3">
    <StatCard label="Users" value="1,234" icon="users" />
    <StatCard label="Revenue" value="$12K" icon="trending-up" />
    <StatCard label="Orders" value="89" icon="shopping-cart" />
</Grid>

<Card>
    <BarChart data="45,72,38,91,65" labels="Mon,Tue,Wed,Thu,Fri" />
</Card>

<Icon name="check" size="24" color="green" />
// 1,675 Lucide icons embedded

Data Input

Input, Select, Checkbox, DatePicker, TagsInput, RichTextEditor

21 components

Data Display

Card, Badge, Avatar, Table, DataTable, Timeline, Calendar

18 components

Feedback

Alert, Toast, Modal, Drawer, Progress, Skeleton, Spinner

17 components

Navigation

Navbar, Sidebar, Tabs, Breadcrumb, Pagination, Menu

13 components

Layout

Grid, Flex, Stack, Container, Row, Divider, Section

14 components

Charts

BarChart, LineChart, PieChart, AreaChart, RadarChart, Heatmap

11 components

E-Commerce

ProductCard, CartItem, CheckoutForm, OrderSummary, CouponCode

12 components

Templates

LoginForm, DashboardLayout, PricingTable, BlogLayout, FileManager

22 components

JS/TS Developers: You Already Know 80%

FLIN accepts TypeScript-style types, console.log, .length, null, and the function keyword. Your muscle memory works.

Works the Same

string=text
boolean=bool
null=none
function=fn
console.log(x)=log(x)
name.length=len(name)

Delightfully Different

{ key: "val" }["key": "val"]
import X from YNot needed
class User {}entity User {}
await fetch()http_get()
SELECT * FROMUser.all
npm installNothing

Ready to Build?

Install FLIN in seconds. Build your first app in minutes. Ship to production in hours.

curl -fsSL https://flin.sh | bash