Major architectural improvements: - Auto-generate SSL certificates on first startup with OpenSSL - Dual HTTP (8081) + HTTPS (8443) backend API servers - Frontend auto-detects protocol and uses appropriate API endpoint - Fix database ORM initialization race condition with getDb() pattern - WebSocket authentication with JWT verification during handshake - Zero-config .env file generation for production deployment - Docker and nginx configurations for container deployment Technical fixes: - Eliminate module initialization race conditions in database access - Replace direct db imports with safer getDb() function calls - Automatic HTTPS frontend development server (npm run dev:https) - SSL certificate generation with termix.crt/termix.key - Cross-platform environment variable support with cross-env This enables seamless HTTP→HTTPS upgrade with zero manual configuration. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
29 lines
1.7 KiB
Plaintext
29 lines
1.7 KiB
Plaintext
-----BEGIN PRIVATE KEY-----
|
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDCA5RvhN4y5c3D
|
|
8L8tKavR5tXHPpWImDTIQmf5XgUvkUq6ojq/TmotYcyerValq/CwruZjxaiEHHcf
|
|
zqejYYa20OsyiYFa4m87pyVoo+PR0KMkkw2nuQlXtTOH6ScFbgYJFGU3gfT8C2SJ
|
|
xKvc+fNnQUrIbdByXbJKYXSOf9YCJ7CIX1+YmDAxFfdVDZS7bcq7WVruLO5mZjW2
|
|
JSyUpbJbeLLiy62f2r56/rMj8ps3mhknahKbThmVwNBi4PdRIc9LeDXrAEc0sUm2
|
|
evc6z6V+peXUCjlAnGJeMjDet58l1BDOzcAnypEv00GgngkogLF5Sb6FfmKQZUC2
|
|
ggivWHrrAgMBAAECggEAVasz/5w5a1sa5VLob95PLuPRcOXbLJIc+HKOK8gO3Sa4
|
|
Szn4W+IZs0lUi5p5wLTwFmxcciDk3NUe6s4bKuMVE6Ojv1CFbGbA/CO9untnzQ1m
|
|
BG/knzNvAyoRg4l5wAWJp7e4S+7YCPVU4xqTUwORrX3gsij/WoiyAfMPfx7GlnM/
|
|
WfPYPWdaTCKHPpbTbN7mUATM9sX9Lil+V31w2lKZ1Bw1GL9YQS7DsPtf/YR8mPoW
|
|
t29jDPZm4h/QkKpDpr8Gg8vKAwkDQDXjcm+z1O4pABAKIYW/uBTsuJ+47Gs+trDW
|
|
A4hU91WFm0Lf8mh9YON+oxUKUo6Iuulr1CCd5zG5dQKBgQD1oaZeN+zE2fhE3DxM
|
|
jZl5gTg142+tjPuNdQWzW6vZDNTp2N494mBHNC1SB4LLooJmdpHTxW0Rz8mamH7I
|
|
fbGktt9YYw4pgPblUaFVm6DupJI1qo5+JElrzWkYIcx7ZPAFnZxeBR19FjnvezW2
|
|
q7qJzmFi9P1ao0iWKB26ljfW9wKBgQDKNCPGUBKy2G3UFANEomLNxEOgvoK+di5j
|
|
Fb8us/naGNlo98VYRmSjgHOFFM6W8IbZw9CVqwld3H26/FqHLJ77ujRmKzj6Jqrd
|
|
jPZqO9Di17/9uw4xfC+tQ6ngoPZq5poycKz3gSn9TOqu7bPfNRIzzLijC+hL1xDH
|
|
b0eaUwn6rQKBgQCyQfrju4BHp8vl5VKZV9W+eQmbChA9Cehw0zEs5eVD4m0NvEYk
|
|
8QlgAzy0oCDKuYga5geUgV1TJNGxMOQpihaGa/SQR2q6sg37hA8qeoQDTEmTStCY
|
|
OKtT4cFYMwcbsbgCy0v0a4/n/F5VLrxfcicw5SaF0zeeNItz9W8FvwiNJwKBgQDI
|
|
Sm9pYCW1fEcGPTCjisqeEhv/HNb7fKskQQVYaLREQjsRC+UyNMA5aOKE34Bn6Sda
|
|
i+mQZ5RmoiL01kWCAkQVC3QeBBBzUVwNCzWHM2sNWDL4TZKYl+/OC+k49ZhBed0h
|
|
u5TJser62nbZAeIbZkF6h/4Ym5HllcosEuF1T23iHQKBgQDYZOZzwxSwXnRbAvk8
|
|
v1c0rIkEonio2nyeRNNnN7Y27vwyi17o92hOBdZfPNWF6HheSlcuA1LhUI4/I6qF
|
|
2aZoMmLYdGl1/BCsnmbwWWFWD3p0BDDXGXi0OepRBjCi4imfy3lR3D0dQrqbeihR
|
|
VrAkQCkCByVeA5OcBrBeL+Dzig==
|
|
-----END PRIVATE KEY-----
|