feat: Archivum skeleton — Go/GraphQL backend + Vue 3 PWA frontend

Full project scaffold: multi-stage Dockerfile (ARM64/AMD64), AsciiDoc↔TipTap
bridge, Setup Wizard, CodeMirror source editor, Git-backed storage layer,
LDAP+JWT auth skeleton, Tailwind mobile-first layout, and VS Code build/push
tasks targeting registry at 192.168.0.19:5000.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-10 13:07:01 +02:00
parent 3db6fec664
commit e6b64e3344
35 changed files with 1882 additions and 74 deletions

24
frontend/src/lib/gql.ts Normal file
View File

@@ -0,0 +1,24 @@
// Minimal GraphQL client — swap for graphql-request if preferred.
const API_URL = import.meta.env.VITE_API_URL ?? '/graphql'
export async function gql<T = unknown>(
query: string,
variables?: Record<string, unknown>,
): Promise<T> {
const token = localStorage.getItem('token')
const res = await fetch(API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
},
body: JSON.stringify({ query, variables }),
})
const json = await res.json()
if (json.errors?.length) {
throw new Error(json.errors[0].message)
}
return json.data as T
}