diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72f234c..8f3272c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ or a screenshot. Use the guided tour's example wedding, or invent people. | You have… | Do this | | --- | --- | -| Ten minutes | Try the [hosted app](https://trousseau-suite.vercel.app), and open an issue for anything confusing. Confusion is a bug. | +| Ten minutes | Try the [hosted app](https://knotwork-suite.vercel.app), and open an issue for anything confusing. Confusion is a bug. | | An hour | Pick an issue labelled `good first issue`, or fix a doc that was wrong for you. | | A weekend | Take a tool proposal from [ROADMAP.md](ROADMAP.md). | | A job nothing does | Build a tool. Read [docs/BUILDING-A-TOOL.md](docs/BUILDING-A-TOOL.md) first. | @@ -71,7 +71,7 @@ that can browse weddings. ### Install and run ```sh -git clone https://github.com/JFrusher/Trousseau.git Knotwork +git clone https://github.com/JFrusher/Knotwork.git Knotwork cd Knotwork npm ci # installs the root package and the suite workspace diff --git a/README.md b/README.md index 9fd6e63..1e16c87 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ Formerly Trousseau. [![Licence: AGPL-3.0 app, MIT contract](https://img.shields.io/badge/licence-AGPL--3.0%20app%20%C2%B7%20MIT%20contract-5b4bd5)](LICENSE) -[![GitHub stars](https://img.shields.io/github/stars/JFrusher/Trousseau?style=flat&logo=github&label=stars)](https://github.com/JFrusher/Trousseau/stargazers) -[![CI](https://github.com/JFrusher/Trousseau/actions/workflows/ci.yml/badge.svg)](https://github.com/JFrusher/Trousseau/actions/workflows/ci.yml) +[![GitHub stars](https://img.shields.io/github/stars/JFrusher/Knotwork?style=flat&logo=github&label=stars)](https://github.com/JFrusher/Knotwork/stargazers) +[![CI](https://github.com/JFrusher/Knotwork/actions/workflows/ci.yml/badge.svg)](https://github.com/JFrusher/Knotwork/actions/workflows/ci.yml) [![Self-hostable](https://img.shields.io/badge/self--hostable-Next.js%20%2B%20optional%20Supabase-2f855a)](docs/SELF-HOSTING.md) -[![No account needed](https://img.shields.io/badge/account-not%20needed-2f855a)](https://trousseau-suite.vercel.app) +[![No account needed](https://img.shields.io/badge/account-not%20needed-2f855a)](https://knotwork-suite.vercel.app) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-e05d44)](CONTRIBUTING.md) -[**Open Knotwork →**](https://trousseau-suite.vercel.app)  ·  +[**Open Knotwork →**](https://knotwork-suite.vercel.app)  ·  [Run your own copy](#-run-your-own-copy)  ·  [How it works](#-how-it-works)  ·  [Roadmap](ROADMAP.md)  ·  @@ -123,7 +123,7 @@ More screenshots, framed images and clips for sharing are in ## 🚀 Get started in two minutes -1. Open **[trousseau-suite.vercel.app](https://trousseau-suite.vercel.app)**. +1. Open **[knotwork-suite.vercel.app](https://knotwork-suite.vercel.app)**. There is no sign-up. 2. Press **Data**, and put in your names, your venue and the date. 3. Import your guest list as a CSV. @@ -149,7 +149,7 @@ error reporting only runs if you set a Sentry DSN. ### Local only: no backend, no account ```sh -git clone https://github.com/JFrusher/Trousseau.git Knotwork +git clone https://github.com/JFrusher/Knotwork.git Knotwork cd Knotwork npm ci # installs the contract package and the suite together npm run build # builds the shared contract package; do not skip this @@ -193,7 +193,7 @@ how to check your instance actually works rather than merely starting. - **No account, no upload.** The app saves to your browser, and nothing from your wedding leaves the device. The hosted site counts visits to its pages, with no cookie and nothing from the wedding in it. Every address is cut to - its route first. The [Privacy Policy](https://trousseau-suite.vercel.app/privacy) + its route first. The [Privacy Policy](https://knotwork-suite.vercel.app/privacy) says exactly what is counted. - **With an account**, your wedding syncs between you, your partner and your planner. It is stored encrypted at rest, and database-level rules mean no diff --git a/docs/DATA.md b/docs/DATA.md index d9a0748..1fb16ea 100644 --- a/docs/DATA.md +++ b/docs/DATA.md @@ -54,7 +54,7 @@ schema and exact bytes together. ## Setting up a new device ```sh -git clone https://github.com/JFrusher/Trousseau Knotwork && cd Knotwork +git clone https://github.com/JFrusher/Knotwork Knotwork && cd Knotwork npm install # The remote URL is per-device and deliberately not committed — it names a path diff --git a/marketing/assets/images/hero-bar.png b/marketing/assets/images/hero-bar.png index bf68933..ffbef89 100644 Binary files a/marketing/assets/images/hero-bar.png and b/marketing/assets/images/hero-bar.png differ diff --git a/marketing/assets/images/hero-boxes.png b/marketing/assets/images/hero-boxes.png index b569f11..fa7d048 100644 Binary files a/marketing/assets/images/hero-boxes.png and b/marketing/assets/images/hero-boxes.png differ diff --git a/marketing/assets/images/hero-ceremony.png b/marketing/assets/images/hero-ceremony.png index 14d13d8..61010cc 100644 Binary files a/marketing/assets/images/hero-ceremony.png and b/marketing/assets/images/hero-ceremony.png differ diff --git a/marketing/assets/images/hero-checklist.png b/marketing/assets/images/hero-checklist.png index 81dbe7a..e050a15 100644 Binary files a/marketing/assets/images/hero-checklist.png and b/marketing/assets/images/hero-checklist.png differ diff --git a/marketing/assets/images/hero-delegation.png b/marketing/assets/images/hero-delegation.png index d0574e3..632c2f0 100644 Binary files a/marketing/assets/images/hero-delegation.png and b/marketing/assets/images/hero-delegation.png differ diff --git a/marketing/assets/images/hero-group-shots.png b/marketing/assets/images/hero-group-shots.png index 67f7fb5..8c9ffcd 100644 Binary files a/marketing/assets/images/hero-group-shots.png and b/marketing/assets/images/hero-group-shots.png differ diff --git a/marketing/assets/images/hero-guests.png b/marketing/assets/images/hero-guests.png index df3d7eb..2a4f9d3 100644 Binary files a/marketing/assets/images/hero-guests.png and b/marketing/assets/images/hero-guests.png differ diff --git a/marketing/assets/images/hero-money.png b/marketing/assets/images/hero-money.png index f8cac3d..28a30eb 100644 Binary files a/marketing/assets/images/hero-money.png and b/marketing/assets/images/hero-money.png differ diff --git a/marketing/assets/images/hero-overview.png b/marketing/assets/images/hero-overview.png index 886dbf9..aefa2ee 100644 Binary files a/marketing/assets/images/hero-overview.png and b/marketing/assets/images/hero-overview.png differ diff --git a/marketing/assets/images/hero-place-cards.png b/marketing/assets/images/hero-place-cards.png index 46b9367..8750fec 100644 Binary files a/marketing/assets/images/hero-place-cards.png and b/marketing/assets/images/hero-place-cards.png differ diff --git a/marketing/assets/images/hero-seating.png b/marketing/assets/images/hero-seating.png index ea9c721..90804fe 100644 Binary files a/marketing/assets/images/hero-seating.png and b/marketing/assets/images/hero-seating.png differ diff --git a/marketing/assets/images/hero-timeline.png b/marketing/assets/images/hero-timeline.png index 9c1b2f5..2c488c6 100644 Binary files a/marketing/assets/images/hero-timeline.png and b/marketing/assets/images/hero-timeline.png differ diff --git a/marketing/assets/images/logo-120.png b/marketing/assets/images/logo-120.png new file mode 100644 index 0000000..b8038c6 Binary files /dev/null and b/marketing/assets/images/logo-120.png differ diff --git a/marketing/assets/images/logo-512.png b/marketing/assets/images/logo-512.png new file mode 100644 index 0000000..fd442bd Binary files /dev/null and b/marketing/assets/images/logo-512.png differ diff --git a/marketing/assets/images/og-card.png b/marketing/assets/images/og-card.png index 820208c..92818e6 100644 Binary files a/marketing/assets/images/og-card.png and b/marketing/assets/images/og-card.png differ diff --git a/marketing/assets/images/social-preview.png b/marketing/assets/images/social-preview.png index a99e4a0..b9443e1 100644 Binary files a/marketing/assets/images/social-preview.png and b/marketing/assets/images/social-preview.png differ diff --git a/marketing/assets/images/square-ceremony.png b/marketing/assets/images/square-ceremony.png index 6a5a638..92a1eb5 100644 Binary files a/marketing/assets/images/square-ceremony.png and b/marketing/assets/images/square-ceremony.png differ diff --git a/marketing/assets/images/square-money.png b/marketing/assets/images/square-money.png index 13bb1e8..9d0f81b 100644 Binary files a/marketing/assets/images/square-money.png and b/marketing/assets/images/square-money.png differ diff --git a/marketing/assets/images/square-overview.png b/marketing/assets/images/square-overview.png index 6fc80f8..d4d06e1 100644 Binary files a/marketing/assets/images/square-overview.png and b/marketing/assets/images/square-overview.png differ diff --git a/marketing/assets/images/square-place-cards.png b/marketing/assets/images/square-place-cards.png index 1fa6905..84c9471 100644 Binary files a/marketing/assets/images/square-place-cards.png and b/marketing/assets/images/square-place-cards.png differ diff --git a/marketing/assets/images/square-seating.png b/marketing/assets/images/square-seating.png index 9ff3132..25f20c1 100644 Binary files a/marketing/assets/images/square-seating.png and b/marketing/assets/images/square-seating.png differ diff --git a/marketing/assets/images/square-timeline.png b/marketing/assets/images/square-timeline.png index f389440..4a2dfa0 100644 Binary files a/marketing/assets/images/square-timeline.png and b/marketing/assets/images/square-timeline.png differ diff --git a/marketing/assets/images/story.png b/marketing/assets/images/story.png index c7b3df7..06323bb 100644 Binary files a/marketing/assets/images/story.png and b/marketing/assets/images/story.png differ diff --git a/marketing/assets/pipeline/compose.py b/marketing/assets/pipeline/compose.py index 301e6af..807f2d2 100644 --- a/marketing/assets/pipeline/compose.py +++ b/marketing/assets/pipeline/compose.py @@ -47,7 +47,7 @@ def window(src, x, y, w, path, crop=None): inner = f"" return (f"
" f"" - f"trousseau-suite.vercel.app{path}
{inner}
") + f"knotwork-suite.vercel.app{path}{inner}") manifest = [] os.makedirs(OUT, exist_ok=True) @@ -135,7 +135,7 @@ def phone(src, x, y, w): f"

Your wedding,
in one place.

" f"

Free. Private. Open source.
No sign-up to start.

" + phone("binder-now", 276, 560, 500) - + f"
trousseau-suite.vercel.app
") + + f"
knotwork-suite.vercel.app
") page("story", 1080, 1920, body, "#f3e3dc") # ---------- The pledge, 1080x1080 ---------- diff --git a/marketing/copy/hacker-news.md b/marketing/copy/hacker-news.md index 00504a3..96d3124 100644 --- a/marketing/copy/hacker-news.md +++ b/marketing/copy/hacker-news.md @@ -2,7 +2,7 @@ **Post from:** the maintainer's own account. **When:** Tuesday to Thursday, 8–10am US Eastern. -**Link to:** `https://github.com/JFrusher/Trousseau`. The hosted app needs no +**Link to:** `https://github.com/JFrusher/Knotwork`. The hosted app needs no sign-up, so it satisfies Show HN's "something people can try" rule. Put the app link in the first line of the text. **Stay:** in the thread for at least three hours, and answer every technical @@ -30,8 +30,8 @@ is what an HN reader will want to argue about. ## Body -> Try it (no sign-up, nothing leaves your browser): https://trousseau-suite.vercel.app -> Code: https://github.com/JFrusher/Trousseau +> Try it (no sign-up, nothing leaves your browser): https://knotwork-suite.vercel.app +> Code: https://github.com/JFrusher/Knotwork > > I built Knotwork for my own wedding, after two of the apps we were using > disagreed about what day it was. diff --git a/marketing/copy/reddit-posts.md b/marketing/copy/reddit-posts.md index 55b7168..6777b6c 100644 --- a/marketing/copy/reddit-posts.md +++ b/marketing/copy/reddit-posts.md @@ -58,7 +58,7 @@ Space them at least a day apart. > **Setup, local-only:** > > ``` -> git clone https://github.com/JFrusher/Trousseau.git Knotwork +> git clone https://github.com/JFrusher/Knotwork.git Knotwork > cd Knotwork > npm ci > npm run build @@ -76,10 +76,10 @@ Space them at least a day apart. > clone. It lists every env var, the migration order, and the two mistakes > that catch everyone out. It also ends with a section on checking that the > instance actually works, not just that it starts: -> https://github.com/JFrusher/Trousseau/blob/main/docs/SELF-HOSTING.md +> https://github.com/JFrusher/Knotwork/blob/main/docs/SELF-HOSTING.md > -> Repo: https://github.com/JFrusher/Trousseau -> Hosted, if you just want to click around (no sign-up): https://trousseau-suite.vercel.app +> Repo: https://github.com/JFrusher/Knotwork +> Hosted, if you just want to click around (no sign-up): https://knotwork-suite.vercel.app > > Happy to answer anything about the architecture or the RLS setup. @@ -145,7 +145,7 @@ Space them at least a day apart. > column is which and shows you a preview first. > > There's a guided tour with a pretend wedding if you just want to poke -> around: https://trousseau-suite.vercel.app +> around: https://knotwork-suite.vercel.app > > It doesn't do RSVPs or a wedding website. Joy is great for that and free, > and Knotwork imports the RSVPs from it. @@ -230,8 +230,8 @@ discourage recruiting):** > budget. There's also a guide to building an entirely new tool, from "is > this a tool?" to merged PR. > -> - Repo: https://github.com/JFrusher/Trousseau -> - Roadmap: https://github.com/JFrusher/Trousseau/blob/main/ROADMAP.md -> - Try it (no sign-up): https://trousseau-suite.vercel.app +> - Repo: https://github.com/JFrusher/Knotwork +> - Roadmap: https://github.com/JFrusher/Knotwork/blob/main/ROADMAP.md +> - Try it (no sign-up): https://knotwork-suite.vercel.app > > Critique of the design is as welcome as PRs. diff --git a/marketing/copy/social-media.md b/marketing/copy/social-media.md index 9bd97cb..2c5a0ca 100644 --- a/marketing/copy/social-media.md +++ b/marketing/copy/social-media.md @@ -72,11 +72,11 @@ README). Use the example wedding, never real names. **7/7** > If you're planning a wedding: it's free, and your guest list never has to -> leave your laptop → trousseau-suite.vercel.app +> leave your laptop → knotwork-suite.vercel.app > > If you build things: the code, specs and a guide to adding your own tool > are on GitHub. A ⭐ helps other couples find it → -> github.com/JFrusher/Trousseau +> github.com/JFrusher/Knotwork --- @@ -95,7 +95,7 @@ Recording notes for all three: - Use the guided tour's example wedding. **Never film a real guest list.** - Captions burned in, because most people watch muted. Keep each caption line under six words. -- End card: "Free · no sign-up · trousseau-suite.vercel.app". +- End card: "Free · no sign-up · knotwork-suite.vercel.app". - Don't film on a phone: the planning tools are made for a laptop. Film the Binder on the phone in script 3 only. @@ -166,10 +166,10 @@ no ads. #weddingplanning #seatingchart #diywedding #weddingtok > place cards; move the ceremony and the day moves with it. Local-first (IndexedDB, no account), > self-hostable, and no analytics on your own instance. > -> https://github.com/JFrusher/Trousseau +> https://github.com/JFrusher/Knotwork > > #selfhosted #opensource #localfirst **Bluesky / X one-liner:** > Wedding apps keep three copies of your guest list. Knotwork keeps one. -> Free, open source, no sign-up: trousseau-suite.vercel.app +> Free, open source, no sign-up: knotwork-suite.vercel.app diff --git a/marketing/landing-page/index.html b/marketing/landing-page/index.html index 3d40d3c..4454a72 100644 --- a/marketing/landing-page/index.html +++ b/marketing/landing-page/index.html @@ -52,7 +52,7 @@ Privacy Self-host - ★ GitHub + ★ GitHub @@ -70,9 +70,9 @@

- Start planning, free → + Start planning, free → Run your own copy - ★ Star on GitHub + ★ Star on GitHub

No account, no password, no card. Open it and start.

@@ -262,12 +262,12 @@

Run your own copy

  • ✓ Next.js app, runs anywhere Node 20+ does
  • ✓ Optional Supabase: Postgres with row-level security
  • ✓ Every command tested on a fresh clone
  • -
  • ✓ No Docker image yet. Tell us if you'd use one
  • +
  • ✓ No Docker image yet. Tell us if you'd use one
  • - Read the self-hosting guide → + Read the self-hosting guide →
    # local-only: no backend, no account
    -git clone https://github.com/JFrusher/Trousseau.git Knotwork
    +git clone https://github.com/JFrusher/Knotwork.git Knotwork
     cd Knotwork
     npm ci
     npm run build
    @@ -282,17 +282,17 @@ 

    Run your own copy

    Your wedding, in one place.

    There's a guided tour with a full example wedding, if you'd like to look around first.