upaas/templates/setup.html
sneak 3f9d83c436 Initial commit with server startup infrastructure
Core infrastructure:
- Uber fx dependency injection
- Chi router with middleware stack
- SQLite database with embedded migrations
- Embedded templates and static assets
- Structured logging with slog

Features implemented:
- Authentication (login, logout, session management, argon2id hashing)
- App management (create, edit, delete, list)
- Deployment pipeline (clone, build, deploy, health check)
- Webhook processing for Gitea
- Notifications (ntfy, Slack)
- Environment variables, labels, volumes per app
- SSH key generation for deploy keys

Server startup:
- Server.Run() starts HTTP server on configured port
- Server.Shutdown() for graceful shutdown
- SetupRoutes() wires all handlers with chi router
2025-12-29 15:46:03 +07:00

70 lines
2.4 KiB
HTML

{{template "base" .}}
{{define "title"}}Setup - upaas{{end}}
{{define "content"}}
<div class="min-h-screen flex items-center justify-center py-12 px-4">
<div class="max-w-md w-full">
<div class="text-center mb-8">
<h1 class="text-3xl font-medium text-gray-900">Welcome to upaas</h1>
<p class="mt-2 text-gray-600">Create your admin account to get started</p>
</div>
<div class="card p-8">
{{template "alert-error" .}}
<form method="POST" action="/setup" class="space-y-6">
<div class="form-group">
<label for="username" class="label">Username</label>
<input
type="text"
id="username"
name="username"
value="{{.Username}}"
required
autofocus
autocomplete="username"
class="input"
placeholder="admin"
>
</div>
<div class="form-group">
<label for="password" class="label">Password</label>
<input
type="password"
id="password"
name="password"
required
autocomplete="new-password"
class="input"
placeholder="Minimum 8 characters"
>
</div>
<div class="form-group">
<label for="password_confirm" class="label">Confirm Password</label>
<input
type="password"
id="password_confirm"
name="password_confirm"
required
autocomplete="new-password"
class="input"
placeholder="Repeat your password"
>
</div>
<button type="submit" class="btn-primary w-full py-3">
Create Account
</button>
</form>
</div>
<p class="mt-6 text-center text-sm text-gray-500">
This is a single-user system. This account will be the only admin.
</p>
</div>
</div>
{{end}}