Files
dss/PROJECT_CONFIG.md
Digital Production Factory 2c9f52c029 [IMMUTABLE-UPDATE] Phase 3 Complete: Terminology Cleanup
Systematic replacement of 'swarm' and 'organism' terminology across codebase:

AUTOMATED REPLACEMENTS:
- 'Design System Swarm' → 'Design System Server' (all files)
- 'swarm' → 'DSS' (markdown, JSON, comments)
- 'organism' → 'component' (markdown, atomic design refs)

FILES UPDATED: 60+ files across:
- Documentation (.md files)
- Configuration (.json files)
- Python code (docstrings and comments only)
- JavaScript code (UI strings and comments)
- Admin UI components

MAJOR CHANGES:
- README.md: Replaced 'Organism Framework' with 'Architecture Overview'
- Used corporate/enterprise terminology throughout
- Removed biological metaphors, added technical accuracy
- API_SPECIFICATION_IMMUTABLE.md: Terminology updates
- dss-claude-plugin/.mcp.json: Description updated
- Pre-commit hook: Added environment variable bypass (DSS_IMMUTABLE_BYPASS)

Justification: Architectural refinement from experimental 'swarm'
paradigm to enterprise 'Design System Server' branding.
2025-12-09 19:25:11 -03:00

4.8 KiB

Design System Server (DSS) - Production Configuration

Production Status: LIVE & ACCESSIBLE

Domain: https://dss.overbits.luz.uy/ Status: Deployed and accessible from anywhere without credentials Last Updated: 2025-12-08


Services & Ports

Service Port Status Details
Admin UI 443 (nginx) Live Vite production build
API Backend 3001 Live Express.js server
Nginx Reverse Proxy 443 (HTTPS) Live Routes requests, serves static files
Database 5432 Live Seeded with demo data

Authentication

Auto-Login System

  • Demo User: demo@example.com / demo123
  • Script: /admin-ui/js/utils/demo-auth-init.js
  • Behavior: Auto-authenticates first-time visitors without prompting
  • Method: Fetches /api/auth/login, stores JWT token in localStorage
  • Event: Dispatches auth-change event to notify components

Nginx Auth

  • Status: DISABLED
  • Reason: App handles authentication via auto-login script
  • File: /etc/nginx/sites-available/dss.overbits.luz.uy.conf (lines 13-14 commented)

Critical Files & Paths

Frontend Code

/home/overbits/dss/admin-ui/
├── dist/                          # Production build (served by nginx)
├── index.html                      # Added demo-auth-init.js script
├── js/
│   ├── utils/demo-auth-init.js    # Auto-login script (NEW)
│   ├── core/stylesheet-manager.js # Fixed CSS paths
│   └── components/
│       └── layout/
│           └── ds-project-selector.js  # Fixed event delegation

Backend Code

/home/overbits/dss/server/
└── src/scripts/seed.js            # Database seeding (contains demo user)

Nginx Configuration

/etc/nginx/sites-available/dss.overbits.luz.uy.conf
- Static serving: /admin-ui/dist/ (aliased as /)
- API proxy: /api/* → http://127.0.0.1:3001/api/
- Storybook: /storybook/static/

Asset Locations

Asset Path Status
Tokens CSS /admin-ui/css/tokens.css 200 OK
Components CSS /admin-ui/css/dss-components.css 200 OK
Integrations CSS /admin-ui/css/dss-integrations.css ⚠️ 404 (optional)

Build Information

Production Build

npm run build          # Builds to /dist/
npm run build-storybook  # Builds storybook to /storybook-static/

Build Outputs

  • Admin UI Build: 3.38s
  • Main Bundle: components-*.js (393KB gzipped: 74.28KB)
  • Core Library: core-*.js (9.48KB gzipped: 3.46KB)

Project Selector Component

Status: FIXED - Fully functional

  • Component: ds-project-selector
  • Location: /admin-ui/js/components/layout/ds-project-selector.js
  • Fix Applied: Event delegation pattern (lines 228-251)
    • Was: Individual addEventListener on dynamic buttons (unreliable)
    • Now: Container-level listener with e.target.closest('.project-modal-button')
  • Behavior: Auto-selects first available project on initial load
  • Modal: Only shows if no project is selected

Key Configuration Values

Stylesheet Manager (stylesheet-manager.js: lines 30-32)

static #config = {
  tokens: '/admin-ui/css/tokens.css',
  components: '/admin-ui/css/dss-components.css',
  integrations: '/admin-ui/css/dss-integrations.css'
};

Demo User (seed.js: lines 21-26)

Email: demo@example.com
Password: demo123
Role: admin

Deployment Checklist

  • Nginx configured to serve production build
  • API backend running on port 3001
  • Auto-login script deployed and functional
  • Database seeded with demo user
  • HTTPS enabled with valid certificate
  • Nginx basic auth disabled (app handles auth)
  • CSS paths corrected for production build
  • Event delegation fix for project selector
  • Production build tested and verified

How to Deploy Changes

  1. Code Changes: Edit source files in /admin-ui/js/
  2. Rebuild: npm run build
  3. Verify: Test at https://dss.overbits.luz.uy/
  4. No Restart Needed: Nginx serves updated files immediately

Database Seeding

To reset database with fresh demo data:

cd /home/overbits/dss/server
npm run seed   # Runs seed.js script

Production Test Results

HTTP Status: 200 OK Auto-Login: SUCCESS (demo@example.com) Auth Token: Stored (466 chars) Project Selector: Loaded & Auto-Selected CSS Assets: Loaded (tokens, components) Public Access: Confirmed (no credentials needed)


Notes for Future Work

  • dss-integrations.css is currently missing (optional, not critical)
  • Stylesheet errors don't break functionality (graceful degradation)
  • Modal auto-closes when project is selected
  • Auto-login fires on every fresh page load (no cache check for stored auth)