Learning project

GophKeeper

A team project for practising authenticated client-server storage, file handling and synchronization in Go.

Status
Completed learning scope
Role
Go developer in a team
Stack
Go, gRPC, PostgreSQL, MinIO
Client
CLI with local SQLite
GophKeeper learning-project architecture with server, CLI and storage layers

Learning goal

Practice synchronization, retries and conflict handling

The project combines a network API, PostgreSQL and MinIO on the server, and a local SQLite database in the CLI. That makes duplicate requests, revisions and conflicts part of the implementation rather than an afterthought.

Transport

gRPC over TLS with JWT authentication between the Go CLI and server.

Split storage

PostgreSQL stores structured records; MinIO stores binary objects.

Local state

SQLite keeps a local copy for synchronization.

Conflicts and retries

Revision logs and idempotent operation IDs keep repeated requests predictable.

Architecture

Local state synchronized through one authenticated API

Go CLI with local SQLite synchronizes through a TLS gRPC server to PostgreSQL and MinIO
Metadata and blobs have different stores, while one service owns authentication and synchronization rules.

Result

Server, CLI and synchronization are implemented

The public repository includes upload and download flows, revision-based synchronization, conflict handling and integration tests. It is a completed learning project, not a production password manager.

The main engineering work was in retries, revisions and conflicts between local and server state.

Next project

3D Printing CRM

An active product built around a real request-to-production workflow.

Read case study →