From 7cdb1ea57780772f70ff7a12be4ddc07cb9c78bc Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 17 Aug 2026 11:30:05 +0100 Subject: [PATCH 1/3] ci: add build and test pipeline --- .github/workflows/ci.yml | 22 ++++++++++++++++++++++ .gitignore | 15 ++++++++++++--- readme.md => README.md | 0 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci.yml rename readme.md => README.md (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..54cf34c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,22 @@ +name: CI + +on: + push: + branches: [main, v2] + pull_request: + +jobs: + ci: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: "1.24" + + - run: go build ./... + + - run: go test -race ./... + + - uses: golangci/golangci-lint-action@v8 diff --git a/.gitignore b/.gitignore index 3e8161a..2583b5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,13 @@ -*.db -/data -/uploads +/bin/ +/dist/ +/potok +/potokd +coverage.out +*.test .env +.env.local +/data/ +*.db +.vscode/ +.idea/ +.DS_Store diff --git a/readme.md b/README.md similarity index 100% rename from readme.md rename to README.md From a9277a5c91b9c112bf03733bcaf18895e9528ea1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 17 Aug 2026 11:31:54 +0100 Subject: [PATCH 2/3] chore: fix --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54cf34c..5a255f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,6 @@ jobs: - run: go build ./... - - run: go test -race ./... + - run: go test ./... - uses: golangci/golangci-lint-action@v8 From 27d5dc04d77c8cd6bc293ebf04192fe47ffcf642 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 17 Aug 2026 11:40:37 +0100 Subject: [PATCH 3/3] chore: add package skeleton and CI pipeline Lay out the client/server package split ahead of the rewrite and wire up build, test and lint on every push. --- cmd/potok/main.go | 8 ++++++++ cmd/potokd/main.go | 8 ++++++++ internal/client/cli/doc.go | 2 ++ internal/client/config/doc.go | 2 ++ internal/client/crypto/doc.go | 2 ++ internal/client/secrets/doc.go | 2 ++ internal/client/syncer/doc.go | 2 ++ internal/client/transport/doc.go | 2 ++ internal/client/vault/doc.go | 2 ++ internal/protocol/doc.go | 2 ++ internal/server/auth/doc.go | 2 ++ internal/server/blobstore/doc.go | 2 ++ internal/server/dashboard/doc.go | 2 ++ internal/server/doc.go | 2 ++ internal/server/http/doc.go | 2 ++ internal/server/store/doc.go | 2 ++ internal/version/doc.go | 2 ++ 17 files changed, 46 insertions(+) create mode 100644 cmd/potok/main.go create mode 100644 cmd/potokd/main.go create mode 100644 internal/client/cli/doc.go create mode 100644 internal/client/config/doc.go create mode 100644 internal/client/crypto/doc.go create mode 100644 internal/client/secrets/doc.go create mode 100644 internal/client/syncer/doc.go create mode 100644 internal/client/transport/doc.go create mode 100644 internal/client/vault/doc.go create mode 100644 internal/protocol/doc.go create mode 100644 internal/server/auth/doc.go create mode 100644 internal/server/blobstore/doc.go create mode 100644 internal/server/dashboard/doc.go create mode 100644 internal/server/doc.go create mode 100644 internal/server/http/doc.go create mode 100644 internal/server/store/doc.go create mode 100644 internal/version/doc.go diff --git a/cmd/potok/main.go b/cmd/potok/main.go new file mode 100644 index 0000000..9183718 --- /dev/null +++ b/cmd/potok/main.go @@ -0,0 +1,8 @@ +// Command potok is the Potok command line client. +package main + +import "fmt" + +func main() { + fmt.Println("potok: not implemented yet") +} diff --git a/cmd/potokd/main.go b/cmd/potokd/main.go new file mode 100644 index 0000000..db67fce --- /dev/null +++ b/cmd/potokd/main.go @@ -0,0 +1,8 @@ +// Command potokd is the Potok server daemon. +package main + +import "fmt" + +func main() { + fmt.Println("potokd: not implemented yet") +} diff --git a/internal/client/cli/doc.go b/internal/client/cli/doc.go new file mode 100644 index 0000000..03a24cc --- /dev/null +++ b/internal/client/cli/doc.go @@ -0,0 +1,2 @@ +// Package cli implements the potok command tree. +package cli diff --git a/internal/client/config/doc.go b/internal/client/config/doc.go new file mode 100644 index 0000000..4df3224 --- /dev/null +++ b/internal/client/config/doc.go @@ -0,0 +1,2 @@ +// Package config reads and writes the client configuration file. +package config diff --git a/internal/client/crypto/doc.go b/internal/client/crypto/doc.go new file mode 100644 index 0000000..5c234f6 --- /dev/null +++ b/internal/client/crypto/doc.go @@ -0,0 +1,2 @@ +// Package crypto implements key derivation and vault encryption. +package crypto diff --git a/internal/client/secrets/doc.go b/internal/client/secrets/doc.go new file mode 100644 index 0000000..faa4b14 --- /dev/null +++ b/internal/client/secrets/doc.go @@ -0,0 +1,2 @@ +// Package secrets stores passphrases and API keys in the OS keyring. +package secrets diff --git a/internal/client/syncer/doc.go b/internal/client/syncer/doc.go new file mode 100644 index 0000000..9f54e6c --- /dev/null +++ b/internal/client/syncer/doc.go @@ -0,0 +1,2 @@ +// Package syncer diffs local and remote state and applies the result. +package syncer diff --git a/internal/client/transport/doc.go b/internal/client/transport/doc.go new file mode 100644 index 0000000..1593b5d --- /dev/null +++ b/internal/client/transport/doc.go @@ -0,0 +1,2 @@ +// Package transport is the HTTP client for the Potok API. +package transport diff --git a/internal/client/vault/doc.go b/internal/client/vault/doc.go new file mode 100644 index 0000000..3c05c6d --- /dev/null +++ b/internal/client/vault/doc.go @@ -0,0 +1,2 @@ +// Package vault scans vault directories and maintains the local index. +package vault diff --git a/internal/protocol/doc.go b/internal/protocol/doc.go new file mode 100644 index 0000000..696c6f5 --- /dev/null +++ b/internal/protocol/doc.go @@ -0,0 +1,2 @@ +// Package protocol defines the wire types shared by the client and server. +package protocol diff --git a/internal/server/auth/doc.go b/internal/server/auth/doc.go new file mode 100644 index 0000000..6f06da5 --- /dev/null +++ b/internal/server/auth/doc.go @@ -0,0 +1,2 @@ +// Package auth issues and verifies API keys. +package auth diff --git a/internal/server/blobstore/doc.go b/internal/server/blobstore/doc.go new file mode 100644 index 0000000..fbe40dd --- /dev/null +++ b/internal/server/blobstore/doc.go @@ -0,0 +1,2 @@ +// Package blobstore stores opaque encrypted blobs. +package blobstore diff --git a/internal/server/dashboard/doc.go b/internal/server/dashboard/doc.go new file mode 100644 index 0000000..1ee9dd6 --- /dev/null +++ b/internal/server/dashboard/doc.go @@ -0,0 +1,2 @@ +// Package dashboard serves the admin web interface. +package dashboard diff --git a/internal/server/doc.go b/internal/server/doc.go new file mode 100644 index 0000000..54e974d --- /dev/null +++ b/internal/server/doc.go @@ -0,0 +1,2 @@ +// Package server wires the API server and its dependencies together. +package server diff --git a/internal/server/http/doc.go b/internal/server/http/doc.go new file mode 100644 index 0000000..2da735d --- /dev/null +++ b/internal/server/http/doc.go @@ -0,0 +1,2 @@ +// Package httpapi serves the Potok HTTP API. +package httpapi diff --git a/internal/server/store/doc.go b/internal/server/store/doc.go new file mode 100644 index 0000000..1ba742b --- /dev/null +++ b/internal/server/store/doc.go @@ -0,0 +1,2 @@ +// Package store persists vault metadata. +package store diff --git a/internal/version/doc.go b/internal/version/doc.go new file mode 100644 index 0000000..6e70374 --- /dev/null +++ b/internal/version/doc.go @@ -0,0 +1,2 @@ +// Package version exposes build metadata stamped in at link time. +package version