Skip to content

VulgarnyKarlson/pet_gonote_note_service

Repository files navigation

Note Service (Golang)

Project "GoNote" - Note management system.

Description:

Project Workflow:

  • Each user request is authenticated by the Auth service (JWT) with a circuit breaker and storage backup token.
  • CRUD operations for notes:
    • Creating notes.
    • Viewing notes.
    • Searching notes based on various criteria, using advanced indexes for fast data retrieval.
    • Modifying and editing notes.
    • Deleting notes.
  • Every user action with notes (creation, viewing, editing, deleting) sends a message to RabbitMQ for further statistics aggregation.

Code style & hardskill techniques:

  • Hexagonal architecture
  • Dependency Injection ( uber/fx )
  • Transactional outbox (Stats Sender is releasing stats messages from outbox table)
  • Stream processing ( create_note stream read, check and write to db by batch insert )
  • Circuit breaker ( on auth service )
  • Unit tests ( testify/assert/mockgen ) ( in progress integration and e2e tests )
  • DDD
  • CQRS
  • Pre-commit hooks + golangci-lint
  • DB optimization ( indexes, batch insert low memory stream, search by text )

Installation

make bin-deps
make gen
make up-build
make up-services
make migrate-up
make up

License

This project is licensed under the terms of the CC BY-NC-SA license.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages