# Documentation

Evolu is both a **TypeScript library** and a **local-first platform**. Choose your path below.

## TypeScript library

For anyone who wants to write TypeScript code that scales. Built on proven design patterns like **Result**, **dependency injection**, **structured concurrency**, **immutability** and more. Created by someone who spent years with functional programming, but then [decided to go back](http://localhost:3000/blog/scaling-local-first-software#rewriting-evolu-fp-ts-effect-evolu-library) to the simple and idiomatic TypeScript code—no pipes, no black-box abstractions, no unreadable stacktraces.

[**Get started with the library** →](https://evolu.dev/docs/library)

## Local-first platform

A complete platform for building apps where users own their data. Works offline-first with sync via self-hostable or cloud relays. End-to-end encrypted by default. Built on SQLite with a scalable sync protocol designed for real-world use. No vendor lock-in, no data hostage situations.

[**Get started with local-first** →](https://evolu.dev/docs/local-first)