Overview
The seven third-party services Launchy integrates with, and what breaks if you leave them blank.
Every integration is optional except Better Auth. If you leave the others' env vars blank, the corresponding feature gracefully degrades — no crash, just hidden UI or silent no-op.
The integrations
| Service | Purpose | Required? |
|---|---|---|
| Better Auth | User auth, OAuth, sessions | Yes — app won't start without it |
| Stripe | Payments, webhooks | Only if you sell Boost / Highlight / sponsor slots |
| Plunk | Transactional + campaign emails | Only if you want real emails sent (dev logs instead) |
| Cloudflare R2 | S3-compatible storage | Recommended in prod (dev falls back to filesystem) |
| Redis | Rate limiting | Recommended in prod (disabled in dev) |
| Discord | Admin signup + submission alerts | Optional notification channel |
| Cloudflare Turnstile | CAPTCHA on sign-up / sign-in / forgot password | Optional but recommended in prod |
| Plausible | Privacy-first web analytics (proxied to bypass ad blockers) | Optional — no tracking if unset |
Graceful degradation pattern
Each integration uses this shape:
if (!env.SOMETHING_API_KEY) {
// log a warning and return null / skip
return
}
await something.do(...)So you can start Launchy with just DATABASE_URL + BETTER_AUTH_SECRET + BETTER_AUTH_URL and iterate on features incrementally.
Pricing at a glance
All services have generous free tiers:
- Better Auth — open source, self-hosted with Postgres → $0
- Stripe — no monthly fee, 2.9% + $0.30 per transaction
- Plunk — 3,000 emails / month free
- Cloudflare R2 — 10 GB + 1M ops / month free
- Redis — Upstash free tier (10k requests / day) or self-host → $0
- Discord — webhooks are free
- Cloudflare Turnstile — unlimited, free
Replacing a service
Each integration is wrapped in a single file. Swapping is straightforward:
| Replace... | Edit... |
|---|---|
| Plunk → Resend / SendGrid / Postmark | lib/plunk.ts |
| R2 → AWS S3 / Backblaze B2 / MinIO | lib/r2.ts |
| Redis → Vercel KV / Redis Cloud | lib/redis.ts |
| Discord → Slack / Telegram | lib/discord.ts |
Call sites don't change.
Next
Click any service in the sidebar for its setup guide, env vars, and gotchas.