An Adaptive Edge application.
-
Replace placeholders in all files:
{{APP_NAME}}- Display name (e.g., "TierSort Survey"){{APP_SLUG}}- URL slug (e.g., "tiersort"){{APP_DESCRIPTION}}- Short description{{PORT}}- Server port (e.g., 5013){{DB_PASSWORD}}- MySQL password
-
Install dependencies:
npm install
-
Create MySQL database:
CREATE DATABASE {{APP_SLUG}}; -
Run database migrations:
npm run db:push
-
Start development:
npm run dev
-
Build:
npm run build
-
Copy to server:
scp -r dist/* root@adaptiveedge.uk:/var/www/{{APP_SLUG}}/ scp ecosystem.config.cjs root@adaptiveedge.uk:/var/www/{{APP_SLUG}}/ -
Start with PM2:
pm2 start ecosystem.config.cjs pm2 save
-
Add Apache config:
# Static files Alias /{{APP_SLUG}} /var/www/{{APP_SLUG}}/public <Directory /var/www/{{APP_SLUG}}/public> AllowOverride All Require all granted RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /{{APP_SLUG}}/index.html [L] </Directory> # API proxy ProxyPass /{{APP_SLUG}}/api http://127.0.0.1:{{PORT}}/api retry=0 ProxyPassReverse /{{APP_SLUG}}/api http://127.0.0.1:{{PORT}}/api
- Frontend: React, TypeScript, Vite, Tailwind CSS, shadcn/ui, Wouter, TanStack Query
- Backend: Node.js, Express, TypeScript, Drizzle ORM
- Database: MySQL
- Deployment: PM2, Apache reverse proxy