Учебный проект

GophKeeper

Командный проект для практики клиент-серверного хранения, работы с файлами и синхронизации на Go.

Статус
Учебная область завершена
Роль
Go-разработчик в команде
Стек
Go, gRPC, PostgreSQL, MinIO
Клиент
CLI с локальной SQLite
Архитектура учебного проекта GophKeeper с сервером, CLI и хранилищами

Учебная цель

Разобраться с синхронизацией, повторами и конфликтами

На сервере работают API, PostgreSQL и MinIO, а CLI хранит локальное состояние в SQLite. Поэтому повторные запросы, ревизии и конфликты пришлось решать в коде, а не оставлять на потом.

Транспорт

gRPC поверх TLS с JWT между Go CLI и сервером.

Разделение хранения

PostgreSQL хранит записи, MinIO — бинарные объекты.

Локальное состояние

SQLite хранит локальную копию для синхронизации.

Конфликты и повторы

Журнал ревизий и идентификаторы операций делают повторные запросы предсказуемыми.

Архитектура

Локальное состояние синхронизируется через единый API

Go CLI с локальной SQLite синхронизируется через TLS gRPC-сервер с PostgreSQL и MinIO
Метаданные и файлы разделены, а один сервис отвечает за аутентификацию и правила синхронизации.

Результат

Сервер, CLI и синхронизация реализованы

В публичном репозитории есть загрузка и скачивание файлов, синхронизация по ревизиям, обработка конфликтов и интеграционные тесты. Это завершённый учебный проект, а не production-менеджер паролей.

Основная инженерная работа — повторные операции, ревизии и конфликты между локальным состоянием и сервером.

Следующий проект

CRM для 3D-печати

Активный продукт, построенный вокруг реального пути заявки в производство.

Читать кейс →