# Creating sheets

> Room sheets and tables made with HTML, CSS and JavaScript, by hand or with help from an AI.

Page: https://docs.rpgdesk.com/en/fichas/

In RPG Desk, a sheet is a web page: **HTML** for the fields, **CSS** for the looks and, if needed, **JavaScript** for the math. **rpgdesk.js**, RPG Desk’s library, connects the page to the room:

- what the player writes is kept in the room and shows up right away for the game master;
- roll buttons roll in the chat, with the 3D dice, for everyone;
- only the sheet’s owner and the game masters write; others only read, and rpgdesk.js locks the fields by itself;
- parts of the sheet can be for the game master only, and they never even reach the players.

The sheet below is working. Type in the fields and click **Roll Strength**:

*Working example:* [Minimal sheet](https://docs.rpgdesk.com/exemplos/en/minimal-sheet.html)

It does not have a single line of JavaScript: each field has a `data-field` attribute, and each roll button, a `data-roll`.

## Three ways to make one

**With an AI**

Copy RPG Desk’s guide to the AI (ChatGPT, Claude, Gemini…), describe the sheet and install the file it gives back. See [Create with an AI](https://docs.rpgdesk.com/en/fichas/com-ia/).

**By hand, in one file**

One `.html` file, with the manifest inside and the two rpgdesk.js lines. Start with the [tutorial](https://docs.rpgdesk.com/en/fichas/primeira-ficha/).

**In a package**

Several files (HTML, CSS, JavaScript, images, fonts) in a `.zip`, with more than one sheet or table. See [Packages with several files](https://docs.rpgdesk.com/en/fichas/pacotes/).

## From file to room

1. **Test it in the browser:** open the sheet’s file (double-click it). Outside RPG Desk, rpgdesk.js enters **test mode**, with the data in the browser and a band in the corner to switch roles.
2. **Install it in the room:** as game master, in **Room settings → Plugins → Install plugin…**, choose the `.html` (or the `.zip`). RPG Desk checks the file and tells you what to fix, if anything.
3. **Use it:** the sheet shows up in **New sheet…**, in the library.

> **Tip**
>
> Sheets and tables are the same thing inside. A **room table** (an NPC list, a calendar) is the same kind of page, which sits below the library for the whole room. See [Room tables](https://docs.rpgdesk.com/en/fichas/tabelas/).

## In this section

[Your first sheet](https://docs.rpgdesk.com/en/fichas/primeira-ficha/): The tutorial: from an empty file to the sheet installed in the room.

[Create with an AI](https://docs.rpgdesk.com/en/fichas/com-ia/): The guide for the AI, the request and how to fix what comes back wrong.

[Fields, lists and tabs](https://docs.rpgdesk.com/en/fichas/campos/): Everything you do with HTML attributes alone.

[JavaScript on the sheet](https://docs.rpgdesk.com/en/fichas/javascript/): The document, computed fields and lists from code.

[Rolls, chat and card](https://docs.rpgdesk.com/en/fichas/rolagens-e-chat/): Rolling, talking in the chat and filling in the player's bars.

[Private parts](https://docs.rpgdesk.com/en/fichas/partes-privadas/): What only the game master or only the owner sees.

[Room tables](https://docs.rpgdesk.com/en/fichas/tabelas/): Pages for the whole room: NPCs, initiative, travel maps.

[Looks](https://docs.rpgdesk.com/en/fichas/visual/): rpgdesk.css, the theme colors and narrow screens.

[Packages with several files](https://docs.rpgdesk.com/en/fichas/pacotes/): The .zip with manifest.json, images and fonts.

[Test and develop](https://docs.rpgdesk.com/en/fichas/desenvolvimento/): Test mode, development mode and page errors.

[Webhooks on the sheet](https://docs.rpgdesk.com/en/fichas/webhooks/): Sending data to Zapier, Make or IFTTT.

[New versions](https://docs.rpgdesk.com/en/fichas/versoes/): Updating the sheet without losing the players' data.

[Examples](https://docs.rpgdesk.com/en/fichas/exemplos/): Ready-made sheets and a table, to use and study.

For details, the [Reference](https://docs.rpgdesk.com/en/referencia/) has the manifest, the attributes, the rpgdesk.js API, the verifier and the limits.
