Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol. wisp.place

well known

Changed files
+5 -41
src
-41
api.md
··· 1 - /** 2 - * AUTHENTICATION ROUTES 3 - * 4 - * Handles OAuth authentication flow for Bluesky/ATProto accounts 5 - * All routes are on the editor.wisp.place subdomain 6 - * 7 - * Routes: 8 - * POST /api/auth/signin - Initiate OAuth sign-in flow 9 - * GET /api/auth/callback - OAuth callback handler (redirect from PDS) 10 - * GET /api/auth/status - Check current authentication status 11 - * POST /api/auth/logout - Sign out and clear session 12 - */ 13 - 14 - /** 15 - * CUSTOM DOMAIN ROUTES 16 - * 17 - * Handles custom domain (BYOD - Bring Your Own Domain) management 18 - * Users can claim custom domains with DNS verification (TXT + CNAME) 19 - * and map them to their sites 20 - * 21 - * Routes: 22 - * GET /api/check-domain - Fast verification check for routing (public) 23 - * GET /api/custom-domains - List user's custom domains 24 - * POST /api/custom-domains/check - Check domain availability and DNS config 25 - * POST /api/custom-domains/claim - Claim a custom domain 26 - * PUT /api/custom-domains/:id/site - Update site mapping 27 - * DELETE /api/custom-domains/:id - Remove a custom domain 28 - * POST /api/custom-domains/:id/verify - Manually trigger verification 29 - */ 30 - 31 - /** 32 - * WISP SITE MANAGEMENT ROUTES 33 - * 34 - * API endpoints for managing user's Wisp sites stored in ATProto repos 35 - * Handles reading site metadata, fetching content, updating sites, and uploads 36 - * All routes are on the editor.wisp.place subdomain 37 - * 38 - * Routes: 39 - * GET /wisp/sites - List all sites for authenticated user 40 - * POST /wisp/upload-files - Upload and deploy files as a site 41 - */
+5
src/index.ts
··· 147 147 } 148 148 } 149 149 }) 150 + .get('/.well-known/atproto-did', ({ set }) => { 151 + // Return plain text DID for AT Protocol domain verification 152 + set.headers['Content-Type'] = 'text/plain' 153 + return 'did:plc:7puq73yz2hkvbcpdhnsze2qw' 154 + }) 150 155 .use(cors({ 151 156 origin: config.domain, 152 157 credentials: true,