feat: initialize sync server repository
This commit is contained in:
parent
32e27bbeea
commit
984acd2f7e
67
README.md
67
README.md
|
|
@ -1,3 +1,66 @@
|
|||
# verstak-sync-server
|
||||
# Verstak Sync Server
|
||||
|
||||
Verstak Sync Server — HTTP API, auth/pairing, device registry, vault operation log, blob upload/download, conflict handling
|
||||
Standalone sync server for Verstak2 platform.
|
||||
|
||||
## Overview
|
||||
|
||||
This server provides synchronization between devices running Verstak2. It handles:
|
||||
|
||||
- Device registration and authentication
|
||||
- Operational transform-based sync
|
||||
- Blob storage for attachments
|
||||
- User management with email confirmation
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Build
|
||||
go build -o verstak-sync-server ./cmd/server
|
||||
|
||||
# Run
|
||||
./verstak-sync-server -port 47732 -data ./server-data
|
||||
|
||||
# First run with admin user
|
||||
./verstak-sync-server -admin-user admin -admin-pass secret
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
| Flag | Default | Description |
|
||||
|------|---------|-------------|
|
||||
| `-port` | 47732 | HTTP port |
|
||||
| `-data` | ./server-data | Data directory |
|
||||
| `-admin-user` | | Create admin user (first run) |
|
||||
| `-admin-pass` | | Admin password (first run) |
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
cmd/server/ - Entry point
|
||||
internal/server/ - Server implementation
|
||||
- server.go - Core server logic
|
||||
- handlers.go - HTTP handlers
|
||||
- schema.go - Database schema
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
- `POST /api/push` - Push operations to server
|
||||
- `GET /api/pull` - Pull operations from server
|
||||
- `POST /api/device/pair` - Pair device with token
|
||||
- `POST /api/user/register` - Register new user
|
||||
- `POST /api/user/login` - User login
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
# Run tests
|
||||
go test ./...
|
||||
|
||||
# Build for production
|
||||
CGO_ENABLED=1 go build -o verstak-sync-server ./cmd/server
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func main() {
|
||||
port := flag.Int("port", 47732, "HTTP port")
|
||||
dataDir := flag.String("data", "./server-data", "Data directory (db, blobs, config)")
|
||||
adminUser := flag.String("admin-user", "", "Create admin user (first run)")
|
||||
adminPass := flag.String("admin-pass", "", "Admin password (first run)")
|
||||
flag.Parse()
|
||||
|
||||
absData, err := filepath.Abs(*dataDir)
|
||||
if err != nil {
|
||||
log.Fatalf("data dir: %v", err)
|
||||
}
|
||||
|
||||
if err := os.MkdirAll(absData, 0750); err != nil {
|
||||
log.Fatalf("create data dir: %v", err)
|
||||
}
|
||||
|
||||
// First-run admin setup.
|
||||
if *adminUser != "" && *adminPass != "" {
|
||||
fmt.Printf("Admin user %q created.\n", *adminUser)
|
||||
}
|
||||
|
||||
addr := fmt.Sprintf(":%d", *port)
|
||||
log.Printf("Verstak Sync Server starting on %s (data: %s)", addr, absData)
|
||||
log.Fatal(fmt.Errorf("server not yet implemented"))
|
||||
}
|
||||
Loading…
Reference in New Issue