AppForge: migrate off Supabase to external Postgres + Better Auth + local storage
- New Express + TypeScript backend (server/) with pg, Better Auth, local file storage - De-Supabased Postgres schema (server/db) and TS reimplementations of DB functions - Frontend data layer rewired to REST (rest-client + backend-client compat shim) - Removed all Supabase references (code, config, deps, docs) - New brand assets: gradient favicon/app icons + dark/white wordmark logos Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# ============================================
|
||||
# AppForge - Environment Variables
|
||||
# Stack: External Postgres + Better Auth + Local Storage + Express backend
|
||||
# Copy this file to .env and fill in your values. Never commit .env!
|
||||
# ============================================
|
||||
|
||||
# ============================================
|
||||
# Database (Required)
|
||||
# ============================================
|
||||
# Postgres connection string for your external database
|
||||
DATABASE_URL=postgres://user:password@host:5432/postgres
|
||||
# Set to true to allow self-signed / non-verified TLS on the DB connection
|
||||
PGSSL_NO_VERIFY=true
|
||||
|
||||
# ============================================
|
||||
# Backend Server (Required)
|
||||
# ============================================
|
||||
# Port the Express API server listens on
|
||||
PORT=8787
|
||||
|
||||
# ============================================
|
||||
# Better Auth (Required)
|
||||
# ============================================
|
||||
# Generate a strong random secret for production (e.g. `openssl rand -hex 32`)
|
||||
BETTER_AUTH_SECRET=change-me-to-a-long-random-string
|
||||
# Public origin the browser uses (dev: the Vite app origin)
|
||||
BETTER_AUTH_URL=http://localhost:8080
|
||||
# Optional Google OAuth (leave blank to disable Google sign-in)
|
||||
GOOGLE_CLIENT_ID=
|
||||
GOOGLE_CLIENT_SECRET=
|
||||
|
||||
# ============================================
|
||||
# Local File Storage
|
||||
# ============================================
|
||||
# Directory where uploaded files are stored (relative to project root or absolute)
|
||||
STORAGE_DIR=./server/storage
|
||||
# Public URL prefix used to serve stored files
|
||||
STORAGE_PUBLIC_PREFIX=/storage
|
||||
|
||||
# ============================================
|
||||
# Self-Hosting / App Defaults
|
||||
# ============================================
|
||||
# Email that is auto-assigned the admin role on first signup (optional)
|
||||
INITIAL_ADMIN_EMAIL=admin@example.com
|
||||
NODE_ENV=development
|
||||
|
||||
# ============================================
|
||||
# Frontend (Vite)
|
||||
# ============================================
|
||||
# Base URL the frontend uses to reach the backend. Empty = same origin (Vite proxy).
|
||||
VITE_API_URL=
|
||||
# Demo mode: true | false | empty (defer to database setting)
|
||||
VITE_DEMO_MODE=false
|
||||
|
||||
# ============================================
|
||||
# Optional Integrations (server-side; fill when needed)
|
||||
# ============================================
|
||||
# STRIPE_SECRET_KEY=
|
||||
# STRIPE_WEBHOOK_SECRET=
|
||||
# PAYPAL_CLIENT_ID=
|
||||
# PAYPAL_CLIENT_SECRET=
|
||||
# COINBASE_API_KEY=
|
||||
# COINBASE_WEBHOOK_SECRET=
|
||||
# CODEMAGIC_API_TOKEN=
|
||||
# CODEMAGIC_APP_ID=
|
||||
# RESEND_API_KEY=
|
||||
# OPENAI_API_KEY=
|
||||
# APPETIZE_API_KEY=
|
||||
Reference in New Issue
Block a user