Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cr00z/gospendingbot
Телеграмм-бот для контроля расходов: clean arch, memory/postgres storage, тесты, observability(graylog, prometheus+grafana, jaeger), kafka, grpc
https://github.com/cr00z/gospendingbot
golang graylog grpc jaeger kafka postgres prometheus
Last synced: about 1 month ago
JSON representation
Телеграмм-бот для контроля расходов: clean arch, memory/postgres storage, тесты, observability(graylog, prometheus+grafana, jaeger), kafka, grpc
- Host: GitHub
- URL: https://github.com/cr00z/gospendingbot
- Owner: cr00z
- Created: 2022-10-12T03:04:41.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-06T07:16:45.000Z (about 2 years ago)
- Last Synced: 2023-09-02T11:17:19.790Z (over 1 year ago)
- Topics: golang, graylog, grpc, jaeger, kafka, postgres, prometheus
- Language: Go
- Homepage:
- Size: 68.2 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# goSpendingBot
> В процессе разработки
Телеграмм-бот для контроля расходов
Сквозной проект на курсе "Продвинутая разработка микросервисов на Go" от Ozon (Route256).
## О проекте
- бот с использованием принципов SOLID (слабая связность, интерфейсы) и telegram-bot-api
- парсинг валют с cbr.ru, обработка xml
- memory, orm (gorm) и postgres native хранилища для данных
- миграции (goose)
- своя реализация LRU cache
- тесты (gomock, sqlmock)
- observability: логи graylog + zap, метрики prometheus/grafana + promauto/promhttp, трейсы jaeger + opentracing
- очереди на kafka (sarama)
- сервис отчетов через grpc (google.golang.org/grpc)
## Основные команды
**Expenses**
- /addexp [dd/mm/yy] - add new expense
**Edit Categories**
- /newcat - create a new expense category
- /listcat - get a list of your expense categories**Reports**
- /repw - get a weekly report by category
- /repm - get a monthly report by category
- /repa - get the annual report by category**Currencies**
- /curall - get currency list
- /curget - get active currency
- /curset - set active currency**Limits**
- /limitget - get month expense limit
- /limitset [amount] - set month expense limit. If the value is not set, then there will be no limit## Домашки
* [Пояснение к третьему заданию](homeworks/README3.md)
* [Пояснение к четвертому заданию](homeworks/README4.md)
* [Пояснения к пятому заданию](homeworks/README5.md)
* [Пояснения к шестому заданию](homeworks/README6.md)
* [Пояснения к седьмому заданию](homeworks/README7.md)## Заметки
```
docker run --name=gospend-db -e POSTGRES_PASSWORD='qwerty' -p 5432:5432 -d --rm postgres
goose -dir migrations postgres "host=localhost port=5432 user=postgres password=qwerty" create init_db sql
goose -dir migrations postgres "host=localhost port=5432 user=postgres password=qwerty sslmode=disable" up
```