- Project: Friday
- Event: Convex All Gas Hackathon
- What it does: Turns informal Slack requests into durable plans with sourced constraints, research, exact approval, and booking evidence.
- Live app: not deployed
- Repo: https://github.com/getsentry/friday
- Frontend: Codex Sites
- Convex deployment: https://fabulous-fly-727.convex.cloud
- Components: @agentmail/convex, @convex-dev/auth
- Convex features: schema, tables, indexes, queries, mutations, realtime queries, authentication, authorization
- Auth: Convex Auth
- AI models: none
- Started: 2026-08-26T01:47:56Z
- Last updated: 2026-08-30T02:47:23Z
Scaffolded a ChatGPT Site with a local Convex backend and a live read/write
foundation. Mounted AgentMail, installed the Firecrawl integration for later
configuration, added submission guidance, and wired a reactive workspace status
(app/page.tsx, convex/schema.ts, convex/workspace.ts,
convex/convex.config.ts). Updated the production dependency baseline after a
security review.
Added the Convex Auth v2 alpha preview with username-first passkeys, protected
per-user data, and a small private-note workflow for testing sign-up, sign-in,
sign-out, persistence, and authorization (app/AuthPlayground.tsx,
app/ConvexClientProvider.tsx, convex/auth.ts, convex/auth.config.ts,
convex/authPlayground.ts, convex/users.ts, convex/schema.ts). The local
WebAuthn relying party is all-gas.localhost; production must use the final
chatgpt.site host and new production signing keys.
Hardened the playground before launch: disabled automatic passkey challenge
creation, rejected loopback Convex URLs in production, documented fresh
deployment setup, and added multi-user authorization tests for private-note
isolation, validation, and unauthenticated access
(convex/authPlayground.test.ts, vitest.config.ts).
Defined Friday's Slack planning workflow and shipped its first durable Convex
lifecycle.
The backend ingests a normalized Slack request idempotently, records sourced
constraints and candidate evidence, controls vendor inquiry and exact organizer
approval, stores booking evidence, and writes one typed log entry per revision
(docs/product/friday-spec.md, convex/schema.ts,
convex/events.ts, convex/event*.ts).
Added 28 event lifecycle tests and split the event code into focused modules.
Configured Oxlint, Oxfmt, and the anti-slop rules without suppressing findings;
formatting, both linters, TypeScript, and all 44 tests pass
(convex/events.*.test.ts, test/eventTestSupport.ts, .oxlintrc.json,
.oxfmtrc.json).