NobGit
public imalexnord read

Slot

Calendar-first scheduling powered by Cloudflare Workers and Google Calendar.

Languages

Repository composition by tracked source files.

TypeScript
TypeScript 79% CSS 19% SQL 2% HTML 0%
Create file Wiki Documentation
Clone
https://nobgit.com/user/imalexnord/slot.git
ssh://[email protected]:2222/user/imalexnord/slot.git

Commit

Remove personal domain defaults

56fdb61
Alex Nord <[email protected]> 3 days ago
ARCHITECTURE.md             |  2 +-
 MIGRATING_FROM_CLOUDMEET.md | 55 ---------------------------------------------
 README.md                   | 31 +++++++++++++++----------
 scripts/setup.mjs           |  6 ++---
 wrangler.jsonc              |  5 ++---
 5 files changed, 24 insertions(+), 75 deletions(-)
 delete mode 100644 MIGRATING_FROM_CLOUDMEET.md

Diff

diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index 6c03dac..352a560 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -4,7 +4,7 @@
 Visitor
   │
   ▼
-meet.anord.cc
+your-booking-domain.example
   │
   ├── static React UI ───────────────┐
   │                                  │ one Worker deployment
diff --git a/MIGRATING_FROM_CLOUDMEET.md b/MIGRATING_FROM_CLOUDMEET.md
deleted file mode 100644
index 7a8d8d1..0000000
--- a/MIGRATING_FROM_CLOUDMEET.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Replacing the old CloudMeet deployment
-
-The new app is a separate Cloudflare **Worker**, not a Pages project. You can keep CloudMeet online while you prepare the Worker.
-
-## 1. Deploy Meet
-
-From this project:
-
-```bat
-npm install
-npm run setup
-```
-
-Use `https://meet.anord.cc` as the public URL when prompted.
-
-The setup deploys a temporary `*.workers.dev` endpoint too. The application treats `meet.anord.cc` as its canonical OAuth URL because that is the `APP_URL` secret.
-
-## 2. Change the Google OAuth callback
-
-The new callback is:
-
-```text
-https://meet.anord.cc/auth/google/callback
-```
-
-CloudMeet used `/auth/callback`. They are not the same route.
-
-This app uses a server-side OAuth flow, so the redirect URI is the important Google client setting. You can leave the JavaScript origin configured, but the app does not perform Google OAuth from browser JavaScript.
-
-## 3. Move the domain
-
-When the Worker is ready:
-
-1. Cloudflare → Workers & Pages → old `cloudmeet` Pages project → Custom domains.
-2. Remove `meet.anord.cc` from that Pages project.
-3. Cloudflare → Workers & Pages → `meet-anord` Worker → Settings → Domains & Routes.
-4. Add `meet.anord.cc` as a custom domain.
-
-Do the same for `meet.nobgit.com` only if you still want that alias. Keep `APP_URL=https://meet.anord.cc` so OAuth has one canonical callback.
-
-## 4. Connect Google
-
-Open:
-
-```text
-https://meet.anord.cc/admin
-```
-
-Sign in with the configured admin Google account and grant Calendar access.
-
-If your Google OAuth audience is still in Testing, the admin account must be a test user. Visitors booking meetings never see Google OAuth at all.
-
-## 5. Delete CloudMeet later
-
-Once availability, booking, invitations, and Meet links work on the new Worker, the old Pages project, D1/KV resources, and CloudMeet OAuth client can be removed separately. Do not delete shared Google Cloud projects or OAuth clients used by other applications.
diff --git a/README.md b/README.md
index 016fa6e..0612f0f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Meet
+# Slot
 
 A small calendar-first booking app built as one Cloudflare Worker deployment.
 
@@ -54,27 +54,34 @@ npm run setup
 `npm run setup` will:
 
 1. use your normal interactive Wrangler login
-2. build and deploy the Worker
-3. let Wrangler automatically provision the D1 binding
-4. apply the database migration
-5. ask for the public URL, admin Google account, Google Client ID and Client Secret
-6. generate cryptographic application secrets locally
-7. upload the secrets to the Worker
+2. build the Worker and frontend assets
+3. provision or reuse the D1 database
+4. ask for the public URL, admin Google account, Google Client ID and Client Secret
+5. generate cryptographic application secrets locally
+6. upload the secrets to the Worker
+7. apply the database migration
+8. deploy the Worker and static assets
 
-For the default URL, configure the Google OAuth client with:
+When setup asks for the public URL, enter the domain where this Worker will be reached, for example:
+
+```text
+https://book.example.com
+```
+
+Configure the Google OAuth client with values derived from that same URL:
 
 ```text
 Authorized JavaScript origin:
-https://meet.anord.cc
+https://book.example.com
 
 Authorized redirect URI:
-https://meet.anord.cc/auth/google/callback
+https://book.example.com/auth/google/callback
 ```
 
-If `meet.anord.cc` is still attached to the old CloudMeet Pages project, remove that custom-domain attachment first. Then attach `meet.anord.cc` to the new `meet-anord` Worker in Cloudflare and open:
+After setup finishes, attach your custom domain to the Worker in Cloudflare Workers & Pages if you are not using the generated `workers.dev` URL. Then open:
 
 ```text
-https://meet.anord.cc/admin
+https://book.example.com/admin
 ```
 
 Sign in with the email entered during setup. The first authorization requests offline Calendar access so the Worker can check availability and create bookings while you are not present.
diff --git a/scripts/setup.mjs b/scripts/setup.mjs
index f0459e8..9140789 100644
--- a/scripts/setup.mjs
+++ b/scripts/setup.mjs
@@ -157,9 +157,7 @@ async function promptForConfiguration() {
   const rl = createInterface({ input, output });
   try {
     console.log('\nGoogle + app configuration\n');
-    const defaultUrl = 'https://meet.anord.cc';
-    const enteredUrl = (await rl.question(`Public URL [${defaultUrl}]: `)).trim();
-    const appUrl = (enteredUrl || defaultUrl).replace(/\/+$/, '');
+    const appUrl = (await rl.question('Public URL, for example https://book.example.com: ')).trim().replace(/\/+$/, '');
     const adminEmail = (await rl.question('Google account allowed to administer this calendar: ')).trim();
     const clientId = (await rl.question('Google OAuth Client ID: ')).trim();
     const clientSecret = (await rl.question('Google OAuth Client Secret: ')).trim();
@@ -261,5 +259,5 @@ console.log('\nDone.\n');
 console.log(`Booking page: ${answers.appUrl}`);
 console.log(`Admin:        ${answers.appUrl}/admin`);
 console.log(`OAuth route:  ${answers.appUrl}/auth/google/callback`);
-console.log('\nAttach a custom domain in Cloudflare Workers & Pages -> meet-anord -> Settings -> Domains & Routes if you have not already done so.');
+console.log('\nAttach a custom domain in Cloudflare Workers & Pages -> your Worker -> Settings -> Domains & Routes if you have not already done so.');
 console.log('Then open /admin and connect the configured Google account.\n');
diff --git a/wrangler.jsonc b/wrangler.jsonc
index 79e013b..ea4dd4c 100644
--- a/wrangler.jsonc
+++ b/wrangler.jsonc
@@ -1,6 +1,6 @@
 {
   "$schema": "./node_modules/wrangler/config-schema.json",
-  "name": "meet-anord",
+  "name": "slot",
   "main": "./worker/index.ts",
   "compatibility_date": "2026-07-25",
   "assets": {
@@ -10,8 +10,7 @@
   "d1_databases": [
     {
       "binding": "DB",
-      "database_name": "meet-anord-db",
-      "database_id": "99e956bf-b2d5-47b3-aaca-5c7dc5aab2af",
+      "database_name": "slot-db",
       "migrations_dir": "migrations"
     }
   ]