ESC
Type to search...
S
Soli Docs
32 articles

The Soli Blog

Tutorials, deep dives, and ideas on building web applications with SoliLang — written by the people building it.

Ship a Native Mobile App Without Rewriting the Stack
Latest Feature

Ship a Native Mobile App Without Rewriting the Stack

Ship iOS and Android without rewriting the stack: thin WebView shells load your deployed Soli app, the native bridge covers open-app OS work, Push.deliver cascades to APNs/FCM when closed, and AppLinks deep-link into the web view — same models and templates, honest platform costs.

Read article

More articles

Ship a Desktop App With `soli desktop build`
Feature

Ship a Desktop App With `soli desktop build`

soli desktop build turns your Soli app into one double-clickable executable with an embedded encrypted app, a private SolidB, optional ref_* seed data, loopback launch tokens, cross-builds, and a path to signed OTA updates — plus an honest account of what local encryption does and does not protect.

Read article
How to Operate a Release Channel
Guide

How to Operate a Release Channel

How to operate a Soli auto-update release channel: signing keys, CDN layout, multi-platform builds, canary before stable, fix-forward rollbacks, key rotation, and what to monitor — the runbook the feature docs leave to ops.

Read article
Browser Tests Without Node: Soli Drives Chrome Itself
Feature

Browser Tests Without Node: Soli Drives Chrome Itself

soli test --browser drives a real headless Chrome over the DevTools protocol, spoken by the soli binary itself — no Node, no npm, no Playwright. Real input events rather than element.click(), assertions that wait, and a cookie jar shared with your request specs so login() carries straight into visit().

Read article
Code Graph RAG: Give Agents a Map of Your App
Feature

Code Graph RAG: Give Agents a Map of Your App

soli graph build turns your project into a SolidB code graph with embeddings; soli graph query does semantic seed + edge expansion so agents get routes, callers, and views — not isolated snippets. Same database as Models, incremental sync, multi-language extractors.

Read article
RAG Product Discovery: Search Your Catalog, Then Let the LLM Answer
Tutorial

RAG Product Discovery: Search Your Catalog, Then Let the LLM Answer

Build retrieval-augmented product discovery in Soli: auto-embed on save, rank with .similar() and hybrid(), then ground answers with llm_generate — no separate vector DB or orchestration framework.

Read article
Tamper-Evident Audit Logs in Soli, from Two Primitives
Security

Tamper-Evident Audit Logs in Soli, from Two Primitives

Turn an audit log into a hash-chained, tamper-evident ledger with two builtins — Crypto.canonical_json for stable bytes and Crypto.merkle_root for a one-hash integrity proof. Catch silent edits, pin them to the exact record, and archive a compact daily commitment.

Read article
Watching an AI Agent Think: Live Progress with Server-Sent Events
Tutorial

Watching an AI Agent Think: Live Progress with Server-Sent Events

Stream an AI agent's progress to the browser as it works — plan, tool calls, synthesis — with Server-Sent Events and a single sse() block. No WebSocket, no client framework, and the run stops if the user leaves.

Read article
Full End-to-End Tests in Pure Soli (No Playwright, No Node)
Tutorial

Full End-to-End Tests in Pure Soli (No Playwright, No Node)

Write realistic full-stack integration tests entirely in Soli using a built-in test server, clean BDD DSL, and coverage gates — no Playwright or Node required.

Read article
Scaffolds That Don’t Suck: One Command from Zero to Production-Ready Code
Tutorial

Scaffolds That Don’t Suck: One Command from Zero to Production-Ready Code

One command (`/soli-resource`) to go from concept to production-ready model, controller, views, migration, routes, and specs — with an intelligent pause for human judgment.

Read article
Destructuring Done Right: Rich Pattern Matching in Soli
Deep Dive

Destructuring Done Right: Rich Pattern Matching in Soli

Destructuring, guards, rest patterns, and exhaustive matching as a daily tool for controllers and data pipelines.

Read article
Real Domain Modeling with Soli: Scopes, Soft Deletes, and Transactions
Tutorial

Real Domain Modeling with Soli: Scopes, Soft Deletes, and Transactions

Scopes, soft deletes, and transactions — the model layer features that let you express real business rules cleanly and safely.

Read article
Soli Projects Are Designed for AI Coding Agents
Philosophy

Soli Projects Are Designed for AI Coding Agents

How Soli ships projects that are deliberately excellent environments for AI coding agents (Claude Code, Cursor, Aider) from the very first `soli new`.

Read article
LiveView: Real-Time Server-Rendered UIs Without Writing JavaScript
Tutorial

LiveView: Real-Time Server-Rendered UIs Without Writing JavaScript

Build real-time server-rendered UIs with Soli LiveView. A practical team presence + activity feed widget with ticks, simulated remote activity, and zero client-side JavaScript.

Read article
Background Jobs & Cron in Soli: Queues, Secure Callbacks, Retries, and Recurring Work Without the Ops Tax
Architecture

Background Jobs & Cron in Soli: Queues, Secure Callbacks, Retries, and Recurring Work Without the Ops Tax

SolidB-backed queues, signed webhook callbacks, perform_later / perform_in, declarative cron, idempotency patterns, hot reload, and zero extra daemons — the complete background job system.

Read article
Event Streaming from Soli with `es` — a Kafka-Shaped Broker You Can Actually Run
Tutorial

Event Streaming from Soli with `es` — a Kafka-Shaped Broker You Can Actually Run

Wire es — a single-binary, HTTP+JSON, Kafka-shaped broker — to a Soli app end-to-end: produce events from a controller, drain them with a consumer-group-backed background job, and resume cleanly after a restart.

Read article
Sending Email with SendGrid — and Doing It from a Background Job
Tutorial

Sending Email with SendGrid — and Doing It from a Background Job

Wrap the SendGrid v3 Messages API in a tiny Soli library, then hand delivery off to a SolidB-backed background job so the controller returns in milliseconds.

Read article
Building a CRUD Datatable with HTMx, Alpine, and Soli
Tutorial

Building a CRUD Datatable with HTMx, Alpine, and Soli

Build a full CRUD datatable — search, sort, pagination, inline edit, role select, status toggle, modal add, toast on save — with one model, one controller, two partials, and zero hand-written JavaScript.

Read article
Semantic Search with `.similar()` in Soli
Tutorial

Semantic Search with `.similar()` in Soli

Add AI-native vector similarity search to any query chain with .similar(), ranking results by semantic relevance with cosine similarity.

Read article
No Build, No Dependency: Why It Matters for Security and Simplicity
Philosophy

No Build, No Dependency: Why It Matters for Security and Simplicity

Why Soli ships as a single binary with no package manager, no bundler, and no build step — and what that means for supply-chain security and operational simplicity.

Read article
Server-Side Password Validation in Soli
Security

Server-Side Password Validation in Soli

Enforce password character-class requirements on the server with .letters(), .mixed_case(), .numbers(), and .symbols(), and drive the HTML passwordrules attribute from the same validator chain.

Read article
Web Push from Soli: Goodbye `web-push`, Hello Native VAPID
Tutorial

Web Push from Soli: Goodbye `web-push`, Hello Native VAPID

Drop the web-push Node module and send Web Push notifications natively from Soli with the four VAPID builtins (RFC 8291 / 8292).

Read article
The New Soli Dev Bar
Feature

The New Soli Dev Bar

A look at Soli's new development bar: request timing, render breakdowns, SolidB queries, outgoing HTTP calls, N+1 detection, flamegraphs, and trace exports.

Read article
How Soli Competes with Big Frameworks
Philosophy

How Soli Competes with Big Frameworks

How Soli competes with Rails, Laravel, Django, Next.js, and other mature frameworks by focusing on simplicity, coherence, and fast product development.

Read article
From `_handle_photo` to `uploader("photo", { ... })` — Soli's New Attachment Pipeline
Feature

From `_handle_photo` to `uploader("photo", { ... })` — Soli's New Attachment Pipeline

Declare uploader(...) on the model, get show/create/destroy routes for free, drive image transforms (resize, crop, fit, blur, brightness, format) from URL query params.

Read article
Importing CSV & Excel Files in Soli
Tutorial

Importing CSV & Excel Files in Soli

Parse and process CSV and Excel files with built-in spreadsheet functions.

Read article
Two-Factor Authentication with TOTP in SoliLang
Security

Two-Factor Authentication with TOTP in SoliLang

Add secure two-factor authentication to your SoliLang app with TOTP codes.

Read article
Adding "Sign in with GitHub" to Your Soli App
Tutorial

Adding "Sign in with GitHub" to Your Soli App

Full OAuth 2.0 flow with GitHub, sessions, JWT tokens, and security best practices.

Read article
Why Raw Benchmarks Don't Tell the Full Story
Deep Dive

Why Raw Benchmarks Don't Tell the Full Story

Why synthetic benchmarks are misleading and how oha provides better HTTP load testing.

Read article
Implementing Google OAuth in SoliLang
Tutorial

Implementing Google OAuth in SoliLang

Learn how to add Google OAuth authentication to your SoliLang application.

Read article
HTMx: The Missing Link Between Traditional MVC and Modern Interactivity
Guide

HTMx: The Missing Link Between Traditional MVC and Modern Interactivity

How HTMx brings simplicity to Soli web apps with server-rendered partials.

Read article