PM2 cluster deploy + Redis caching + Nginx gzip + UI polish
- PM2 v6: 2x API cluster + 1x web, zero-downtime reload - Redis cache: 30s TTL on GET /tasks, X-Cache header - Nginx gzip compression - Mobile touch targets 44px - Czech diacritics throughout UI - TaskModal slide-up animation - StatusBadge color dots - GroupSelector emoji icons Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
41
ecosystem.config.js
Normal file
41
ecosystem.config.js
Normal file
@@ -0,0 +1,41 @@
|
||||
module.exports = {
|
||||
apps: [
|
||||
{
|
||||
name: "taskteam-api",
|
||||
script: "api/src/index.js",
|
||||
cwd: "/opt/task-team",
|
||||
instances: 2,
|
||||
exec_mode: "cluster",
|
||||
env: {
|
||||
NODE_ENV: "production",
|
||||
PORT: 3000,
|
||||
DATABASE_URL: "postgresql://taskteam:TaskTeam2026!@10.10.10.10:5432/taskteam",
|
||||
REDIS_URL: "redis://:Redis2026!@10.10.10.10:6379",
|
||||
JWT_SECRET: "taskteam-jwt-secret-2026-secure-key",
|
||||
ANTHROPIC_API_KEY: "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",
|
||||
NOTION_API_KEY: "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",
|
||||
NOTION_TASKS_DB: "659a5381-564a-453a-9e2b-1345c457cca9"
|
||||
},
|
||||
max_memory_restart: "500M",
|
||||
watch: false,
|
||||
merge_logs: true,
|
||||
log_date_format: "YYYY-MM-DD HH:mm:ss Z"
|
||||
},
|
||||
{
|
||||
name: "taskteam-web",
|
||||
script: "node_modules/.bin/next",
|
||||
args: "start -p 3001",
|
||||
cwd: "/opt/task-team/apps/tasks",
|
||||
instances: 1,
|
||||
exec_mode: "fork",
|
||||
env: {
|
||||
NODE_ENV: "production",
|
||||
NEXT_PUBLIC_API_URL: "http://localhost:3000"
|
||||
},
|
||||
max_memory_restart: "500M",
|
||||
watch: false,
|
||||
merge_logs: true,
|
||||
log_date_format: "YYYY-MM-DD HH:mm:ss Z"
|
||||
}
|
||||
]
|
||||
};
|
||||
Reference in New Issue
Block a user