Lehká full-stack kostra pro Golang
Stavte aplikace v Go lehce, čistě a rychle. Gin, Vue 3 a přísná pravidla, podle kterých píše stejně dobrý kód člověk i AI.
Naklonujte repo a nechte AI pracovat
Co Gin GoKick umí
1–5
Rozjetí
-
1
Go a Gin
Gin obslouží web z jedné binárky o 27 MB i se šablonami a frontendem.
-
2
Konfigurace z .env
Proměnné mají kontrolu. Překlep zastaví start, ne produkci.
-
3
Pravidla v AGENTS.md
Člověk i AI píšou podle stejných pravidel, nástroje je vynutí.
-
4
Brána před commitem
Jeden blok spustí před commitem lint, typy i testy jako CI.
-
5
Kontrola před pushem
Lefthook před pushem ověří název větve i zprávy commitů.
6–10
Databáze
-
6
PostgreSQL 18
Aplikace se připojí přes pgx, databázi spustí jeden příkaz.
-
7
Migrace goose
Spustí se při startu se zámkem, takže se instance nepoperou.
-
8
sqlc místo ORM
Dotazy píšete v SQL, typované funkce v Go se vygenerují.
-
9
Testy s databází
Každý test dostane prázdné schéma s migracemi, v CI i lokálně.
-
10
Dotazy podle funkce
Span i metrika pojmenují dotaz podle funkce aplikace, která ho spustila.
11–14
Nasazení
-
11
Docker image
Image běží na Alpine bez roota a healthcheck ověří i databázi.
-
12
Návod na nasazení
Provede prvním nasazením do Docker Swarmu s Cloudflarem i Grafanou.
-
13
Klidný restart
Při vypnutí požadavky doběhnou, nejdéle do pěti sekund.
-
14
E-maily přes SMTP
Lokálně je chytí Mailpit, v produkci je odešle Amazon SES.
15–18
Frontend
-
15
Vite po vzoru Laravelu
HMR jde přes Go, takže i vývoj běží s produkční CSP.
-
16
Vue 3 a Tailwind 4
SPA s vue-routerem i stránky z Go sdílejí jeden styl.
-
17
Typy a guardy z Go
tsgen píše typy i guardy, změnu API odhalí kompilace.
-
18
Routy podle přihlášení
Každá routa říká, kdo na ni smí, a záložky sdílejí přihlášení.
19–21
Šablony v Go
-
19
SSR přes html/template
Homepage, stránku 404 i vstup do aplikace vykreslí server v každém jazyce.
-
20
Hlídané šablony
Kontroly odhalí v šabloně chybějící soubor, nepřeložený text i neznámý klíč.
-
21
Mailové šablony
Maily vzniknou z Go šablon a uživateli přijdou v jeho jazyce.
22–25
Komponenty
-
22
Sdílené prvky
Ikony, dropdowny a tooltipy vypadají ve Vue i v Go stejně.
-
23
Datagrid
Filtry i stránka zůstanou v adrese a výběr umí hromadné akce.
-
24
Formuláře
Pole pro text i čísla ukážou chybu z API přímo pod sebou.
-
25
Toasty a potvrzení
Toast přežije navigaci a před nevratnou akcí se zeptá modal.
26–29
Jazyky a SEO
-
26
Jazyky v adrese
Jazyk má vlastní adresu s hreflang a účet si ho pamatuje.
-
27
Kontrola překladů
tools/i18n hlídá chybějící klíče, nepoužité texty i plurály.
-
28
ICU v Go i Vue
Plurály a čísla vypadají v Go i v prohlížeči stejně.
-
29
Titulky a sdílení
Bez titulku, popisu nebo obrázku ke sdílení neprojdou kontroly.
30–34
Bezpečnost
-
30
Přihlášení
Hesla hashuje argon2id, limit pokusů platí napříč instancemi.
-
31
Přehled zařízení
Uživatel vidí svá zařízení s poslední IP a odhlásí, co nezná.
-
32
CSP s nonce
Nonce a Trusted Types zastaví cizí skript bez unsafe-inline.
-
33
CSRF bez tokenů
Požadavek z cizí stránky odmítne http.CrossOriginProtection.
-
34
Hlavičky na A+
HSTS, COOP, CORP i Permissions-Policy pošle server sám.
35–40
Observabilita
-
35
GlitchTip pro Go i Vue
Spojí chybu z prohlížeče s backendem, release je SHA commitu.
-
36
Jedno trace ID
Nese ho log, span, GlitchTip i X-Trace-Id, i s vypnutou telemetrií.
-
37
Metriky přes OTLP
Požadavky, dotazy, pool i runtime Go odcházejí spolu s trace.
-
38
Logy v JSON do Loki
trace_id i user_id, nikdy e-mail, jdou na stdout a odtud do Loki.
-
39
Sedm boardů v Grafaně
Od dostupnosti a SLO po pomalé dotazy a jejich trace.
-
40
Byznysové události
Jedno volání zapíše log, metriku i událost spanu, bez osobních údajů.
41–44
Měření a souhlas
-
41
Cookie lišta
Odmítnutí je stejně snadné jako souhlas a volbu lze kdykoli změnit.
-
42
Měření a konverze
GA4, Ads i Meta měří a počítají konverze až po souhlasu.
-
43
E-mail jen jako hash
E-mail dostanou jen Ads a Meta, a to jako hash SHA-256.
-
44
Události z Go
Události definuje Go a typecheck nepustí žádnou bez mapování.