# Tinylib developer docs > A Tinylib app is a web page you publish with one command. Tinylib signs users in, syncs their data, and runs the rooms they share, so there's no server to set up. Apps open on the web and in Tinylib's Android app. These docs describe tinylib-sdk 0.44.0. Start every app with `npx tinylib-sdk init`, which writes a working folder from a template. Run it with `npx tinylib-sdk dev` and publish it with `npx tinylib-sdk publish`. Read [Quickstart](https://tinylib.app/docs/start/quickstart.md) and [How Tinylib works](https://tinylib.app/docs/start/how-it-works.md) first. Then read the pages for the app you have in mind: - one person's app whose data syncs across their devices: [Data](https://tinylib.app/docs/guide/data.md) and [tinylib.data](https://tinylib.app/docs/api/data.md) - people sharing live state, such as a game or a shared list: [Rooms and rules](https://tinylib.app/docs/guide/rooms.md), [Kinds](https://tinylib.app/docs/rules/kinds.md), and [ctx](https://tinylib.app/docs/rules/ctx.md) - a turn-based game with friends, or a daily puzzle: [Games](https://tinylib.app/docs/guide/games.md) and [tinylib-sdk/kits](https://tinylib.app/docs/api/kits.md) An app must: - offer Block and Report, with `tinylib.block` and `tinylib.report`, wherever it shows another user, as the [Developer Terms](https://tinylib.app/developer-terms) require - never ask for payment, which the Developer Terms forbid - ship every file it uses in its folder, because the page can't fetch other sites; `publish` bundles imported libraries - in `rules.js`, keep everything in the room's state and use `ctx.now` and `ctx.random()` instead of `Date.now()` and `Math.random()` - import only types from `tinylib-sdk` in `rules.js` - write every rules handler synchronously, with no `async` or `await`, which `dev` and `publish` refuse - declare a key in `rulesKeys` before the client ever writes it: a new version can't declare a key the client has written, or remove a declared one - keep secrets out of shipped files and addresses, which anyone can read Every page below is also in one file, [llms-full.txt](https://tinylib.app/llms-full.txt) (270 KB). ## Start - [Quickstart](https://tinylib.app/docs/start/quickstart.md): Make an app, run it on your computer, and open it on your phone. - [How Tinylib works](https://tinylib.app/docs/start/how-it-works.md): What you write for a Tinylib app, and what Tinylib runs for it. ## Guides - [Data](https://tinylib.app/docs/guide/data.md): Save the user's data and sync it across their devices. - [Rooms and rules](https://tinylib.app/docs/guide/rooms.md): Let users share live state in a room, run by rules you write. - [Games](https://tinylib.app/docs/guide/games.md): Build a daily puzzle or a turn-based game with friends, using tinylib-sdk/kits. - [Friends](https://tinylib.app/docs/guide/friends.md): Share data with the user's friends who use your app, and send them the app. - [Places and links](https://tinylib.app/docs/guide/places.md): Route between screens, and link users to a place in your app. - [Reminders and notifications](https://tinylib.app/docs/guide/reminders.md): Schedule reminders for one user, and notify a room's members. - [Publishing](https://tinylib.app/docs/guide/publishing.md): Publish and preview your app, and move its open rooms to new rules. - [Errors and offline](https://tinylib.app/docs/guide/errors.md): Handle calls that fail, and know what works without a connection. - [Platforms](https://tinylib.app/docs/guide/platforms.md): What differs on the web, in Safari, on an iPhone, in the Android app, and in dev. ## Client API - [tinylib](https://tinylib.app/docs/api/tinylib.md): The global object your client calls Tinylib through. - [tinylib.data](https://tinylib.app/docs/api/data.md): Read and write the user's data, and watch it change. - [tinylib.rooms](https://tinylib.app/docs/api/rooms.md): Create and join rooms from your client, and act in them. - [tinylib.invitations](https://tinylib.app/docs/api/invitations.md): Show the user's invitations to rooms in your app instead of Tinylib's sheet. - [tinylib.friends](https://tinylib.app/docs/api/friends.md): List the user's friends who use your app, and read the data they share. - [tinylib.places](https://tinylib.app/docs/api/places.md): Read and change the current screen's address, and share a link to it. - [tinylib.reminders](https://tinylib.app/docs/api/reminders.md): Schedule, list, and cancel the user's reminders. - [tinylib-sdk/kits](https://tinylib.app/docs/api/kits.md): What apps share: turn games, solo games, daily puzzles, and games with friends. ## Rules API - [Kinds](https://tinylib.app/docs/rules/kinds.md): Everything a kind in rules.js can define, and when each part runs. - [ctx](https://tinylib.app/docs/rules/ctx.md): What the rules can read and do through ctx while they handle an input. ## Reference - [tinylib.json](https://tinylib.app/docs/reference/tinylib-json.md): The file that names your app and lists the features it uses. - [Command line](https://tinylib.app/docs/reference/cli.md): The commands that create, run, and publish an app. - [Limits](https://tinylib.app/docs/reference/limits.md): What Tinylib caps, on the free plan and on Pro. ## Optional - [Types](https://tinylib.app/docs/api/types.md): TypeScript types for your app's data and rooms.