tracker: single-binary project tracker with auth, api keys, and json api
Go + SQLite web app, server-rendered, hackerman theme. Projects with descriptions, searchable notes, todo/doing/done task tracking. Bcrypt login sessions, hashed api keys, full /api/v1 crud. Deploys on straylight via configs/tracker.nix (prebuilt binary).
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
{{template "header" .}}
|
||||
|
||||
<section class="stats">
|
||||
<div class="stat"><span class="num">{{.Stats.Projects}}</span><span class="label">projects</span></div>
|
||||
<div class="stat todo"><span class="num">{{.Stats.Tasks.Todo}}</span><span class="label">todo</span></div>
|
||||
<div class="stat doing"><span class="num">{{.Stats.Tasks.Doing}}</span><span class="label">doing</span></div>
|
||||
<div class="stat done"><span class="num">{{.Stats.Tasks.Done}}</span><span class="label">done</span></div>
|
||||
<div class="stat"><span class="num">{{.Stats.Notes}}</span><span class="label">notes</span></div>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
<h1 class="glow">// new project</h1>
|
||||
<form method="post" action="/projects" class="stack">
|
||||
<input type="text" name="name" placeholder="project name" required maxlength="120">
|
||||
<textarea name="description" placeholder="description…" rows="3"></textarea>
|
||||
<button type="submit" class="btn primary">init ▸</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
<h1 class="glow">// projects</h1>
|
||||
{{if not .Projects}}
|
||||
<p class="muted">no projects on the grid. create one above ▲</p>
|
||||
{{end}}
|
||||
<ul class="project-list">
|
||||
{{range .Projects}}
|
||||
<li>
|
||||
<a class="project-link" href="/projects/{{.ID}}">{{.Name}}<span class="arrow"> ▸</span></a>
|
||||
{{if .Description}}<p class="muted">{{.Description}}</p>{{end}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{{template "footer" .}}
|
||||
Reference in New Issue
Block a user