+69
-5
README.md
+69
-5
README.md
···-A static site hosting service built on the AT Protocol. [https://wisp.place](https://wisp.place)+Host static sites in your AT Protocol repo, served with CDN distribution. Your PDS holds the cryptographically signed manifest and files - the source of truth. Hosting services index and serve them fast.-/hosting-service is the microservice that serves on-disk caches of sites pulled from the firehose and pdses
+271
cli/README.md
+271
cli/README.md
···+A command-line tool for deploying static sites to your AT Protocol repo to be served on [wisp.place](https://wisp.place), an AT indexer to serve such sites.+The PDS serves as a way to verfiably, cryptographically prove that you own your site. That it was you (or at least someone who controls your account) who uploaded it. It is also a manifest of each file in the site to ensure file integrity. Keeping hosting seperate ensures that you could move your site across other servers or even serverless solutions to ensure speedy delievery while keeping it backed by an absolute source of truth being the manifest record and the blobs of each file in your repo.+--store <STORE> Path to auth store file (only used with OAuth) [default: /tmp/wisp-oauth-session.json]+4. **Deployment**: Site is immediately available at `https://sites.wisp.place/{did}/{site-name}`+- **Max file size**: 100MB per file (after compression) (this is a PDS limit, but not enforced by the CLI in case yours is higher)+- **Site name** must follow AT Protocol rkey format rules (alphanumeric, hyphens, underscores)+curl -L https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli+curl https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli+Just don't give me entirely claude slop especailly not in the PR description itself. You should be responsible for code you submit and aware of what it even is you're submitting.
+6
-1
src/index.ts
+6
-1
src/index.ts
···
+36
-8
src/lib/db.ts
+36
-8
src/lib/db.ts
······await db`ALTER TABLE oauth_states ADD COLUMN IF NOT EXISTS expires_at BIGINT DEFAULT EXTRACT(EPOCH FROM NOW()) + 3600`;···+const rows = await db`SELECT domain FROM domains WHERE did = ${did} ORDER BY created_at ASC LIMIT 1`;+const rows = await db`SELECT domain, rkey FROM domains WHERE did = ${did} ORDER BY created_at ASC LIMIT 1`;+const rows = await db`SELECT domain, rkey FROM domains WHERE did = ${did} ORDER BY created_at ASC`;·········-export const updateWispDomainSite = async (did: string, siteRkey: string | null): Promise<void> => {+export const updateWispDomainSite = async (domain: string, siteRkey: string | null): Promise<void> => {+const rows = await db`SELECT rkey FROM domains WHERE did = ${did} ORDER BY created_at ASC LIMIT 1`;