Commit a34eb27
authored
feat: Dashboard v2 - Full CRUD, Information-Rich UI, and Documentation (#28)
* feat: add Vue SPA dashboard foundation (WIP)
* feat: complete Vue SPA dashboard with command palette and secure env vars
- Add command palette (Cmd+K) with quick actions for deploy, restart,
logs, open in Coolify, live site, GitHub, and resource management
- Add toast notification system with success/error/warning/info types
- Add secure environment variables with automatic masking for sensitive
keys (PASSWORD, SECRET, TOKEN, KEY, etc.) and reveal toggle
- Add Coolify deep links throughout (app header, resource cards, sidebar)
- Consolidate pages: Dashboard, Deployments, Configuration (tabbed), Logs
- Add search/filter for environment variables
- Update SPA routing with catch-all for client-side navigation
- Add comprehensive tests for env vars and database operations
- Update Docker generator to handle wayfinder in CI/Docker builds
- Improve install/provision command output and CLI formatting
Stu Mason + AI <me@stumason.dev>
* feat: add multi-environment switcher and backup toast notifications
Add EnvironmentController with endpoints to list and switch between
configured environments (dev, staging, production). Create EnvironmentSwitcher
Vue component in sidebar that shows current environment and allows switching.
Add toast notifications to backup trigger for better user feedback.
Stu Mason + AI <me@stumason.dev>
* fix: align API with Coolify - env vars and backup schedules
- Remove is_build_time field from env var creation (Coolify doesn't support it)
- Remove non-existent backup trigger endpoint (POST /databases/{uuid}/backup)
- Implement proper backup schedule display with executions
- Update backups() repository method to fetch schedules with their executions
- Update tests to match new backup API structure
Stu Mason + AI <me@stumason.dev>
* fix: remove is_build_time checkboxes from env var forms
The Coolify API doesn't support is_build_time field. Remove the
UI elements that were still binding to it via v-model.
Stu Mason + AI <me@stumason.dev>
* feat: complete dashboard v2 with full CRUD and information-rich UI
Dashboard Enhancements:
- Hero status card with animated health indicators
- Deployment info bar (branch, commit, last deploy, project)
- One-click deploy with dropdown (latest, force, specific commit)
- Database/cache cards with internal host and public port info
- Recent deployments with inline accordion build logs
- Lazy-loaded logs with 6-line preview and "See more" expansion
- Color-coded stdout/stderr with line numbers
- GitHub integration (commit links, branch links, repo links)
- Coolify deep links to resources
Bug Fixes:
- Fix env var update 404 (was missing envUuid in URL path)
- Fix deployment logs endpoint response format
- Fix project/environment not displaying (fetch from API)
New Features:
- Backup schedule CRUD for databases
- Environment multi-switcher in Configuration
- Toast notifications for backup operations
- Database start/stop/restart from Resources page
API Changes:
- ApplicationRepository::updateEnv() now takes envUuid parameter
- DatabaseRepository::createBackup/updateBackup/deleteBackup added
- DashboardStatsController returns project, environment, server data
Documentation:
- Complete README rewrite with badges and screenshot
- Dashboard overview docs with all features documented
- Landing page with feature cards and quick start
Stu Mason + AI <me@stumason.dev>
* fix: add input validation to controllers (PR review feedback)
ApplicationController:
- Whitelist allowed fields for update() with proper types/limits
- Validate commit SHA format (7-40 hex chars) on deploy
- Validate env var keys (uppercase, underscores only, starts with letter)
- Validate env var values (max 65535 chars)
- Add boolean flags validation for env vars
DatabaseController:
- Whitelist allowed fields for update()
- Validate backup frequency (cron format regex)
- Validate retention amounts (1-1000)
- Validate S3 storage UUID
Tests:
- Add 7 new validation tests
- Test invalid env var key format
- Test required env var fields
- Test invalid commit SHA format
- Test health check port/interval ranges
All 220 tests passing.
Stu Mason + AI <me@stumason.dev>1 parent 1cfd0b8 commit a34eb27
File tree
52 files changed
+9301
-187
lines changed- dist
- docs
- public
- src
- assets
- content/docs
- dashboard
- resources
- css
- js
- components
- pages
- views
- routes
- src
- Console
- Contracts
- Docker
- Http/Controllers
- Repositories
- tests
- Feature
- Console
- Http
- Unit
- Repositories
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
52 files changed
+9301
-187
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
4 | 24 | | |
5 | 25 | | |
6 | 26 | | |
| |||
16 | 36 | | |
17 | 37 | | |
18 | 38 | | |
19 | | - | |
| 39 | + | |
20 | 40 | | |
21 | 41 | | |
22 | 42 | | |
23 | 43 | | |
24 | 44 | | |
25 | | - | |
| 45 | + | |
26 | 46 | | |
27 | 47 | | |
28 | 48 | | |
29 | | - | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
30 | 75 | | |
31 | | - | |
| 76 | + | |
32 | 77 | | |
33 | 78 | | |
34 | 79 | | |
35 | 80 | | |
36 | 81 | | |
37 | 82 | | |
38 | 83 | | |
39 | | - | |
| 84 | + | |
40 | 85 | | |
41 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
42 | 197 | | |
43 | 198 | | |
44 | 199 | | |
45 | | - | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
Whitespace-only changes.
Loading
Loading
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
6 | 10 | | |
7 | 11 | | |
8 | 12 | | |
9 | 13 | | |
10 | | - | |
| 14 | + | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
20 | 101 | | |
21 | 102 | | |
22 | 103 | | |
23 | | - | |
| 104 | + | |
24 | 105 | | |
25 | 106 | | |
26 | 107 | | |
27 | 108 | | |
28 | 109 | | |
29 | | - | |
| 110 | + | |
0 commit comments