diff --git a/.gitbook/assets/Screenshot 2024-03-21 at 4.25.22 PM.png b/.gitbook/assets/Screenshot 2024-03-21 at 4.25.22 PM.png
new file mode 100644
index 0000000..ec25577
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-03-21 at 4.25.22 PM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-03-21 at 7.30.43 PM.png b/.gitbook/assets/Screenshot 2024-03-21 at 7.30.43 PM.png
new file mode 100644
index 0000000..30a6894
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-03-21 at 7.30.43 PM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-03-21 at 8.04.40 PM.png b/.gitbook/assets/Screenshot 2024-03-21 at 8.04.40 PM.png
new file mode 100644
index 0000000..a1375da
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-03-21 at 8.04.40 PM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.00.01 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.00.01 AM.png
new file mode 100644
index 0000000..a5e7541
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.00.01 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.08.44 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.08.44 AM.png
new file mode 100644
index 0000000..c25d986
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.08.44 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.13.37 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.13.37 AM.png
new file mode 100644
index 0000000..4520678
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.13.37 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.18.15 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.18.15 AM.png
new file mode 100644
index 0000000..e317dab
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.18.15 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.26.54 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.26.54 AM.png
new file mode 100644
index 0000000..9b838b0
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.26.54 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.38.53 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.38.53 AM.png
new file mode 100644
index 0000000..17a4773
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.38.53 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-06-19 at 1.40.03 AM.png b/.gitbook/assets/Screenshot 2024-06-19 at 1.40.03 AM.png
new file mode 100644
index 0000000..af2d190
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-06-19 at 1.40.03 AM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-09-06 at 3.32.53 PM.png b/.gitbook/assets/Screenshot 2024-09-06 at 3.32.53 PM.png
new file mode 100644
index 0000000..fb154eb
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-09-06 at 3.32.53 PM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-09-06 at 3.35.01 PM.png b/.gitbook/assets/Screenshot 2024-09-06 at 3.35.01 PM.png
new file mode 100644
index 0000000..dac9001
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-09-06 at 3.35.01 PM.png differ
diff --git a/.gitbook/assets/Screenshot 2024-09-06 at 3.36.35 PM.png b/.gitbook/assets/Screenshot 2024-09-06 at 3.36.35 PM.png
new file mode 100644
index 0000000..50a775f
Binary files /dev/null and b/.gitbook/assets/Screenshot 2024-09-06 at 3.36.35 PM.png differ
diff --git a/.gitbook/assets/Screenshot_2024-09-18_at_23.53.24.png b/.gitbook/assets/Screenshot_2024-09-18_at_23.53.24.png
new file mode 100644
index 0000000..a4bddd7
Binary files /dev/null and b/.gitbook/assets/Screenshot_2024-09-18_at_23.53.24.png differ
diff --git a/.gitbook/assets/TRMNL architecture overview.png b/.gitbook/assets/TRMNL architecture overview.png
new file mode 100644
index 0000000..b1420f4
Binary files /dev/null and b/.gitbook/assets/TRMNL architecture overview.png differ
diff --git a/.gitbook/assets/TRMNL-force-refresh-param.png b/.gitbook/assets/TRMNL-force-refresh-param.png
new file mode 100644
index 0000000..09cbb0c
Binary files /dev/null and b/.gitbook/assets/TRMNL-force-refresh-param.png differ
diff --git a/.gitbook/assets/TRMNL-quickstart-markup.png b/.gitbook/assets/TRMNL-quickstart-markup.png
new file mode 100644
index 0000000..eb49635
Binary files /dev/null and b/.gitbook/assets/TRMNL-quickstart-markup.png differ
diff --git a/.gitbook/assets/chart-example.bmp b/.gitbook/assets/chart-example.bmp
new file mode 100644
index 0000000..2174316
Binary files /dev/null and b/.gitbook/assets/chart-example.bmp differ
diff --git a/.gitbook/assets/custom-plugin-quickstart-example-0.0.5-css.png b/.gitbook/assets/custom-plugin-quickstart-example-0.0.5-css.png
new file mode 100644
index 0000000..e4ca05a
Binary files /dev/null and b/.gitbook/assets/custom-plugin-quickstart-example-0.0.5-css.png differ
diff --git a/.gitbook/assets/grayscale (1).png b/.gitbook/assets/grayscale (1).png
new file mode 100644
index 0000000..e0ef99b
Binary files /dev/null and b/.gitbook/assets/grayscale (1).png differ
diff --git a/.gitbook/assets/grayscale-12.png b/.gitbook/assets/grayscale-12.png
new file mode 100644
index 0000000..849b673
Binary files /dev/null and b/.gitbook/assets/grayscale-12.png differ
diff --git a/.gitbook/assets/grayscale.png b/.gitbook/assets/grayscale.png
new file mode 100644
index 0000000..c5400f4
Binary files /dev/null and b/.gitbook/assets/grayscale.png differ
diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png
new file mode 100644
index 0000000..4b67b97
Binary files /dev/null and b/.gitbook/assets/image (1).png differ
diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png
new file mode 100644
index 0000000..6f9a691
Binary files /dev/null and b/.gitbook/assets/image (2).png differ
diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png
new file mode 100644
index 0000000..d94cbda
Binary files /dev/null and b/.gitbook/assets/image (3).png differ
diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png
new file mode 100644
index 0000000..d94cbda
Binary files /dev/null and b/.gitbook/assets/image (4).png differ
diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png
new file mode 100644
index 0000000..3f5763a
Binary files /dev/null and b/.gitbook/assets/image.png differ
diff --git a/.gitbook/assets/plugin-uuid-example.png b/.gitbook/assets/plugin-uuid-example.png
new file mode 100644
index 0000000..427285a
Binary files /dev/null and b/.gitbook/assets/plugin-uuid-example.png differ
diff --git a/.gitbook/assets/trmnl-data-mode-edit-markup.png b/.gitbook/assets/trmnl-data-mode-edit-markup.png
new file mode 100644
index 0000000..8703264
Binary files /dev/null and b/.gitbook/assets/trmnl-data-mode-edit-markup.png differ
diff --git a/.gitbook/assets/trmnl-line-chart-example.png b/.gitbook/assets/trmnl-line-chart-example.png
new file mode 100644
index 0000000..aab59d4
Binary files /dev/null and b/.gitbook/assets/trmnl-line-chart-example.png differ
diff --git a/.gitbook/assets/trmnl-markup-editor-live-preview.png b/.gitbook/assets/trmnl-markup-editor-live-preview.png
new file mode 100644
index 0000000..370d5c7
Binary files /dev/null and b/.gitbook/assets/trmnl-markup-editor-live-preview.png differ
diff --git a/.gitbook/assets/trmnl-merger-variables-calendar-raw-data.png b/.gitbook/assets/trmnl-merger-variables-calendar-raw-data.png
new file mode 100644
index 0000000..60c1aab
Binary files /dev/null and b/.gitbook/assets/trmnl-merger-variables-calendar-raw-data.png differ
diff --git a/.gitbook/assets/trmnl-playlist-drag-drop.png b/.gitbook/assets/trmnl-playlist-drag-drop.png
new file mode 100644
index 0000000..01accb6
Binary files /dev/null and b/.gitbook/assets/trmnl-playlist-drag-drop.png differ
diff --git a/.gitbook/assets/trmnl-playlist-group-example.png b/.gitbook/assets/trmnl-playlist-group-example.png
new file mode 100644
index 0000000..dadafed
Binary files /dev/null and b/.gitbook/assets/trmnl-playlist-group-example.png differ
diff --git a/.gitbook/assets/trmnl-plugin-form.png b/.gitbook/assets/trmnl-plugin-form.png
new file mode 100644
index 0000000..6c3affe
Binary files /dev/null and b/.gitbook/assets/trmnl-plugin-form.png differ
diff --git a/.gitbook/assets/trmnl-private-plugin-webhook-url.png b/.gitbook/assets/trmnl-private-plugin-webhook-url.png
new file mode 100644
index 0000000..2d8876b
Binary files /dev/null and b/.gitbook/assets/trmnl-private-plugin-webhook-url.png differ
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d86f4cd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+---
+description: >-
+ Welcome to TRMNL. Here you can learn how to build plugins, connect your own
+ hardware, and more.
+layout:
+ title:
+ visible: true
+ description:
+ visible: true
+ tableOfContents:
+ visible: true
+ outline:
+ visible: true
+ pagination:
+ visible: false
+---
+
+# 👋 Overview
+
+{% content-ref url="how-it-works.md" %}
+[how-it-works.md](how-it-works.md)
+{% endcontent-ref %}
+
+{% content-ref url="private-plugins/templates.md" %}
+[templates.md](private-plugins/templates.md)
+{% endcontent-ref %}
+
+{% content-ref url="broken-reference" %}
+[Broken link](broken-reference)
+{% endcontent-ref %}
+
+{% content-ref url="broken-reference" %}
+[Broken link](broken-reference)
+{% endcontent-ref %}
+
+{% content-ref url="broken-reference" %}
+[Broken link](broken-reference)
+{% endcontent-ref %}
+
+{% content-ref url="broken-reference" %}
+[Broken link](broken-reference)
+{% endcontent-ref %}
diff --git a/SUMMARY.md b/SUMMARY.md
new file mode 100644
index 0000000..3cd2dde
--- /dev/null
+++ b/SUMMARY.md
@@ -0,0 +1,40 @@
+# Table of contents
+
+* [👋 Overview](README.md)
+* [How it Works](how-it-works.md)
+
+## Private Plugins
+
+* [Screen Templating](private-plugins/templates.md)
+* [🖼️ Plugin Templating (DEPRECATED, hidden)](private-plugins/templates-1.md)
+* [Screen Templating (Graphics)](private-plugins/templates-advanced.md)
+* [Create a screen](private-plugins/create-a-screen.md)
+
+## DIY TRMNL (Advanced)
+
+* [Introduction](diy/introduction.md)
+* [BYOD](diy/byod.md)
+* [BYOD/S](diy/byod-s.md)
+* [BYOS](diy/byos.md)
+
+## Plugin Marketplace
+
+* [Introduction](plugin-marketplace/introduction.md)
+* [Plugin Creation](plugin-marketplace/plugin-creation.md)
+* [Plugin Installation Flow](plugin-marketplace/plugin-installation-flow.md)
+* [Plugin Management Flow](plugin-marketplace/plugin-management-flow.md)
+* [Plugin Screen Generation Flow](plugin-marketplace/plugin-screen-generation-flow.md)
+* [Plugin Uninstallation Flow](plugin-marketplace/plugin-uninstallation-flow.md)
+* [Going Live](plugin-marketplace/going-live.md)
+
+## Private API
+
+* [Introduction](private-api/introduction.md)
+* [Fetch Screen Content](private-api/fetch-screen-content.md)
+* [Fetch Plugin Content](private-api/fetch-plugin-content.md)
+
+## Partners API
+
+* [Introduction](partners-api/introduction.md)
+* [Getting Started](partners-api/getting-started.md)
+* [Provisioning Devices](partners-api/provisioning-devices.md)
diff --git a/diy/byod-s.md b/diy/byod-s.md
new file mode 100644
index 0000000..2b395a2
--- /dev/null
+++ b/diy/byod-s.md
@@ -0,0 +1,53 @@
+---
+description: Bring your own device, and build your own server for the device to ping.
+---
+
+# BYOD/S
+
+In the BYOD/S model, the only TRMNL IP is our [open source firmware](https://github.com/usetrmnl/firmware). Technically we don't owe you any explanation to get up and running, but we'll do it anyway. ;)
+
+### Device setup
+
+See our [BYOD guide](byod.md) for instructions to build a device that's compatible with our firmware.
+
+### Server quickstart
+
+The TRMNL web server generates bitmap images. When a device pings our web server, the next-in-queue image is shared as an absolute URL inside a JSON response like this:
+
+```
+{
+ "image_url"=>"https://trmnl.s3.us-east-2.amazonaws.com/path-to-img.bmp"
+}
+```
+
+You can demo this process from the command line by installing [ImageMagick](https://en.wikipedia.org/wiki/ImageMagick), then invoking `convert`:
+
+```
+convert regular_img.png -depth 1 eink_compatible.bmp
+```
+
+With this in mind, building your own server simply necessitates creating an endpoint that responds with links to firmware-compatible Bitmap images.
+
+Assuming you've set up a device, simply...
+
+1. change the base URL to your own server or local network from the WiFi Captive Portal
+2. mimic the `api/setup` and `api/display` endpoints to respond per the [firmware readme](https://github.com/usetrmnl/firmware)
+3. profit
+
+### Other infrastructure
+
+In the quickstarter above we glossed over a critical element: "next-in-queue" images.
+
+At TRMNL we use a Playlists table to manage the ordering of plugin instances, so that users can drag/drop different screen content in any sequence they like.
+
+ Drag/Drop Playlists UI Playlist Groups in action

| Implementation | Dashboard | Auto-Provisioning | Devices | JSON Data API | Image Previews | Playlists | Plugins | Recipes | Docker | Test Suite | Maintained | Semantic Versioning |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TRMNL Terminus (Ruby + Hanami) | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟡 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
| TRMNL (Elixir + Phoenix) | 🔴 | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | ⚪️ |
| TRMNL (Ruby + Sinatra) | 🟡 | 🔴 | 🟡 | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🟢 | 🟢 | ⚫️ | 🟢 |
| Community (Python + Django) | 🔴 | 🔴 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 | 🟢 | 🔴 | 🟢 | ⚪️ |
| Community (PHP + Laravel) | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 |
| Community (Next.js) | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🟢 | 🔴 | 🔴 | 🟢 | ⚪️ |
Demo
" + "file_name": "demo" + } +}' +``` + +#### Logs + +```bash +curl "http://byos.local/api/log" \ + -H 'ID:
Device, Server, Native Plugins, 3rd Party Developer, Firmware Components

TRMNL public plugin client
.png)


Force Refresh toast message



Private Plugin > Edit Markup

Example - Google Calendar "data mode"

Private Plugin Webhook URL w/ UUID

Sample screen render with TRMNL's plugin CSS stylesheet

Grayscale shades
| Shade | Class |
|---|---|
| Black | r-bg-black |
| Gray 1 | r-bg-gray-1 |
| Gray 2 | r-bg-gray-2 |
| Gray 3 | r-bg-gray-3 |
| Gray 4 | r-bg-gray-4 |
| Gray 5 | r-bg-gray-5 |
| Gray 6 | r-bg-gray-6 |
| Gray 7 | r-bg-gray-7 |
| White | r-bg-white |




Example of List components

| Metric | +Value | +
|---|---|
| Recipients | +20,129 | +
| Open rate | +6.55% | +
| Click rate | +0.76% | +
| Unsubscribes | +14 | +
| Clicks | +654 | +
| Status | +Completed | +



Un-styled chart example

Styled line chart example

TRMNL markup editor with live preview

Sample screen render with TRMNL's plugin CSS stylesheet