- Admin sidebar layout (base_admin.html) with espresso/copper coffee theme, 220px sidebar, responsive collapse, nav for Dashboard/Users/Tasks/Feedback/Waitlist - Convert all admin templates to extend base_admin.html using Tailwind classes - Feedback system: schema, public POST route (rate-limited), base.html widget with HTMX popover (coffee-themed), admin viewer with mark-read - Waitlist mode: WAITLIST_MODE config, waitlist_gate decorator, capture_waitlist_email helper, auth route integration, confirmation pages, send_waitlist_confirmation worker task, admin table - Sitemap.xml and robots.txt public routes - Dashboard stats updated with waitlist_count, feedback_unread alongside existing commodity DuckDB analytics stats Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
36 lines
624 B
Plaintext
36 lines
624 B
Plaintext
# App
|
|
APP_NAME=BeanFlows
|
|
SECRET_KEY=change-me-generate-a-real-secret
|
|
BASE_URL=http://localhost:5001
|
|
DEBUG=true
|
|
ADMIN_PASSWORD=admin
|
|
ADMIN_EMAILS=admin@beanflows.coffee
|
|
|
|
# Database
|
|
DATABASE_PATH=data/app.db
|
|
DUCKDB_PATH=../local.duckdb
|
|
|
|
# Auth
|
|
MAGIC_LINK_EXPIRY_MINUTES=15
|
|
SESSION_LIFETIME_DAYS=30
|
|
|
|
# Email (Resend)
|
|
RESEND_API_KEY=
|
|
EMAIL_FROM=hello@example.com
|
|
|
|
|
|
# Paddle
|
|
PADDLE_API_KEY=
|
|
PADDLE_WEBHOOK_SECRET=
|
|
PADDLE_PRICE_STARTER=
|
|
PADDLE_PRICE_PRO=
|
|
|
|
|
|
# Rate limiting
|
|
RATE_LIMIT_REQUESTS=100
|
|
RATE_LIMIT_WINDOW=60
|
|
|
|
# Waitlist (set to true to enable waitlist gate on /auth/signup)
|
|
WAITLIST_MODE=false
|
|
RESEND_AUDIENCE_WAITLIST=
|