# Triplit Documentation

> Triplit is an open-source database that syncs data between server and browser in real-time.

This documentation covers all aspects of using Triplit, from installation to advanced usage.

## Core Documentation

- [faq](https://triplit.dev/docs/faq.md): Frequently asked questions about Triplit.
- [http-api](https://triplit.dev/docs/http-api.md): Learn how to interact with a Triplit sync server over HTTP.
- [local-development](https://triplit.dev/docs/local-development.md): Learn how to run a local instance of the Triplit sync server for development.
- [offline-mode](https://triplit.dev/docs/offline-mode.md): No extra configuration is needed for a Triplit app to work offline.
- [quick-start](https://triplit.dev/docs/quick-start.md): Learn how to get up and running with a simple Triplit app.
- [react-tutorial](https://triplit.dev/docs/react-tutorial.md): A full tutorial for building a Todos app with React, Vite and Triplit.
- [seeding](https://triplit.dev/docs/seeding.md): Learn how seed a Triplit database with the `triplit seed` command.
- [self-hosting](https://triplit.dev/docs/self-hosting.md): Learn how to self host Triplit using Docker, and how to deploy it to a cloud provider with Docker or Git.
- [ssr](https://triplit.dev/docs/ssr.md): 
- [v1-migration](https://triplit.dev/docs/v1-migration.md): Learn how to update your application for the upgraded API in Triplit 1.0.
- [v2](https://triplit.dev/docs/v2.md): 

## Auth

- [auth](https://triplit.dev/docs/auth/index.md): Learn how to setup user auth for your Triplit application.
- [sessions](https://triplit.dev/docs/auth/sessions.md): Learn how to use the Sessions API for the Triplit client to model auth events in your app.
- [clerk](https://triplit.dev/docs/auth/integration-guides/clerk.md): Learn how to setup user auth for your Triplit application with Clerk.
- [supabase](https://triplit.dev/docs/auth/integration-guides/supabase.md): Learn how to setup user auth for your Triplit application with Supabase Auth.

## Cli

- [cli](https://triplit.dev/docs/cli/index.md): The Triplit CLI provides a suite of tools to manage your Triplit projects, from local development to deployment.
- [clear](https://triplit.dev/docs/cli/clear.md): Learn how to use the `triplit clear` command to clear a database.
- [dev](https://triplit.dev/docs/cli/dev.md): Use the `triplit dev` command to start a local Triplit development environment.
- [init](https://triplit.dev/docs/cli/init.md): Learn how to use the `triplit init` command to add Triplit dependencies and configuration files to an existing project.
- [repl](https://triplit.dev/docs/cli/repl.md): Learn how to use the `triplit repl` command to start an interactive REPL with the Triplit client.
- [roles](https://triplit.dev/docs/cli/roles.md): Learn how to use the `triplit roles` command to debug the roles and permissions of a JWT authentication token with your schema.
- [schema](https://triplit.dev/docs/cli/schema.md): Learn how to use the `triplit schema [push | print | diff]` commands to update or introspect the schema on a remote server.
- [seed](https://triplit.dev/docs/cli/seed.md): Learn how to use the `triplit seed [create | run]` commands to create and apply seed data files for Triplit databases.
- [snapshot](https://triplit.dev/docs/cli/snapshot.md): Learn how to use the `triplit snapshot [create | push]` commands to save a local copy of a remote Triplit database.

## Client

- [client](https://triplit.dev/docs/client/index.md): How to setup and use the TriplitClient in the browser to sync data.
- [debugging](https://triplit.dev/docs/client/debugging.md): Learn the various debugging tools available for the Triplit client.
- [delete](https://triplit.dev/docs/client/delete.md): How to use the TriplitClient delete method to delete an entity.
- [event-listeners](https://triplit.dev/docs/client/event-listeners.md): How to subscribe to various Triplit sync events to debug your app and remedy sync failures.
- [fetch-by-id](https://triplit.dev/docs/client/fetch-by-id.md): How to use the TriplitClient fetchById method to query an entity by its primary key.
- [fetch-one](https://triplit.dev/docs/client/fetch-one.md): How to use the TriplitClient fetchOne method to query a single entity.
- [fetch](https://triplit.dev/docs/client/fetch.md): How to use the TriplitClient fetch method to query data.
- [http-client](https://triplit.dev/docs/client/http-client.md): 
- [insert](https://triplit.dev/docs/client/insert.md): How to use the TriplitClient insert method to subscribe to create new data.
- [options](https://triplit.dev/docs/client/options.md): Learn the options available to configure your TriplitClient.
- [storage](https://triplit.dev/docs/client/storage.md): Learn the different data storage options available for the Triplit client.
- [subscribe-background](https://triplit.dev/docs/client/subscribe-background.md): How to subscribe to queries in the background using subscribeBackground.
- [subscribe-with-expand](https://triplit.dev/docs/client/subscribe-with-expand.md): How to use the TriplitClient subscribeWithExpand method to fetch a growing window of data.
- [subscribe-with-pagination](https://triplit.dev/docs/client/subscribe-with-pagination.md): How to use the TriplitClient subscribeWithPagination method to subscribe to paginated data.
- [subscribe](https://triplit.dev/docs/client/subscribe.md): How to use the TriplitClient subscribe method to listen to changes in your data.
- [sync-engine](https://triplit.dev/docs/client/sync-engine.md): How to connect, disconnect, handle errors and check the connection status of the Triplit sync engine.
- [transact](https://triplit.dev/docs/client/transact.md): How to use the TriplitClient transact method to update a Triplit database atomically.
- [update](https://triplit.dev/docs/client/update.md): How to use the TriplitClient update method to mutate data.
- [web-worker-client](https://triplit.dev/docs/client/web-worker-client.md): 

## Frameworks

- [angular](https://triplit.dev/docs/frameworks/angular.md): Learn how use Angular bindings for the Triplit client in your app.
- [react-native](https://triplit.dev/docs/frameworks/react-native.md): Learn how configure React Native with Expo to use Triplit in your mobile app.
- [react](https://triplit.dev/docs/frameworks/react.md): Learn how use React bindings for the Triplit client in your app.
- [solid](https://triplit.dev/docs/frameworks/solid.md): Learn how use Solid bindings for the Triplit client in your app.
- [svelte](https://triplit.dev/docs/frameworks/svelte.md): Learn how use Svelte bindings for the Triplit client in your app.
- [tanstack-router](https://triplit.dev/docs/frameworks/tanstack-router.md): Learn how to use Tanstack Router integration with Triplit.
- [vue](https://triplit.dev/docs/frameworks/vue.md): Learn how use Vue bindings for the Triplit client in your app.

## Query

- [query](https://triplit.dev/docs/query/index.md): How to define and use queries in Triplit.
- [include](https://triplit.dev/docs/query/include.md): The `Include` clause is used to specify the relations on an entity that should be included in a query.
- [limit](https://triplit.dev/docs/query/limit.md): The `Limit` clause is used to truncate the results of a Triplit query.
- [order](https://triplit.dev/docs/query/order.md): The `Order` clause is used to sort results in Triplit query based on their attributes or relations.
- [select](https://triplit.dev/docs/query/select.md): The `Select` clause is used to specify which attributes to return in a Triplit query.
- [subquery](https://triplit.dev/docs/query/subquery.md): The `SubqueryOne` and `SubqueryMany` clauses can be used to include nested queries in a Triplit query.
- [sync-status](https://triplit.dev/docs/query/sync-status.md): The syncStatus clause is used to filter results in Triplit query based on if they've synced with the server.
- [variables](https://triplit.dev/docs/query/variables.md): Variables in Triplit allow you to pass in preset values into queries.
- [where](https://triplit.dev/docs/query/where.md): The `Where` clause is used to filter results in a Triplit query based on conditions.

## Runtimes

- [browser](https://triplit.dev/docs/runtimes/browser.md): How to use the Triplit client library in the browser and the supported storage options - memory and IndexedDB.
- [bun](https://triplit.dev/docs/runtimes/bun.md): Learn how to run the Triplit sync server with Bun, and the supported storage options - SQLite.
- [cloudflare](https://triplit.dev/docs/runtimes/cloudflare.md): Learn how to use the Triplit sync server in a Cloudflare Workers serverless environment and how it integrates with Durable Objects for persistent storage.
- [hermes](https://triplit.dev/docs/runtimes/hermes.md): Learn how to use the Triplit client in React Native applications built on the Hermes runtime.
- [node](https://triplit.dev/docs/runtimes/node.md): Learn how to run the Triplit sync server in Node.js, and the supported storage options - SQLite and LMDB.

## Schemas

- [schemas](https://triplit.dev/docs/schemas/index.md): Learn how use a schema in your Triplit app to enable Typescript support and data validation.
- [permissions](https://triplit.dev/docs/schemas/permissions.md): How to manage access control rules with a Triplit schema.
- [relations](https://triplit.dev/docs/schemas/relations.md): Learn how to model relational data in a Triplit schema.
- [types](https://triplit.dev/docs/schemas/types.md): Learn the different types and options available in Triplit schemas.
- [updating](https://triplit.dev/docs/schemas/updating.md): Learn how to update a schema for your Triplit server in production.

## Triplit Cloud

- [triplit-cloud](https://triplit.dev/docs/triplit-cloud/index.md): Learn how to create Triplit Cloud projects.
- [managed-machines](https://triplit.dev/docs/triplit-cloud/managed-machines.md): Learn about Triplit Cloud's managed machines.
- [self-hosted-deployments](https://triplit.dev/docs/triplit-cloud/self-hosted-deployments.md): Learn about connecting a self-hosted server to Triplit Cloud.
- [triplit-console](https://triplit.dev/docs/triplit-cloud/triplit-console.md): Learn about using the Triplit Console to manage your data.