Replace React/Vite frontend + Fastify API with a single PHP application. - Front controller router in public/index.php (clean URLs via .htaccess) - Session-based auth (no JWT) — register, login, verify email, forgot/reset password, logout - Stripe checkout sessions, billing portal, webhook handler (checkout.session.completed, subscription.updated/deleted) - License IP change via internal licensing server API - PHP classes: DB (PDO), Auth, Mailer (PHPMailer), StripeClient - Views: home, pricing, install, login, register, dashboard, verify-email, forgot-password, reset-password, 404 - Tailwind CSS via CDN — no build step required - Composer dependencies: stripe/stripe-php, phpmailer/phpmailer, vlucas/phpdotenv, ramsey/uuid - CSRF protection on all POST forms - PRG pattern with session flash messages Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
37 lines
851 B
Bash
37 lines
851 B
Bash
APP_URL=https://nixpanel.io
|
|
APP_ENV=production
|
|
|
|
# Database
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=3306
|
|
DB_NAME=nixpanel_website
|
|
DB_USER=nixpanel_web
|
|
DB_PASSWORD=your_secure_password
|
|
|
|
# Session
|
|
SESSION_SECRET=change_this_to_a_long_random_string
|
|
|
|
# Stripe
|
|
STRIPE_SECRET_KEY=sk_live_...
|
|
STRIPE_PUBLISHABLE_KEY=pk_live_...
|
|
STRIPE_WEBHOOK_SECRET=whsec_...
|
|
|
|
STRIPE_PRICE_SOLO_MONTHLY=price_...
|
|
STRIPE_PRICE_SOLO_ANNUAL=price_...
|
|
STRIPE_PRICE_HOST_MONTHLY=price_...
|
|
STRIPE_PRICE_HOST_ANNUAL=price_...
|
|
STRIPE_PRICE_AGENCY_MONTHLY=price_...
|
|
STRIPE_PRICE_AGENCY_ANNUAL=price_...
|
|
|
|
# Mail (SMTP)
|
|
MAIL_HOST=smtp.mailgun.org
|
|
MAIL_PORT=587
|
|
MAIL_USER=[email protected]
|
|
MAIL_PASSWORD=your_smtp_password
|
|
MAIL_FROM=[email protected]
|
|
MAIL_FROM_NAME=NixPanel
|
|
|
|
# Internal licensing server
|
|
LICENSING_SERVER_URL=http://localhost:3000
|
|
LICENSING_SERVER_API_KEY=your_internal_api_key
|