Skip to content

Latest commit

 

History

History
40 lines (35 loc) · 1.36 KB

README.md

File metadata and controls

40 lines (35 loc) · 1.36 KB

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.