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:
131
README.md
131
README.md
@@ -1,3 +1,132 @@
|
||||
# Archivum
|
||||
|
||||
Wiki with Git and direkt file as the truth
|
||||
A high-performance, production-ready wiki system optimized for Desktop and Mobile, designed to run on a Raspberry Pi 5 (ARM64) or any AMD64 host.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
| Layer | Technology |
|
||||
|---|---|
|
||||
| Backend | Go + GraphQL (gqlgen) + SQLite (modernc.org/sqlite, CGO-free) |
|
||||
| Frontend | Vue 3 (Composition API) + Vite + Tailwind CSS |
|
||||
| PWA | vite-plugin-pwa (offline caching, installable) |
|
||||
| Version Control | Git (backend executes git on the storage path) |
|
||||
| Editor | TipTap (visual) + CodeMirror (raw AsciiDoc) |
|
||||
| Auth | LDAP + JWT with in-memory session tracking |
|
||||
|
||||
## Features
|
||||
|
||||
- **AsciiDoc-native** — documents stored as plain `.adoc` files, Git is the source of truth.
|
||||
- **Visual ↔ Source editor** — TipTap for rich editing, CodeMirror for raw AsciiDoc, with a round-trip TypeScript bridge.
|
||||
- **Git history & diff** — every save is a commit; full history and unified diffs via GraphQL.
|
||||
- **Setup Wizard** — guided first-run configuration for LDAP, admin user, and storage paths.
|
||||
- **PWA** — installable on mobile, fast loading, offline viewing of cached documents.
|
||||
- **Multi-arch Docker** — single Dockerfile targeting ARM64 and AMD64.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
Archivum/
|
||||
├── backend/ # Go application
|
||||
│ ├── cmd/server/ # Entry point
|
||||
│ └── internal/
|
||||
│ ├── auth/ # LDAP + JWT
|
||||
│ ├── config/ # config.json management
|
||||
│ ├── git/ # Git operations
|
||||
│ ├── graph/ # GraphQL schema + resolvers
|
||||
│ └── storage/ # Document read/write
|
||||
├── frontend/ # Vue 3 application
|
||||
│ └── src/
|
||||
│ ├── bridge/ # AsciiDoc ↔ TipTap TypeScript bridge
|
||||
│ ├── components/
|
||||
│ │ ├── editor/ # VisualEditor + SourceEditor
|
||||
│ │ ├── layout/ # AppLayout + Sidebar
|
||||
│ │ └── wizard/ # Setup Wizard
|
||||
│ ├── router/
|
||||
│ ├── stores/
|
||||
│ └── views/
|
||||
├── docker/ # Dockerfile + docker-compose
|
||||
└── .vscode/ # VS Code build & deploy tasks
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Docker (with access to your registry)
|
||||
- Go 1.22+ (for local backend development)
|
||||
- Node.js 20+ (for local frontend development)
|
||||
|
||||
### Docker (recommended)
|
||||
|
||||
```bash
|
||||
docker compose -f docker/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
Open `http://localhost:8080` and follow the Setup Wizard.
|
||||
|
||||
### Local Development
|
||||
|
||||
```bash
|
||||
# Backend
|
||||
cd backend
|
||||
go run ./cmd/server
|
||||
|
||||
# Frontend (separate terminal)
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Backend — `config.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"storage_path": "/data/wiki",
|
||||
"db_path": "/data/archivum.db",
|
||||
"ldap": {
|
||||
"host": "ldap.example.com",
|
||||
"port": 389,
|
||||
"base_dn": "dc=example,dc=com",
|
||||
"bind_dn": "cn=reader,dc=example,dc=com",
|
||||
"bind_password": "secret"
|
||||
},
|
||||
"jwt_secret": "change-me",
|
||||
"listen_addr": ":4000"
|
||||
}
|
||||
```
|
||||
|
||||
### Frontend — `settings.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"api_url": "http://localhost:4000/graphql",
|
||||
"app_name": "Archivum",
|
||||
"default_theme": "light"
|
||||
}
|
||||
```
|
||||
|
||||
### Docker environment variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
|---|---|---|
|
||||
| `DOCKER_PATH` | `/config` | Base path for config and data volumes |
|
||||
| `PUID` | `1000` | File system user ID |
|
||||
| `PGID` | `1000` | File system group ID |
|
||||
|
||||
## VS Code Tasks
|
||||
|
||||
Open the Command Palette (`Ctrl+Shift+P`) → **Tasks: Run Task**:
|
||||
|
||||
| Task | Platform | Description |
|
||||
|---|---|---|
|
||||
| `Docker: Build` | Windows / Linux | Build multi-arch image |
|
||||
| `Docker: Push` | Windows / Linux | Push to `192.168.0.19:5000` |
|
||||
| `Docker: Build & Push` | Windows / Linux | Build then push |
|
||||
| `Backend: Run` | Both | `go run ./cmd/server` |
|
||||
| `Frontend: Dev` | Both | `npm run dev` |
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user