Files
zeitkort-web-golang/templates/about_page.html
T
2026-06-18 21:41:47 +01:00

21 lines
2.3 KiB
HTML

{{define "about_page"}}
<h2>About this POC</h2>
<section class="about-card">
<p><strong>zeitkort</strong> is a consultant time-tracking web application bundled with a PDF invoice creator.</p>
<p>At <strong>FLÓ</strong>, I use this for tracking all my consultancy work, generating and sending invoices.</p>
<p>So the hierarchy is like this: at the top level I create companies I do work for.</p>
<p>For example, add new company, and add the company info. The company info will automatically be used for generating the invoice</p>
<p>One company can have multiple assignments. That could be 'Create backend for webservice A' or 'Build ETL process for billing pipeline'. Like a large chunk of work for a company, a logical border.</p>
<p>One assignment can ahve many tasks. For example 'Set up HTTP server', 'Administrative work', or 'CI/CD Pipeline' under the assignment 'Create backend for web service A'.</p>
<p>From here on you can either start a timer for a certain task, or add tasks manually. Everything can be edited or deleted, but not cascading deletes upwards in the hierarchy.</p>
<p>When you are done with an assignment for the company, create the invoice. When pressing the button, you can change the basic info about the company, and you can add lines that are not time, but quantity or other measures. For example, 2 pcs. routers at 200 kr a piece. Or whatever you know what I mean. Or like perhaps it is not an hourly rate, but just a one time price for the whole assignment.</p>
<br>
<p>This dummy version runs in-memory and is reset every 10 minutes (When I run it I have an API to my Nixos home server which uses sqlite as data store).</p>
<p>It is served via Caddy (I love Caddy) to my FLÓ subdomain.</p>
<p>It is one static Go binary, it uses the golang built-in server-rendered HTML templating language, htmx for page updates (Javascript for the dummy timer), embedded static files.</p>
<p>I mean, come on, this things ships <strong>as a single binary</strong>, like all of this right? And when I use the API, it is all still a single binary. Could not be easier (I love Go).</p>
<p class="poc-warning"><strong>POC reset:</strong> all in-memory data is wiped every {{.ResetIntervalMinutes}} minutes and whenever the process restarts.</p>
<p><button hx-get="/main" hx-target="#main">Back to timer</button></p>
</section>
{{end}}