Connect Your Services
Wire up databases, payments, email, AI and anything else your app talks to. Environment variables are the connection mechanism: one entry per service.
1How It Works
Anything that speaks HTTP or TCP and takes a credential can be connected to your site. There is no provider allowlist and no egress filtering on the servers.
Add one environment variable per service. Your values are:
- Encrypted at rest: Using AES-256-GCM
- Masked in the dashboard
- Injected on deploy: Available to both the build and the running app on the next deployment
2Bring Your Own Anything
These are examples of the pattern, not a supported list. If it has a URL and a key, it works.
DATABASE_URL
Database: Neon, Supabase, Turso, PlanetScale, Aiven
REDIS_URL
Cache / KV: Upstash Redis, Redis Cloud
S3_ENDPOINT, S3_BUCKET, AWS_ACCESS_KEY_ID
Object storage: Cloudflare R2, S3, Backblaze B2
RESEND_API_KEY / SMTP_*
Email: Resend, SES, SendGrid, Postmark
STRIPE_SECRET_KEY
Payments: Stripe, Paystack, Flutterwave, M-Pesa (Daraja)
CLERK_SECRET_KEY, AUTH_SECRET
Auth: Clerk, Auth0, NextAuth
OPENAI_API_KEY
AI: OpenAI, Anthropic, DeepSeek, Groq
ALGOLIA_ADMIN_KEY
Search / vectors: Algolia, Meilisearch, Typesense, Pinecone, Qdrant
QSTASH_TOKEN
Queues / streams: Upstash QStash, external RabbitMQ or Kafka
AT_API_KEY
SMS / messaging: Africa's Talking, Twilio, Slack or Discord webhooks
SENTRY_DSN
Observability: Sentry, Better Stack, Axiom
MAPBOX_TOKEN
Maps / geocoding: Google Maps, Mapbox
3Example: Bring Your Own Database (Neon)
Connect a Neon Postgres database to your app:
- Create a project in Neon, then create the database
- Copy the pooled connection string (the
-poolerhost), not the direct one - Add it to your site as
DATABASE_URL - Redeploy the site. Environment variables are applied at deploy time, not instantly
- Verify from your app with a query or health route that touches the database
DATABASE_URL=postgres://user:pass@ep-xxx-pooler.eu-central-1.aws.neon.tech/db?sslmode=require
4Neon Caveats
- Cold starts: Free-tier Neon suspends idle computes, so the first request after a pause is slow
- Use the pooled endpoint: Send app traffic through the
-poolerhost. With Prisma, setconnection_limit=1and keep the direct URL for migrations (directUrl) - Idle connections cost money: Serverless or long-lived workers that hold connections open keep a Neon compute awake
# Prisma: pooled URL for app traffic
DATABASE_URL=postgres://user:pass@ep-xxx-pooler.eu-central-1.aws.neon.tech/db?sslmode=require&connection_limit=1
Backups are your responsibility: A database that lives outside Berican is not covered by our backups.
5Example: Supabase
Same pattern as Neon. Use the pooler port for app traffic and the direct port for migrations:
6543
Pooler, for app traffic
5432
Direct, for migrations
6Already Built In
You don't need to wire these up yourself. The platform already provides:
- Git deploys: Connect GitHub or GitLab and push to deploy
- Object storage: Cloudflare R2
- Domains, DNS and SSL: Cloudflare and Let's Encrypt
- Payments: IntaSend, Paystack, M-Pesa
- Email and notifications: Resend for outbound email, plus in-app and email notification channels
- AI: Metered AI queries per plan, through our own quota layer
- Operations: Backups, staging, firewall, CDN, SSH keys, WP-CLI
7Connecting Into Berican
Going the other way, your tools can talk to Berican:
- API: API keys and
/api/v1for sites, domains and webhooks, plus the SDK and CLI - Outbound webhooks: Per account or per site, with an
events[]list and HMAC-signed with asecret - Delivery tracking: Attempts are recorded, with 3 retries and backoff
Events include deployment.started and deployment.completed. Point them at Slack, Discord, Zapier or n8n.
8Bring Your Own
These aren't hosted for your app. Bring the service you prefer and put its credential in your environment variables:
- Managed Redis or queues
- Log drains
- SMTP relay
- Scheduled jobs
- Managed search or vector databases
9Limits & Gotchas
- Paid feature: Environment variables need an active plan. Without one, saving them is refused with an upgrade prompt
- Static-only tier: Can hold environment variables, but anything that needs server-side secrets needs a plan that allows Node.js apps
- WordPress sites: Use the bundled MariaDB database. Moving to an external database can't be done from the dashboard and requires hand-editing
wp-config.php - Key format: Names must match
[A-Za-z_][A-Za-z0-9_]* - Next deploy: Changes take effect on the next deployment