# Production Infrastructure **Date:** December 21, 2025 **Purpose:** Document production deployment configuration and external services **Status:** ✅ Live **Related docs:** [12-the-current-tech-state.md](12-the-current-tech-state.md) --- ## 1. Production URLs | URL | Purpose | Status | |-----|---------|--------| | https://banatie.app/ | Landing page | ✅ Live | | https://www.banatie.app/ | Redirects to non-www | ✅ Configured | | https://api.banatie.app/ | API service | ⏳ Not deployed | | https://cdn.banatie.app/ | Image CDN | 🔮 Future | **Canonical URL:** `https://banatie.app/` (non-www, with trailing slash) --- ## 2. Hosting Infrastructure ### VPS Provider - **Provider:** Contabo - **Location:** Singapore - **Plan:** Minimum tier - **Shared with:** Family Nextcloud, Gitea ### Server Stack - **Reverse Proxy:** Caddy (auto SSL via Let's Encrypt) - **Container Runtime:** Docker Compose - **Landing App:** Next.js 15 (standalone output) ### Docker Services (Landing) ``` banatie-landing: - Next.js standalone server - Port: 3000 (internal) - Volume: ./waitlist-logs (email collection) ``` --- ## 3. Domain & DNS ### Domain Registration - **Registrar:** GoDaddy - **Domain:** banatie.app ### DNS Management - **Provider:** Cloudflare (migrated from GoDaddy) - **Nameservers:** cosmin.ns.cloudflare.com, ursula.ns.cloudflare.com ### DNS Records | Type | Name | Value | Proxy | |------|------|-------|-------| | A | banatie.app | [VPS IP] | ✅ Proxied | | CNAME | www | banatie.app | ✅ Proxied | | CNAME | api | banatie.app | ✅ Proxied | | CNAME | cdn | banatie.app | ✅ Proxied | | TXT | @ | google-site-verification=... | DNS only | | TXT | _dmarc | v=DMARC1;... | DNS only | --- ## 4. Cloudflare Configuration ### SSL/TLS - **Mode:** Full (strict) - **Certificate:** Cloudflare Edge + Caddy (Let's Encrypt) on origin ### Cache Rules **Rule: "Cache Next.js static"** ``` Match: - URI Path starts with /_next/static - URI Path ends with .png - URI Path starts with /_next/image Then: - Browser TTL: 1 month - Edge TTL: 1 month - Cache Key: Include all query string parameters ``` ### Redirect Rules **Rule: "Add trailing slash"** ``` Match: http.request.full_uri eq "https://banatie.app" Then: 301 redirect to https://banatie.app/ ``` ### AI Crawl Control - **Managed robots.txt:** Disabled (self-managed) - **AI bot access:** Allowed for all crawlers --- ## 5. SEO Configuration ### Meta Tags - **Title:** AI Image Generation Inside Your Workflow | Banatie - **Description:** Generate production-ready images via API, SDK, CLI, or live URLs... - **Keywords:** API-first image generation, AI image API, image generation for developers... - **Author:** Banatie - **Robots:** index, follow ### Open Graph - **og:url:** https://banatie.app/ - **og:image:** https://banatie.app/og-image.png - **og:type:** website - **og:locale:** en_US ### Technical SEO - **Canonical:** `` - **Alternate hreflang:** en (self-referencing) - **robots.txt:** /robots.txt (self-managed) - **Sitemap:** https://banatie.app/sitemap.xml ### Google Search Console - **Status:** ✅ Verified (TXT record) - **Indexed pages:** 1 (banatie.app/) - **Last crawl:** December 19, 2025 --- ## 6. Analytics ### Umami Analytics - **Plan:** Cloud (free tier) - **Dashboard:** cloud.umami.is - **Website ID:** 5af6a122-ca2e-4a48-9bfd-9cfd4d7b5174 - **Future:** Self-hosted planned --- ## 7. Performance ### PageSpeed Scores (December 19, 2025) | Metric | Mobile | Desktop | |--------|--------|---------| | Performance | 95 | 99 | | Accessibility | 100 | 100 | | Best Practices | 100 | 100 | | SEO | 100 | 100 | ### Core Web Vitals (Mobile) - **FCP:** 1.7s - **LCP:** 2.9s - **TBT:** 10ms - **CLS:** 0 ### Image Optimization - **Optimizer:** Next.js built-in - **Formats:** AVIF (primary), WebP (fallback) - **Logo size:** 376KB → 7.5KB (50x reduction) --- ## 8. Email Collection ### Current Implementation - **Storage:** File-based (volume on VPS) - **Location:** ./waitlist-logs/ - **Format:** JSON files per submission - **Email sending:** Not implemented ### Data Captured - Email address - Selected options from popup - Timestamp ### Future Plans - Email service integration (TBD) - Welcome email automation - Newsletter setup --- ## 9. Next.js Configuration ```typescript // next.config.ts const nextConfig: NextConfig = { output: 'standalone', trailingSlash: true, images: { formats: ['image/avif', 'image/webp'], }, eslint: { ignoreDuringBuilds: true, }, }; ``` --- ## 10. Deployment Checklist ### Completed ✅ - [x] Landing page deployed (~December 15, 2025) - [x] Domain connected via Cloudflare - [x] SSL configured (Full strict) - [x] Google Search Console verified - [x] Umami analytics connected - [x] Meta tags and OG image configured - [x] Cache rules for static assets - [x] Trailing slash redirect - [x] Image optimization (AVIF) - [x] PageSpeed 95+ mobile ### Pending ⏳ - [ ] API service deployment - [ ] CDN service setup (Imageflow + MinIO) - [ ] Email service integration - [ ] Self-hosted Umami migration --- **Document Owner:** Oleg **Last Updated:** December 21, 2025 **Next Review:** After API deployment