Skip to content

init#1

Open
vshulcz wants to merge 1 commit into
masterfrom
feat/init
Open

init#1
vshulcz wants to merge 1 commit into
masterfrom
feat/init

Conversation

@vshulcz

@vshulcz vshulcz commented Feb 13, 2026

Copy link
Copy Markdown
Owner

No description provided.

@vshulcz vshulcz requested a review from Perederey February 13, 2026 05:10
@vshulcz vshulcz self-assigned this Feb 13, 2026
@vshulcz vshulcz force-pushed the feat/init branch 4 times, most recently from 46c77eb to 43bfd86 Compare February 13, 2026 05:54

@Perederey Perederey left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет! Отличная работа! Архитектура чистая, тесты есть, все работает. Видно, что ты вложился.

Из того, на что стоит обратить внимание

  • Не использованы generics для Repository Pattern, это основная фича из вебинара последнего , они помогут избежать дублирования кода между UserRepo и ItemRepo
  • Нет structured logging с slog, везде используется старый log, а в задании это была важная тема про observability
  • Отсутствует errgroup для параллельных операций, в сервисах типа List/Sync лучше распараллелить обработку с контролем concurrency

Но в целом проект крутой, особенно понравилась реализация клиент-серверной синхронизации и TUI! Продолжай в том же духе!

Comment thread cmd/server/main.go
"gophkeeper/internal/infra/httpapi"
"gophkeeper/internal/infra/persistence"
"gophkeeper/internal/infra/security"
"log"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше используй log/slog для structured logging с контекстными полями (trace_id, user_id и т.д.), это упрощает observability в продакшене

)

// UserRepo is a SQLite-backed repository for users.
type UserRepo struct {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше используй generic репозиторий, чтобы избежать дублирования кода между UserRepo и ItemRepo

"github.com/google/uuid"
)

// Service orchestrates client use cases.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В конструкторе NewService надо бы проверять, что api, store, crypto не nil, и возвращать ошибку. Это принцип Fail Fast из Clean Архитектуры

vault *vault.Service
signer ports.TokenSigner
ttl time.Duration
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надо бы добавить middleware

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants