Home
Flowa Logo

Flowa

Server-first language for modern web applications

What is Flowa?

Flowa is a high-performance, JIT-compiled scripting language designed for backend development, concurrency, and rapid prototyping. It features an Actor-based concurrency model, built-in networking (HTTP/JSON), database integration (SQLite), and a familiar C-style syntax.

Key Features

Quick Start

Installation

# One-command install (Mac/Linux)
./install.sh
 
# Or via Homebrew (macOS)
brew tap senapati484/flowa
brew install flowa

Hello World

print("Hello, Flowa!");

Run it:

flowa hello.flowa

HTTP Server Example

let server = http.createServer();
 
server.on("GET", "/", func(req, res) {
    res.writeHead(200, {"Content-Type": "text/html"});
    res.end("<h1>Hello, World!</h1>");
});
 
server.on("POST", "/api/data", func(req, res) {
    let json_data = json.parse(req.body);
    res.writeHead(200, {"Content-Type": "application/json"});
    res.end(json.stringify({"status": "received"}));
});
 
server.listen(3000);

Database Operations

let db = sqlite.open("app.db");
 
sqlite.exec(db, "CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
)");
 
sqlite.exec(db, "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
 
let result = sqlite.query(db, "SELECT * FROM users WHERE id = 1");
print(result);
 
sqlite.close(db);

Why Flowa?

Built for Backend Development

Flowa includes everything you need to build modern web applications:

  • HTTP Server & Client - Built-in, no external dependencies
  • Database - SQLite integration out of the box
  • Authentication - BCrypt hashing and JWT tokens
  • Email - SMTP client for sending emails
  • Job Scheduling - Cron-style task scheduling
  • Structured Logging - JSON logging with multiple levels

Performance-Focused

  • JIT Compilation - Optimizes hot code paths to native machine code
  • Benchmarks: 555K iterations/second on Apple Silicon (10M counter loop)
  • Efficient memory management with reference counting and garbage collection

Next Steps

Community & Support


Ready to get started? Check out the Getting Started guide!