- Full nixpanel-website monorepo: web (React/Vite) + api (Fastify) - Add /install page with one-liner, manual steps, requirements, software table, firewall ports, service management, and update/uninstall - Add Install link to header nav and footer - Add 'Install guide' CTA button to home page hero - Add 'outline' variant to Button component - Add .gitignore and .gitattributes Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import dotenv from 'dotenv';
|
|
dotenv.config();
|
|
|
|
function require(key: string): string {
|
|
const val = process.env[key];
|
|
if (!val) throw new Error(`Missing required environment variable: ${key}`);
|
|
return val;
|
|
}
|
|
|
|
export const config = {
|
|
env: process.env.NODE_ENV || 'production',
|
|
port: parseInt(process.env.PORT || '4000', 10),
|
|
host: process.env.HOST || '0.0.0.0',
|
|
|
|
db: {
|
|
host: process.env.DB_HOST || '127.0.0.1',
|
|
port: parseInt(process.env.DB_PORT || '3306', 10),
|
|
user: require('DB_USER'),
|
|
password: require('DB_PASSWORD'),
|
|
name: require('DB_NAME'),
|
|
},
|
|
|
|
jwt: {
|
|
secret: require('JWT_SECRET'),
|
|
expiresIn: process.env.JWT_EXPIRES_IN || '7d',
|
|
},
|
|
|
|
stripe: {
|
|
secretKey: require('STRIPE_SECRET_KEY'),
|
|
webhookSecret: require('STRIPE_WEBHOOK_SECRET'),
|
|
plans: {
|
|
// Stripe Price IDs — set after creating products in Stripe dashboard
|
|
solo_monthly: process.env.STRIPE_PRICE_SOLO_MONTHLY || '',
|
|
solo_annual: process.env.STRIPE_PRICE_SOLO_ANNUAL || '',
|
|
host_monthly: process.env.STRIPE_PRICE_HOST_MONTHLY || '',
|
|
host_annual: process.env.STRIPE_PRICE_HOST_ANNUAL || '',
|
|
agency_monthly: process.env.STRIPE_PRICE_AGENCY_MONTHLY || '',
|
|
agency_annual: process.env.STRIPE_PRICE_AGENCY_ANNUAL || '',
|
|
},
|
|
},
|
|
|
|
licensingServer: {
|
|
url: require('LICENSING_SERVER_URL'),
|
|
apiKey: require('LICENSING_SERVER_API_KEY'),
|
|
},
|
|
|
|
mail: {
|
|
host: process.env.MAIL_HOST || 'smtp.mailgun.org',
|
|
port: parseInt(process.env.MAIL_PORT || '587', 10),
|
|
user: process.env.MAIL_USER || '',
|
|
password: process.env.MAIL_PASSWORD || '',
|
|
from: process.env.MAIL_FROM || '[email protected]',
|
|
},
|
|
|
|
appUrl: process.env.APP_URL || 'https://nixpanel.io',
|
|
|
|
cors: {
|
|
origin: process.env.CORS_ORIGIN || 'https://nixpanel.io',
|
|
},
|
|
};
|