A modern, full-stack faith-based talks and content platform built with Next.js, Convex, and Better Auth.
- Frontend: Next.js 16, React 19, Tailwind CSS v4
- Backend: Convex (database + backend functions)
- Authentication: Better Auth
- Email: Resend
- Deployment: Vercel
- Node.js 22+ (LTS recommended)
- pnpm
- Clone the repository
- Install dependencies:
pnpm install
- Set up environment variables (see Environment Variables section)
- Start the development server:
This runs both Next.js and Convex dev in parallel.
pnpm dev
Deployment is fully automated via Vercel:
- Push to
main→ Vercel automatically deploys Convex functions + Next.js app - Preview deployments created automatically for pull requests
pnpm run build
→ convex deploy --cmd 'pnpm run build:next'
→ 1. Deploys Convex functions to production
→ 2. Builds Next.js applicationRequired for automated deployment:
CONVEX_DEPLOY_KEY- Get from Convex Dashboard → Settings → Deploy Keys
Set in Convex Dashboard → Settings → Environment Variables:
Authentication:
BETTER_AUTH_SECRET- Random secret key for Better AuthSITE_URL- Your production URL (e.g.,https://gettreadtalks.vercel.app)
Email (Resend):
RESEND_API_KEY- Get from Resend DashboardRESEND_FROM_EMAIL- Sender email address (defaults todelivered@resend.dev)RESEND_TEST_MODE- Set tofalseto send real emails (defaults to true)RESEND_TO_EMAIL- Recipient forsendTestEmail()function (development only)RESEND_WEBHOOK_SECRET- Get from Resend Dashboard → Webhooks
Development (Current Setup):
- Set in Convex Dashboard → Development:
RESEND_API_KEY- Your API keyRESEND_TEST_MODE=false- To send real test emailsRESEND_TO_EMAIL=your-email@example.com- Your email for testing
- Emails send from
delivered@resend.dev(default, works without domain verification) - Test using
sendTestEmailfunction in Convex Dashboard
Production (When Ready to Launch):
- Verify
gettreadtalks.comdomain in Resend Dashboard:- Add domain
- Configure DNS records (SPF, DKIM, DMARC)
- Wait for verification
- Set in Convex Dashboard → Production:
RESEND_API_KEY- Your API keyRESEND_FROM_EMAIL=noreply@gettreadtalks.com- Your verified domainRESEND_TEST_MODE=false- To send real emails
- Emails will send from
noreply@gettreadtalks.comwith replies tohello@gettreadtalks.com