diff --git a/README.md b/README.md
index a2490fa..3e0ca2c 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
- Simplify with fewer moving parts: an easy to self-host, single-file,
+ Simplify with fewer moving parts: an easy to self-host, single-executable,
extensible backend for your mobile, web or desktop application.
Sub-millisecond latencies eliminate the need for dedicated caches, no more
stale or inconsistent data.
diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs
index 4b19121..ecd38fe 100644
--- a/docs/astro.config.mjs
+++ b/docs/astro.config.mjs
@@ -37,12 +37,17 @@ export default defineConfig({
slug: "getting-started/starting-up",
},
{
- label: "First App",
- slug: "getting-started/first-ui-app",
- },
- {
- label: "A CLI App",
- slug: "getting-started/first-cli-app",
+ label: "Tutorials",
+ items: [
+ {
+ label: "API, Vector Search & UI",
+ slug: "getting-started/first-ui-app",
+ },
+ {
+ label: "Data CLI",
+ slug: "getting-started/first-cli-app",
+ },
+ ],
},
{
label: "Philosophy",
diff --git a/docs/src/content/docs/comparison/pocketbase.mdx b/docs/src/content/docs/comparison/pocketbase.mdx
index 721bd00..e93a97b 100644
--- a/docs/src/content/docs/comparison/pocketbase.mdx
+++ b/docs/src/content/docs/comparison/pocketbase.mdx
@@ -3,9 +3,9 @@ title: PocketBase
description: Comparing TrailBase & PocketBase.
---
-Firstly, PocketBase is amazing! It based the trail for single-file, SQLite
-application bases, is incredibly easy-to-use, and a polished experience. Gani,
-the person behind it, is a mad scientist.
+Firstly, PocketBase is amazing! It based the trail for single-executable,
+SQLite application bases, is incredibly easy-to-use, and a polished
+experience. Gani, the person behind it, is a mad scientist.
At the surface-level there are a lot of similarities between PocketBase and
TrailBase. In this comparison, we'll dive a little deeper and have a closer
@@ -49,6 +49,7 @@ Likewise, TrailBase has a few nifty tricks up its sleeve:
being enforced all the way down to the database level[^4].
- TrailBase's JavaScript runtime supports full ES6, TypeScript transpilation,
and is built on V8 making it [~40x faster](/reference/benchmarks/#javascript-performance).
+ Supporting ES makes it easier to integrate popular JS frameworks for SSR.
- First-class access to all of SQLite's features and capabilities.
- A simple auth UI.
- Stateless JWT auth-tokens for simple, hermetic authentication in other
diff --git a/docs/src/content/docs/getting-started/first-cli-app.mdx b/docs/src/content/docs/getting-started/first-cli-app.mdx
index 640f997..17e34c5 100644
--- a/docs/src/content/docs/getting-started/first-cli-app.mdx
+++ b/docs/src/content/docs/getting-started/first-cli-app.mdx
@@ -6,7 +6,7 @@ import { Code } from "@astrojs/starlight/components";
import { Aside } from "@astrojs/starlight/components";
In this tutorial, we'll set up a database with an IMDB test dataset, spin up
-TrailBase and write a simple client CLI application to access the data using
+TrailBase and write a simple client CLI application to query the data using
*Record APIs*.
In an effort to demonstrate TrailBase's loose coupling and the possibility of
@@ -161,12 +161,12 @@ version and copy&paste the JSON schema from above.
With the generated types, we can use the TrailBase TypeScript client to write
the following program:
-import fillCode from "@root/examples/tutorial/scripts/src/fill.ts?raw";
+import fillCode from "@root/examples/data-cli-tutorial/src/fill.ts?raw";
diff --git a/docs/src/content/docs/getting-started/first-ui-app.mdx b/docs/src/content/docs/getting-started/first-ui-app.mdx
index d8ee5bd..3d705e5 100644
--- a/docs/src/content/docs/getting-started/first-ui-app.mdx
+++ b/docs/src/content/docs/getting-started/first-ui-app.mdx
@@ -13,7 +13,7 @@ production-ready web app all in ~100 lines of code.
- ![screenshot](../../../../../examples/coffeesearch/assets/screenshot.png)
+ ![screenshot](../../../../../examples/coffee-vector-search/assets/screenshot.png)
@@ -24,7 +24,7 @@ can be downloaded to follow along by running:
```bash
$ git clone https://github.com/trailbaseio/trailbase.git
-$ cd trailbase/examples/coffeesearch
+$ cd trailbase/examples/coffee-vector-search
```
import GettingTrailBase from "./_getting_trailbase.md";
@@ -37,15 +37,15 @@ import GettingTrailBase from "./_getting_trailbase.md";
Before building the app, let's import some data. Keeping it simple,
we'll use the `sqlite3` CLI[^1] directly to import
-`examples/coffeesearch/arabica_data_cleaned.csv` with the following SQL
+`examples/coffee-vector-search/arabica_data_cleaned.csv` with the following SQL
script:
-import importScript from "@root/examples/coffeesearch/import.sql?raw";
+import importScript from "@root/examples/coffee-vector-search/import.sql?raw";
@@ -54,7 +54,7 @@ Note that we didn't initialize the vector `embedding`. This is merely because
We'll update the entries later on, adding the embedding as part of our initial
database migrations[^2].
-From within the `example/coffeesearch` directory, you can execute the script
+From within the `example/coffee-vector-search` directory, you can execute the script
above and import the coffee data by running:
```bash
@@ -91,16 +91,16 @@ Any time you start `trail run`[^3], JavaScript and TypeScript files under
We can use this to register custom HTTP API routes among other things.
-Let's have a quick look at `examples/coffeesearch/traildepot/scripts/main.ts`,
+Let's have a quick look at `examples/coffee-vector-search/traildepot/scripts/main.ts`,
which defines a `/search` API route we'll later use in our application to
find coffees most closely matching our desired coffee notes:
-import handlerCode from "@root/examples/coffeesearch/traildepot/scripts/main.ts?raw";
+import handlerCode from "@root/examples/coffee-vector-search/traildepot/scripts/main.ts?raw";
@@ -141,12 +141,12 @@ framework, e.g.: `npm create vite@latest my-project -- --template react`.
Our provided reference implementation, renders 4 numeric input fields to search
for coffee with a certain aroma, flavor, acidity and sweetness score:
-import uiCode from "../../../../../examples/coffeesearch/src/App.tsx?raw";
+import uiCode from "../../../../../examples/coffee-vector-search/src/App.tsx?raw";
@@ -190,7 +190,7 @@ depending on a pyramid of shared libraries or requiring other services to be up
and running like a separate database server.
This makes it very easy to just copy the files over to your server or bundle
everything in a single container.
-`examples/coffeesearch/Dockerfile` is an example of how you can both build and
+`examples/coffee-vector-search/Dockerfile` is an example of how you can both build and
bundle using Docker. In fact,
```
diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx
index 4c36576..ea35e4d 100644
--- a/docs/src/content/docs/index.mdx
+++ b/docs/src/content/docs/index.mdx
@@ -103,9 +103,9 @@ import { Duration100kInsertsChart } from "./reference/_benchmarks/benchmarks.tsx
- TrailBase is a small, single file, static binary that is incredibly easy
- to deploy **consistently** across integration testing, development, pre-prod,
- and production environments including edge.
+ TrailBase is a small static binary that is incredibly easy to deploy
+ **consistently** across integration testing, development, pre-prod, and
+ production environments including edge.
Architecturally, TrailBase aims to be a simple, thin abstraction around
standards helping full or piece-meal adoption and avoiding lock-in.
diff --git a/examples/coffeesearch/.dockerignore b/examples/coffee-vector-search/.dockerignore
similarity index 100%
rename from examples/coffeesearch/.dockerignore
rename to examples/coffee-vector-search/.dockerignore
diff --git a/examples/coffeesearch/.gitignore b/examples/coffee-vector-search/.gitignore
similarity index 100%
rename from examples/coffeesearch/.gitignore
rename to examples/coffee-vector-search/.gitignore
diff --git a/examples/coffeesearch/Dockerfile b/examples/coffee-vector-search/Dockerfile
similarity index 100%
rename from examples/coffeesearch/Dockerfile
rename to examples/coffee-vector-search/Dockerfile
diff --git a/examples/coffeesearch/Makefile b/examples/coffee-vector-search/Makefile
similarity index 100%
rename from examples/coffeesearch/Makefile
rename to examples/coffee-vector-search/Makefile
diff --git a/examples/coffeesearch/README.md b/examples/coffee-vector-search/README.md
similarity index 100%
rename from examples/coffeesearch/README.md
rename to examples/coffee-vector-search/README.md
diff --git a/examples/coffeesearch/arabica_data_cleaned.csv b/examples/coffee-vector-search/arabica_data_cleaned.csv
similarity index 100%
rename from examples/coffeesearch/arabica_data_cleaned.csv
rename to examples/coffee-vector-search/arabica_data_cleaned.csv
diff --git a/examples/coffeesearch/assets/screenshot.png b/examples/coffee-vector-search/assets/screenshot.png
similarity index 100%
rename from examples/coffeesearch/assets/screenshot.png
rename to examples/coffee-vector-search/assets/screenshot.png
diff --git a/examples/coffeesearch/eslint.config.js b/examples/coffee-vector-search/eslint.config.js
similarity index 100%
rename from examples/coffeesearch/eslint.config.js
rename to examples/coffee-vector-search/eslint.config.js
diff --git a/examples/coffeesearch/import.sql b/examples/coffee-vector-search/import.sql
similarity index 100%
rename from examples/coffeesearch/import.sql
rename to examples/coffee-vector-search/import.sql
diff --git a/examples/coffeesearch/index.html b/examples/coffee-vector-search/index.html
similarity index 100%
rename from examples/coffeesearch/index.html
rename to examples/coffee-vector-search/index.html
diff --git a/examples/coffeesearch/package.json b/examples/coffee-vector-search/package.json
similarity index 95%
rename from examples/coffeesearch/package.json
rename to examples/coffee-vector-search/package.json
index 55b76cc..31755b0 100644
--- a/examples/coffeesearch/package.json
+++ b/examples/coffee-vector-search/package.json
@@ -1,5 +1,5 @@
{
- "name": "coffeesearch",
+ "name": "coffee-vector-search",
"private": true,
"version": "0.1.0",
"type": "module",
diff --git a/examples/coffeesearch/src/App.css b/examples/coffee-vector-search/src/App.css
similarity index 100%
rename from examples/coffeesearch/src/App.css
rename to examples/coffee-vector-search/src/App.css
diff --git a/examples/coffeesearch/src/App.tsx b/examples/coffee-vector-search/src/App.tsx
similarity index 100%
rename from examples/coffeesearch/src/App.tsx
rename to examples/coffee-vector-search/src/App.tsx
diff --git a/examples/coffeesearch/src/index.css b/examples/coffee-vector-search/src/index.css
similarity index 100%
rename from examples/coffeesearch/src/index.css
rename to examples/coffee-vector-search/src/index.css
diff --git a/examples/coffeesearch/src/main.tsx b/examples/coffee-vector-search/src/main.tsx
similarity index 100%
rename from examples/coffeesearch/src/main.tsx
rename to examples/coffee-vector-search/src/main.tsx
diff --git a/examples/coffeesearch/src/vite-env.d.ts b/examples/coffee-vector-search/src/vite-env.d.ts
similarity index 100%
rename from examples/coffeesearch/src/vite-env.d.ts
rename to examples/coffee-vector-search/src/vite-env.d.ts
diff --git a/examples/coffeesearch/traildepot/.gitignore b/examples/coffee-vector-search/traildepot/.gitignore
similarity index 100%
rename from examples/coffeesearch/traildepot/.gitignore
rename to examples/coffee-vector-search/traildepot/.gitignore
diff --git a/examples/coffeesearch/traildepot/config.textproto b/examples/coffee-vector-search/traildepot/config.textproto
similarity index 100%
rename from examples/coffeesearch/traildepot/config.textproto
rename to examples/coffee-vector-search/traildepot/config.textproto
diff --git a/examples/coffeesearch/traildepot/migrations/U1732092075__crate_coffee_table.sql b/examples/coffee-vector-search/traildepot/migrations/U1732092075__crate_coffee_table.sql
similarity index 100%
rename from examples/coffeesearch/traildepot/migrations/U1732092075__crate_coffee_table.sql
rename to examples/coffee-vector-search/traildepot/migrations/U1732092075__crate_coffee_table.sql
diff --git a/examples/coffeesearch/traildepot/scripts/main.ts b/examples/coffee-vector-search/traildepot/scripts/main.ts
similarity index 100%
rename from examples/coffeesearch/traildepot/scripts/main.ts
rename to examples/coffee-vector-search/traildepot/scripts/main.ts
diff --git a/examples/coffeesearch/tsconfig.json b/examples/coffee-vector-search/tsconfig.json
similarity index 100%
rename from examples/coffeesearch/tsconfig.json
rename to examples/coffee-vector-search/tsconfig.json
diff --git a/examples/coffeesearch/vite.config.ts b/examples/coffee-vector-search/vite.config.ts
similarity index 100%
rename from examples/coffeesearch/vite.config.ts
rename to examples/coffee-vector-search/vite.config.ts
diff --git a/examples/ssr/solid-ssr-app/.gitignore b/examples/colab-clicker-ssr/.gitignore
similarity index 100%
rename from examples/ssr/solid-ssr-app/.gitignore
rename to examples/colab-clicker-ssr/.gitignore
diff --git a/examples/ssr/Makefile b/examples/colab-clicker-ssr/Makefile
similarity index 92%
rename from examples/ssr/Makefile
rename to examples/colab-clicker-ssr/Makefile
index e670aec..8261c0f 100644
--- a/examples/ssr/Makefile
+++ b/examples/colab-clicker-ssr/Makefile
@@ -1,5 +1,5 @@
TRAILBIN ?= RUST_BACKTRACE=1 cargo run --
-DISTDIR := solid-ssr-app/dist
+DISTDIR := dist
run: traildepot/scripts/entry-server.js
${TRAILBIN} --data-dir=traildepot run --public-dir=${DISTDIR}/client
diff --git a/examples/ssr/README.md b/examples/colab-clicker-ssr/README.md
similarity index 100%
rename from examples/ssr/README.md
rename to examples/colab-clicker-ssr/README.md
diff --git a/examples/ssr/solid-ssr-app/eslint.config.mjs b/examples/colab-clicker-ssr/eslint.config.mjs
similarity index 93%
rename from examples/ssr/solid-ssr-app/eslint.config.mjs
rename to examples/colab-clicker-ssr/eslint.config.mjs
index c1105f9..834fbb9 100644
--- a/examples/ssr/solid-ssr-app/eslint.config.mjs
+++ b/examples/colab-clicker-ssr/eslint.config.mjs
@@ -6,7 +6,7 @@ export default [
pluginJs.configs.recommended,
...tseslint.configs.recommended,
{
- ignores: ["dist/", "node_modules/"],
+ ignores: ["dist/", "node_modules/", "traildepot/"],
},
{
files: ["**/*.{js,mjs,cjs,mts,ts,tsx,jsx}"],
diff --git a/examples/ssr/solid-ssr-app/index.html b/examples/colab-clicker-ssr/index.html
similarity index 100%
rename from examples/ssr/solid-ssr-app/index.html
rename to examples/colab-clicker-ssr/index.html
diff --git a/examples/ssr/solid-ssr-app/package.json b/examples/colab-clicker-ssr/package.json
similarity index 100%
rename from examples/ssr/solid-ssr-app/package.json
rename to examples/colab-clicker-ssr/package.json
diff --git a/examples/ssr/solid-ssr-app/pnpm-lock.yaml b/examples/colab-clicker-ssr/pnpm-lock.yaml
similarity index 100%
rename from examples/ssr/solid-ssr-app/pnpm-lock.yaml
rename to examples/colab-clicker-ssr/pnpm-lock.yaml
diff --git a/examples/ssr/solid-ssr-app/server.js b/examples/colab-clicker-ssr/server.js
similarity index 100%
rename from examples/ssr/solid-ssr-app/server.js
rename to examples/colab-clicker-ssr/server.js
diff --git a/examples/ssr/solid-ssr-app/src/App.tsx b/examples/colab-clicker-ssr/src/App.tsx
similarity index 100%
rename from examples/ssr/solid-ssr-app/src/App.tsx
rename to examples/colab-clicker-ssr/src/App.tsx
diff --git a/examples/ssr/solid-ssr-app/src/entry-client.tsx b/examples/colab-clicker-ssr/src/entry-client.tsx
similarity index 100%
rename from examples/ssr/solid-ssr-app/src/entry-client.tsx
rename to examples/colab-clicker-ssr/src/entry-client.tsx
diff --git a/examples/ssr/solid-ssr-app/src/entry-server.tsx b/examples/colab-clicker-ssr/src/entry-server.tsx
similarity index 100%
rename from examples/ssr/solid-ssr-app/src/entry-server.tsx
rename to examples/colab-clicker-ssr/src/entry-server.tsx
diff --git a/examples/ssr/solid-ssr-app/src/index.css b/examples/colab-clicker-ssr/src/index.css
similarity index 100%
rename from examples/ssr/solid-ssr-app/src/index.css
rename to examples/colab-clicker-ssr/src/index.css
diff --git a/examples/ssr/solid-ssr-app/src/vite-env.d.ts b/examples/colab-clicker-ssr/src/vite-env.d.ts
similarity index 100%
rename from examples/ssr/solid-ssr-app/src/vite-env.d.ts
rename to examples/colab-clicker-ssr/src/vite-env.d.ts
diff --git a/examples/ssr/solid-ssr-app/tailwind.config.ts b/examples/colab-clicker-ssr/tailwind.config.ts
similarity index 100%
rename from examples/ssr/solid-ssr-app/tailwind.config.ts
rename to examples/colab-clicker-ssr/tailwind.config.ts
diff --git a/examples/ssr/traildepot/.gitignore b/examples/colab-clicker-ssr/traildepot/.gitignore
similarity index 100%
rename from examples/ssr/traildepot/.gitignore
rename to examples/colab-clicker-ssr/traildepot/.gitignore
diff --git a/examples/ssr/traildepot/config.textproto b/examples/colab-clicker-ssr/traildepot/config.textproto
similarity index 100%
rename from examples/ssr/traildepot/config.textproto
rename to examples/colab-clicker-ssr/traildepot/config.textproto
diff --git a/examples/ssr/traildepot/migrations/U1725019360__create_admin_user.sql b/examples/colab-clicker-ssr/traildepot/migrations/U1725019360__create_admin_user.sql
similarity index 100%
rename from examples/ssr/traildepot/migrations/U1725019360__create_admin_user.sql
rename to examples/colab-clicker-ssr/traildepot/migrations/U1725019360__create_admin_user.sql
diff --git a/examples/ssr/traildepot/migrations/U1737638313__create_table_counter.sql b/examples/colab-clicker-ssr/traildepot/migrations/U1737638313__create_table_counter.sql
similarity index 100%
rename from examples/ssr/traildepot/migrations/U1737638313__create_table_counter.sql
rename to examples/colab-clicker-ssr/traildepot/migrations/U1737638313__create_table_counter.sql
diff --git a/examples/ssr/traildepot/scripts/main.ts b/examples/colab-clicker-ssr/traildepot/scripts/main.ts
similarity index 100%
rename from examples/ssr/traildepot/scripts/main.ts
rename to examples/colab-clicker-ssr/traildepot/scripts/main.ts
diff --git a/examples/ssr/solid-ssr-app/tsconfig.json b/examples/colab-clicker-ssr/tsconfig.json
similarity index 91%
rename from examples/ssr/solid-ssr-app/tsconfig.json
rename to examples/colab-clicker-ssr/tsconfig.json
index 55aff82..96b492d 100644
--- a/examples/ssr/solid-ssr-app/tsconfig.json
+++ b/examples/colab-clicker-ssr/tsconfig.json
@@ -24,7 +24,7 @@
"paths": {
"@/*": ["./src/*"],
- "@bindings/*": ["../../../trailbase-core/bindings/*"]
+ "@bindings/*": ["../../trailbase-core/bindings/*"]
}
},
"include": [
diff --git a/examples/ssr/solid-ssr-app/vite.config.ts b/examples/colab-clicker-ssr/vite.config.ts
similarity index 100%
rename from examples/ssr/solid-ssr-app/vite.config.ts
rename to examples/colab-clicker-ssr/vite.config.ts
diff --git a/examples/tutorial/scripts/.gitignore b/examples/data-cli-tutorial/.gitignore
similarity index 100%
rename from examples/tutorial/scripts/.gitignore
rename to examples/data-cli-tutorial/.gitignore
diff --git a/examples/data-cli-tutorial/Makefile b/examples/data-cli-tutorial/Makefile
new file mode 100644
index 0000000..1993f7e
--- /dev/null
+++ b/examples/data-cli-tutorial/Makefile
@@ -0,0 +1,10 @@
+read: fill
+ pnpm run read
+
+fill:
+ pnpm run fill
+
+clean:
+ rm -rf traildepot/data
+
+.PHONY: clean read fill
diff --git a/examples/tutorial/README.md b/examples/data-cli-tutorial/README.md
similarity index 100%
rename from examples/tutorial/README.md
rename to examples/data-cli-tutorial/README.md
diff --git a/examples/tutorial/data/README.md b/examples/data-cli-tutorial/data/README.md
similarity index 100%
rename from examples/tutorial/data/README.md
rename to examples/data-cli-tutorial/data/README.md
diff --git a/examples/tutorial/data/Top_1000_IMDb_movies_New_version.csv b/examples/data-cli-tutorial/data/Top_1000_IMDb_movies_New_version.csv
similarity index 100%
rename from examples/tutorial/data/Top_1000_IMDb_movies_New_version.csv
rename to examples/data-cli-tutorial/data/Top_1000_IMDb_movies_New_version.csv
diff --git a/examples/tutorial/scripts/eslint.config.mjs b/examples/data-cli-tutorial/eslint.config.mjs
similarity index 84%
rename from examples/tutorial/scripts/eslint.config.mjs
rename to examples/data-cli-tutorial/eslint.config.mjs
index 640b6d5..4fb2fb6 100644
--- a/examples/tutorial/scripts/eslint.config.mjs
+++ b/examples/data-cli-tutorial/eslint.config.mjs
@@ -5,10 +5,10 @@ export default [
pluginJs.configs.recommended,
...tseslint.configs.recommended,
{
- ignores: ["dist/", "node_modules/", "types"],
+ ignores: ["dist/", "node_modules/", "types", "traildepot"],
},
{
- files: ["scripts/*.{js,mjs,cjs,mts,ts,tsx,jsx}"],
+ files: ["src/*.{js,mjs,cjs,mts,ts,tsx,jsx}"],
rules: {
// https://typescript-eslint.io/rules/no-explicit-any/
"@typescript-eslint/no-explicit-any": "warn",
diff --git a/examples/tutorial/scripts/package.json b/examples/data-cli-tutorial/package.json
similarity index 100%
rename from examples/tutorial/scripts/package.json
rename to examples/data-cli-tutorial/package.json
diff --git a/examples/tutorial/scripts/schema/movie.json b/examples/data-cli-tutorial/schema/movie.json
similarity index 100%
rename from examples/tutorial/scripts/schema/movie.json
rename to examples/data-cli-tutorial/schema/movie.json
diff --git a/examples/tutorial/scripts/src/fill.ts b/examples/data-cli-tutorial/src/fill.ts
similarity index 100%
rename from examples/tutorial/scripts/src/fill.ts
rename to examples/data-cli-tutorial/src/fill.ts
diff --git a/examples/tutorial/scripts/src/index.ts b/examples/data-cli-tutorial/src/index.ts
similarity index 100%
rename from examples/tutorial/scripts/src/index.ts
rename to examples/data-cli-tutorial/src/index.ts
diff --git a/examples/tutorial/traildepot/.gitignore b/examples/data-cli-tutorial/traildepot/.gitignore
similarity index 100%
rename from examples/tutorial/traildepot/.gitignore
rename to examples/data-cli-tutorial/traildepot/.gitignore
diff --git a/examples/tutorial/traildepot/config.textproto b/examples/data-cli-tutorial/traildepot/config.textproto
similarity index 100%
rename from examples/tutorial/traildepot/config.textproto
rename to examples/data-cli-tutorial/traildepot/config.textproto
diff --git a/examples/tutorial/traildepot/migrations/U1725019360__add_admin_user.sql b/examples/data-cli-tutorial/traildepot/migrations/U1725019360__add_admin_user.sql
similarity index 100%
rename from examples/tutorial/traildepot/migrations/U1725019360__add_admin_user.sql
rename to examples/data-cli-tutorial/traildepot/migrations/U1725019360__add_admin_user.sql
diff --git a/examples/tutorial/traildepot/migrations/U1728810800__create_table_movies.sql b/examples/data-cli-tutorial/traildepot/migrations/U1728810800__create_table_movies.sql
similarity index 100%
rename from examples/tutorial/traildepot/migrations/U1728810800__create_table_movies.sql
rename to examples/data-cli-tutorial/traildepot/migrations/U1728810800__create_table_movies.sql
diff --git a/examples/tutorial/scripts/tsconfig.json b/examples/data-cli-tutorial/tsconfig.json
similarity index 87%
rename from examples/tutorial/scripts/tsconfig.json
rename to examples/data-cli-tutorial/tsconfig.json
index f145c3d..b55a326 100644
--- a/examples/tutorial/scripts/tsconfig.json
+++ b/examples/data-cli-tutorial/tsconfig.json
@@ -11,7 +11,7 @@
"paths": {
"@/*": ["./src/*"],
"@schema/*": ["./types/*"],
- "@bindings/*": ["../../../trailbase-core/bindings/*"]
+ "@bindings/*": ["../../trailbase-core/bindings/*"]
}
},
"include": ["src/**/*"],
diff --git a/examples/tutorial/scripts/types/movie.ts b/examples/data-cli-tutorial/types/movie.ts
similarity index 100%
rename from examples/tutorial/scripts/types/movie.ts
rename to examples/data-cli-tutorial/types/movie.ts
diff --git a/examples/tutorial/Makefile b/examples/tutorial/Makefile
deleted file mode 100644
index ef9dede..0000000
--- a/examples/tutorial/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-clean:
- rm -rf traildepot/data
-
-.PHONY: clean
diff --git a/examples/tutorial/scripts/Makefile b/examples/tutorial/scripts/Makefile
deleted file mode 100644
index f52870e..0000000
--- a/examples/tutorial/scripts/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-default: types/movie.ts
-
-types/movie.ts: schema/movie.json
- pnpm quicktype -s schema $< -o $@
-
-schema/movie.json:
- cargo run -- --data-dir=../traildepot schema movies --mode insert > $@
-
-clean:
- rm -f types/* schema/*
-
-.PHONY: clean
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fd068bc..72e83d9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -156,7 +156,7 @@ importers:
specifier: ^0.33.5
version: 0.33.5
- examples/coffeesearch:
+ examples/coffee-vector-search:
dependencies:
react:
specifier: ^19.0.0
@@ -170,10 +170,10 @@ importers:
version: 9.18.0
'@types/react':
specifier: ^19.0.7
- version: 19.0.7
+ version: 19.0.8
'@types/react-dom':
specifier: ^19.0.3
- version: 19.0.3(@types/react@19.0.7)
+ version: 19.0.3(@types/react@19.0.8)
'@vitejs/plugin-react':
specifier: ^4.3.4
version: 4.3.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
@@ -202,20 +202,14 @@ importers:
specifier: ^6.0.11
version: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
- examples/ssr/solid-ssr-app:
+ examples/colab-clicker-ssr:
dependencies:
- '@tailwindcss/vite':
- specifier: ^4.0.0
- version: 4.0.0(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
solid-js:
specifier: ^1.9.3
version: 1.9.4
- tailwindcss:
- specifier: ^3.4.17
- version: 3.4.17(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3))
trailbase:
specifier: workspace:*
- version: link:../../../trailbase-core/js/client
+ version: link:../../trailbase-core/js/client
devDependencies:
'@eslint/js':
specifier: ^9.18.0
@@ -241,9 +235,15 @@ importers:
globals:
specifier: ^15.14.0
version: 15.14.0
+ prettier:
+ specifier: ^3.4.2
+ version: 3.4.2
sirv:
specifier: ^3.0.0
version: 3.0.0
+ tailwindcss:
+ specifier: ^3.4.17
+ version: 3.4.17(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3))
typescript-eslint:
specifier: ^8.21.0
version: 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)
@@ -257,14 +257,14 @@ importers:
specifier: ^2.11.0
version: 2.11.0(solid-js@1.9.4)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
- examples/tutorial/scripts:
+ examples/data-cli-tutorial:
dependencies:
csv-parse:
specifier: ^5.6.0
version: 5.6.0
trailbase:
specifier: workspace:*
- version: link:../../../trailbase-core/js/client
+ version: link:../../trailbase-core/js/client
devDependencies:
'@eslint/js':
specifier: ^9.18.0
@@ -563,6 +563,12 @@ importers:
trailbase-core/js/runtime:
devDependencies:
+ '@eslint/js':
+ specifier: ^9.18.0
+ version: 9.18.0
+ eslint:
+ specifier: ^9.18.0
+ version: 9.18.0(jiti@2.4.2)
prettier:
specifier: ^3.4.2
version: 3.4.2
@@ -1752,89 +1758,11 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
- '@tailwindcss/node@4.0.0':
- resolution: {integrity: sha512-tfG2uBvo6j6kDIPmntxwXggCOZAt7SkpAXJ6pTIYirNdk5FBqh/CZZ9BZPpgcl/tNFLs6zc4yghM76sqiELG9g==}
-
- '@tailwindcss/oxide-android-arm64@4.0.0':
- resolution: {integrity: sha512-EAhjU0+FIdyGPR+7MbBWubLLPtmOu+p7c2egTTFBRk/n//zYjNvVK0WhcBK5Y7oUB5mo4EjA2mCbY7dcEMWSRw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.0.0':
- resolution: {integrity: sha512-hdz4xnSWS11cIp+7ye+3dGHqs0X33z+BXXTtgPOguDWVa+TdXUzwxonklSzf5wlJFuot3dv5eWzhlNai0oYYQg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.0.0':
- resolution: {integrity: sha512-+dOUUaXTkPKKhtUI9QtVaYg+MpmLh2CN0dHohiYXaBirEyPMkjaT0zbRgzQlNnQWjCVVXPQluIEb0OMEjSTH+Q==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.0.0':
- resolution: {integrity: sha512-CJhGDhxnrmu4SwyC62fA+wP24MhA/TZlIhRHqg1kRuIHoGoVR2uSSm1qxTxU37tSSZj8Up0q6jsBJCAP4k7rgQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0':
- resolution: {integrity: sha512-Wy7Av0xzXfY2ujZBcYy4+7GQm25/J1iHvlQU2CfwdDCuPWfIjYzR6kggz+uVdSJyKV2s64znchBxRE8kV4uXSA==}
- engines: {node: '>= 10'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.0.0':
- resolution: {integrity: sha512-srwBo2l6pvM0swBntc1ucuhGsfFOLkqPRFQ3dWARRTfSkL1U9nAsob2MKc/n47Eva/W9pZZgMOuf7rDw8pK1Ew==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-musl@4.0.0':
- resolution: {integrity: sha512-abhusswkduYWuezkBmgo0K0/erGq3M4Se5xP0fhc/0dKs0X/rJUYYCFWntHb3IGh3aVzdQ0SXJs93P76DbUqtw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-gnu@4.0.0':
- resolution: {integrity: sha512-hGtRYIUEx377/HlU49+jvVKKwU1MDSKYSMMs0JFO2Wp7LGxk5+0j5+RBk9NFnmp/lbp32yPTgIOO5m1BmDq36A==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-musl@4.0.0':
- resolution: {integrity: sha512-7xgQgSAThs0I14VAgmxpJnK6XFSZBxHMGoDXkLyYkEnu+8WRQMbCP93dkCUn2PIv+Q+JulRgc00PJ09uORSLXQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.0.0':
- resolution: {integrity: sha512-qEcgTIPcWY5ZE7f6VxQ/JPrSFMcehzVIlZj7sGE3mVd5YWreAT+Fl1vSP8q2pjnWXn0avZG3Iw7a2hJQAm+fTQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@tailwindcss/oxide-win32-x64-msvc@4.0.0':
- resolution: {integrity: sha512-bqT0AY8RXb8GMDy28JtngvqaOSB2YixbLPLvUo6I6lkvvUwA6Eqh2Tj60e2Lh7O/k083f8tYiB0WEK4wmTI7Jg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/oxide@4.0.0':
- resolution: {integrity: sha512-W3FjpJgy4VV1JiL7iBYDf2n/WkeDg1Il+0Q7eWnqPyvkPPCo/Mbwc5BiaT7dfBNV6tQKAhVE34rU5xl8pSl50w==}
- engines: {node: '>= 10'}
-
'@tailwindcss/typography@0.5.16':
resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
- '@tailwindcss/vite@4.0.0':
- resolution: {integrity: sha512-4uukMiU9gHui8KMPMdWic5SP1O/tmQ1NFSRNrQWmcop5evAVl/LZ6/LuWL3quEiecp2RBcRWwqJrG+mFXlRlew==}
- peerDependencies:
- vite: ^5.2.0 || ^6
-
'@tanstack/form-core@0.41.3':
resolution: {integrity: sha512-ifGRimfnYgc+SQikx8ngWGhIxs5UHutSwUQ1IPFHZ6PRAfCTEEqDtXqaWZGkuzvf8itoxXdwsR+chEdwiPtsPA==}
@@ -1986,8 +1914,8 @@ packages:
peerDependencies:
'@types/react': ^19.0.0
- '@types/react@19.0.7':
- resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==}
+ '@types/react@19.0.8':
+ resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==}
'@types/sax@1.2.7':
resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
@@ -2762,10 +2690,6 @@ packages:
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
- enhanced-resolve@5.18.0:
- resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==}
- engines: {node: '>=10.13.0'}
-
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -4711,13 +4635,6 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
- tailwindcss@4.0.0:
- resolution: {integrity: sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ==}
-
- tapable@2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
-
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
@@ -6773,59 +6690,6 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@tailwindcss/node@4.0.0':
- dependencies:
- enhanced-resolve: 5.18.0
- jiti: 2.4.2
- tailwindcss: 4.0.0
-
- '@tailwindcss/oxide-android-arm64@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.0.0':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.0.0':
- optional: true
-
- '@tailwindcss/oxide@4.0.0':
- optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.0.0
- '@tailwindcss/oxide-darwin-arm64': 4.0.0
- '@tailwindcss/oxide-darwin-x64': 4.0.0
- '@tailwindcss/oxide-freebsd-x64': 4.0.0
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0
- '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0
- '@tailwindcss/oxide-linux-arm64-musl': 4.0.0
- '@tailwindcss/oxide-linux-x64-gnu': 4.0.0
- '@tailwindcss/oxide-linux-x64-musl': 4.0.0
- '@tailwindcss/oxide-win32-arm64-msvc': 4.0.0
- '@tailwindcss/oxide-win32-x64-msvc': 4.0.0
-
'@tailwindcss/typography@0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.124)(typescript@4.9.4)))':
dependencies:
lodash.castarray: 4.4.0
@@ -6842,14 +6706,6 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3))
- '@tailwindcss/vite@4.0.0(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))':
- dependencies:
- '@tailwindcss/node': 4.0.0
- '@tailwindcss/oxide': 4.0.0
- lightningcss: 1.29.1
- tailwindcss: 4.0.0
- vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
-
'@tanstack/form-core@0.41.3':
dependencies:
'@tanstack/store': 0.7.0
@@ -7002,11 +6858,11 @@ snapshots:
'@types/range-parser@1.2.7': {}
- '@types/react-dom@19.0.3(@types/react@19.0.7)':
+ '@types/react-dom@19.0.3(@types/react@19.0.8)':
dependencies:
- '@types/react': 19.0.7
+ '@types/react': 19.0.8
- '@types/react@19.0.7':
+ '@types/react@19.0.8':
dependencies:
csstype: 3.1.3
@@ -7798,7 +7654,7 @@ snapshots:
compressible@2.0.18:
dependencies:
- mime-db: 1.52.0
+ mime-db: 1.53.0
compression@1.7.5:
dependencies:
@@ -8024,11 +7880,6 @@ snapshots:
dependencies:
once: 1.4.0
- enhanced-resolve@5.18.0:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.2.1
-
entities@4.5.0: {}
es-define-property@1.0.1: {}
@@ -8880,7 +8731,8 @@ snapshots:
jiti@1.21.7: {}
- jiti@2.4.2: {}
+ jiti@2.4.2:
+ optional: true
js-base64@3.7.7: {}
@@ -9002,6 +8854,7 @@ snapshots:
lightningcss-linux-x64-musl: 1.29.1
lightningcss-win32-arm64-msvc: 1.29.1
lightningcss-win32-x64-msvc: 1.29.1
+ optional: true
lilconfig@3.1.3: {}
@@ -10696,10 +10549,6 @@ snapshots:
transitivePeerDependencies:
- ts-node
- tailwindcss@4.0.0: {}
-
- tapable@2.2.1: {}
-
tar@6.2.1:
dependencies:
chownr: 2.0.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 4c86dad..0bc208a 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,13 +1,13 @@
packages:
- 'docs'
- 'docs/examples/record_api_ts'
+ - 'examples/blog/web'
+ - 'examples/coffee-vector-search'
+ - 'examples/colab-clicker-ssr'
+ - 'examples/data-cli-tutorial'
- 'trailbase-core/js/admin'
- 'trailbase-core/js/auth'
- 'trailbase-core/js/client'
- - 'examples/blog/web'
- - 'examples/coffeesearch'
- - 'examples/tutorial/scripts'
- - 'examples/ssr/solid-ssr-app'
- 'trailbase-core/js/runtime'
options:
prefer-workspace-packages: true