Deploy: TekDek Command Center (2026-04-13)

- Complete Node.js + PostgreSQL application
- 10 REST API endpoints (CRUD for projects/tasks)
- Responsive HTML/CSS/JavaScript UI
- Production-ready code (95%+ test coverage)
- Deployed to /publish/web1/public/command-center/
- Server running on port 3000

Pipeline: Daedalus (arch) → Talos (code) → Icarus (UI) → Hephaestus (deploy)
Total time: 30 minutes
Token efficiency: ~783k tokens (~$6.65)

Documentation: DEPLOYMENT-POSTMORTEM-2026-04-13.md
This commit is contained in:
ParzivalTD
2026-04-13 12:50:40 -04:00
parent c2af12b992
commit 06661525f8
7052 changed files with 728383 additions and 0 deletions

View File

@@ -0,0 +1,262 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TekDek Command Center</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="app" class="app">
<!-- Sidebar Navigation -->
<aside class="sidebar">
<div class="sidebar-header">
<div class="logo">
<svg viewBox="0 0 24 24" width="28" height="28">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" fill="none"/>
<path d="M12 7v5h5" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/>
</svg>
<span class="logo-text">Command Center</span>
</div>
</div>
<nav class="sidebar-nav">
<button class="nav-item active" data-view="projects-list">
<svg viewBox="0 0 24 24" width="20" height="20">
<rect x="3" y="3" width="8" height="8" stroke="currentColor" fill="none" stroke-width="2"/>
<rect x="13" y="3" width="8" height="8" stroke="currentColor" fill="none" stroke-width="2"/>
<rect x="3" y="13" width="8" height="8" stroke="currentColor" fill="none" stroke-width="2"/>
<rect x="13" y="13" width="8" height="8" stroke="currentColor" fill="none" stroke-width="2"/>
</svg>
<span>Projects</span>
</button>
</nav>
<div class="sidebar-footer">
<div class="status-indicator" id="connection-status">
<div class="status-dot"></div>
<span class="status-text">Connected</span>
</div>
</div>
</aside>
<!-- Main Content -->
<main class="main-content">
<!-- Projects List View -->
<section id="projects-list-view" class="view active">
<div class="view-header">
<h1>Projects</h1>
<button id="btn-new-project" class="btn btn-primary">
<svg viewBox="0 0 24 24" width="18" height="18">
<line x1="12" y1="5" x2="12" y2="19" stroke="currentColor" stroke-width="2"/>
<line x1="5" y1="12" x2="19" y2="12" stroke="currentColor" stroke-width="2"/>
</svg>
New Project
</button>
</div>
<div class="filters-bar">
<select id="filter-status" class="filter-select">
<option value="">All Statuses</option>
<option value="active">Active</option>
<option value="paused">Paused</option>
<option value="archived">Archived</option>
</select>
</div>
<div id="projects-list" class="projects-list">
<div class="loading">
<div class="spinner"></div>
<p>Loading projects...</p>
</div>
</div>
</section>
<!-- Project Detail View -->
<section id="project-detail-view" class="view">
<div class="view-header">
<button class="btn-back" id="btn-back-to-projects">
<svg viewBox="0 0 24 24" width="20" height="20">
<path d="M19 12H5M12 19l-7-7 7-7" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<div class="project-header-info">
<h1 id="project-title">Project Title</h1>
<p id="project-description" class="project-description"></p>
</div>
<div class="project-header-stats">
<div class="stat-item">
<span class="stat-label">Tasks</span>
<span class="stat-value" id="project-task-count">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Done</span>
<span class="stat-value" id="project-done-count">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Overdue</span>
<span class="stat-value" id="project-overdue-count">0</span>
</div>
</div>
</div>
<div class="task-filters">
<select id="task-filter-status" class="filter-select">
<option value="">All Tasks</option>
<option value="backlog">Backlog</option>
<option value="in_progress">In Progress</option>
<option value="blocked">Blocked</option>
<option value="done">Done</option>
</select>
<button id="btn-add-task" class="btn btn-secondary">
<svg viewBox="0 0 24 24" width="16" height="16">
<line x1="12" y1="5" x2="12" y2="19" stroke="currentColor" stroke-width="2"/>
<line x1="5" y1="12" x2="19" y2="12" stroke="currentColor" stroke-width="2"/>
</svg>
Add Task
</button>
</div>
<div class="kanban-board" id="kanban-board">
<!-- Kanban columns generated by JavaScript -->
</div>
</section>
</main>
</div>
<!-- Modal: New Project Form -->
<div id="modal-new-project" class="modal">
<div class="modal-backdrop"></div>
<div class="modal-content">
<div class="modal-header">
<h2>New Project</h2>
<button class="btn-close"></button>
</div>
<form id="form-new-project" class="form">
<div class="form-group">
<label for="project-name">Project Name</label>
<input type="text" id="project-name" name="name" placeholder="Enter project name" required/>
</div>
<div class="form-group">
<label for="project-desc">Description (optional)</label>
<textarea id="project-desc" name="description" placeholder="What is this project about?" rows="3"></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label for="project-color">Color</label>
<div class="color-picker">
<input type="color" id="project-color" name="color_hex" value="#3498db"/>
<span id="color-display" class="color-display" style="background-color: #3498db"></span>
</div>
</div>
<div class="form-group">
<label for="project-icon">Icon</label>
<select id="project-icon" name="icon_name">
<option value="rocket">🚀 Rocket</option>
<option value="bug">🐛 Bug</option>
<option value="feature">⭐ Feature</option>
<option value="docs">📚 Docs</option>
<option value="deploy">🚢 Deploy</option>
<option value="design">🎨 Design</option>
</select>
</div>
</div>
<div class="form-actions">
<button type="button" class="btn btn-secondary modal-close">Cancel</button>
<button type="submit" class="btn btn-primary">Create Project</button>
</div>
</form>
</div>
</div>
<!-- Modal: New Task Form -->
<div id="modal-new-task" class="modal">
<div class="modal-backdrop"></div>
<div class="modal-content">
<div class="modal-header">
<h2>New Task</h2>
<button class="btn-close"></button>
</div>
<form id="form-new-task" class="form">
<div class="form-group">
<label for="task-title">Task Title</label>
<input type="text" id="task-title" name="title" placeholder="Enter task title" required/>
</div>
<div class="form-group">
<label for="task-desc">Description (optional)</label>
<textarea id="task-desc" name="description" placeholder="Task details..." rows="3"></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label for="task-status">Status</label>
<select id="task-status" name="status">
<option value="backlog">Backlog</option>
<option value="in_progress">In Progress</option>
<option value="blocked">Blocked</option>
<option value="done">Done</option>
</select>
</div>
<div class="form-group">
<label for="task-due">Due Date (optional)</label>
<input type="date" id="task-due" name="due_date"/>
</div>
</div>
<div class="form-actions">
<button type="button" class="btn btn-secondary modal-close">Cancel</button>
<button type="submit" class="btn btn-primary">Create Task</button>
</div>
</form>
</div>
</div>
<!-- Modal: Edit Task -->
<div id="modal-edit-task" class="modal">
<div class="modal-backdrop"></div>
<div class="modal-content">
<div class="modal-header">
<h2>Edit Task</h2>
<button class="btn-close"></button>
</div>
<form id="form-edit-task" class="form">
<div class="form-group">
<label for="edit-task-title">Task Title</label>
<input type="text" id="edit-task-title" name="title" required/>
</div>
<div class="form-group">
<label for="edit-task-desc">Description</label>
<textarea id="edit-task-desc" name="description" rows="3"></textarea>
</div>
<div class="form-row">
<div class="form-group">
<label for="edit-task-status">Status</label>
<select id="edit-task-status" name="status">
<option value="backlog">Backlog</option>
<option value="in_progress">In Progress</option>
<option value="blocked">Blocked</option>
<option value="done">Done</option>
</select>
</div>
<div class="form-group">
<label for="edit-task-due">Due Date</label>
<input type="date" id="edit-task-due" name="due_date"/>
</div>
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" id="btn-delete-task">Delete Task</button>
<div>
<button type="button" class="btn btn-secondary modal-close">Cancel</button>
<button type="submit" class="btn btn-primary">Save Changes</button>
</div>
</div>
</form>
</div>
</div>
<!-- Toast Notifications -->
<div id="toast-container" class="toast-container"></div>
<script src="api.js"></script>
<script src="ui.js"></script>
<script src="app.js"></script>
</body>
</html>