I'm constantly fielding similar questions. Graham is for refining the answers to questions. One great example: helping your team to perfect your application to YCombinator.
Features:
- 📔 Use templates like the YC App questions.
- 🤪 Create pages for your pitch to investors, customers, or friends and family.
- ✨ AI Review with customizable prompts
- 🎤 Practice mode: answer questions verbally, get transcriptions, and self-rate your performance
- Mobile friendly ✅
- 👫 Share pages for real-time multiplayer editing
- 🔒 Authentication & User Management via Every App
If you don't have a Cloudflare account and just want to test it out, run it locally with these steps:
git clone https://github.com/bensenescu/graham.git
cd graham
pnpm i
DEMO_MODE_LOCAL_ONLY=true pnpm run devIf you want use AI features, create a .env.local with these values:
VITE_APP_ID=graham
OPENAI_API_KEY=your-key
- Complete Prerequisites
- Run these commands:
git clone https://github.com/bensenescu/graham.git
cd graham
npx everyapp app deploy- Add your OPENAI_API_KEY (other providers should be easy to add if you want to contribute a PR!):
npx wrangler secret put OPENAI_API_KEYGraham was built as part of my larger project: Every App. Every App hoists common logic out of individual apps like auth and user management so that each app doesn't need to reinvent the wheel.
The goal is to foster an open source ecosystem of apps and make them more accessible to people who aren't already self hosting software themselves.
Every App apps are self hosted on Cloudflare so there is a little bit of initial setup, but then self hosting more apps is as simple as the npx everyapp app deploy above.
-
Make a Cloudflare Account (No credit card needed) - https://dash.cloudflare.com/sign-up
Skip any Cloudflare onboarding like configuring a domain, this is unnecessary for Every App.
-
Authenticate with Cloudflare (choose one):
- Login via the Cloudflare CLI (recommended):
npx wrangler login
- Or set the
CLOUDFLARE_API_TOKENenvironment variable
- Login via the Cloudflare CLI (recommended):
-
Self host the Every App Gateway
npx everyapp gateway deploy- Follow the link this returns to create your account in the Gateway.
cp .env.example .env.local- The
GATEWAY_URLshould match your gateway fromnpx everyapp gateway deploy
- The
pnpm run db:migrate:localpnpm install
pnpm run dev
