Mention @friday with an informal request in Slack. Friday researches current
options, keeps the decision moving, coordinates with vendors when needed, and
records the confirmed plan in Convex.
This repository is the build workspace for the 2026 Convex All Gas Hackathon. The frontend uses ChatGPT Sites. Convex owns durable data, backend functions, and realtime updates.
- ChatGPT Sites and Vinext frontend
- Local Convex development deployment
- One validated table, one query, and one idempotent mutation
- Convex React client with a clear missing-configuration state
- Convex Auth v2 alpha with username-first passkey sign-up and sign-in
- One private, per-user note protected by Convex authorization
- In-memory authorization tests for isolation, validation, and unauthenticated access
- AgentMail Convex component mounted
- Firecrawl Convex component installed and ready to configure when an API key is available
- Official Convex ESLint rules
- Public, evidence-based build log in
hackathon.md
Use Node.js 24. Then run:
npm install
npx @convex-dev/auth
npx convex env set AUTH_RP_ID all-gas.localhost
npx convex env set AUTH_ORIGIN https://all-gas.localhost
npx convex dev
portless all-gas npm run devKeep both commands running in separate terminal panes. The Site is available at
https://all-gas.localhost. Convex writes the public local backend URL to
.env.local; keep that file private. Run the Auth setup command once for each
new deployment. It generates signing keys and stores them in that deployment.
Run npm test to check the private-note authorization contract without a live
deployment.
The project uses @convex-dev/auth v2 alpha with username-first passkeys. A new
username creates an account and passkey. An existing username asks for its
registered passkey. After sign-in, the playground can read and write one note
that is indexed and authorized by the authenticated Convex user ID.
The local deployment is configured for:
Relying party ID: all-gas.localhost
Origin: https://all-gas.localhost
Passkeys are permanently bound to their relying party ID. Before publishing,
set AUTH_RP_ID and AUTH_ORIGIN on the production Convex deployment to the
final chatgpt.site host, generate separate production signing keys, and test a
new production passkey. Set NEXT_PUBLIC_CONVEX_URL to the public production
deployment before the publish build; production rejects loopback URLs. Never
copy local signing keys to production. Production Convex URLs must use HTTPS.
Passkey autofill is off in this playground, so a page visit does not create a WebAuthn challenge. Manual registration is still a public write path. Add rate limits or another abuse gate before a public launch.
Set secrets on the Convex deployment. Do not add them to .env.local or commit
them.
npx convex env set FIRECRAWL_API_KEY
npx convex env set FIRECRAWL_WEBHOOK_SECRET
npx convex env set AGENTMAIL_API_KEY
npx convex env set AGENTMAIL_WEBHOOK_SECRETAfter a Firecrawl key is available, add its typed environment mapping and
component registration to convex/convex.config.ts. AgentMail is already
registered. Product-specific wrappers must enforce authentication,
authorization, and rate limits before they call either paid service.
OpenAI integration will be selected with the product idea. This avoids choosing an SDK, model, or agent architecture before the user workflow is known.
- Start the app on or after August 25, 2026 at 12:00 PM PT.
- Use Convex as the backend and make OpenAI, Firecrawl, and AgentMail do real product work.
- Publish a public
chatgpt.siteURL that works without an invite. - Keep the GitHub repository public and
hackathon.mdcurrent. - Share the build on X or LinkedIn and tag the four sponsors.
- Submit the repository, live URL, and a demo video under three minutes by September 22, 2026 at 12:00 PM PT.