Compare commits

...

11 Commits

Author SHA1 Message Date
vchikalkin
e815ca04f6 docker-compose: add app network to redis 2025-08-26 23:24:00 +03:00
vchikalkin
73b943fefc bot: fix production run (logger problem) 2025-08-26 23:03:30 +03:00
vchikalkin
e182db1740 docker compose: format 2025-08-26 22:18:31 +03:00
vchikalkin
38392ea3ad Revert "refactor(bot): remove Redis integration from bot configuration"
This reverts commit 4fbbccb0a2967af0c92ff19fe337467347d9a91a.
2025-08-26 22:17:54 +03:00
vchikalkin
4fbbccb0a2 refactor(bot): remove Redis integration from bot configuration
- Eliminated Redis instance and related storage client from the bot's configuration, streamlining the setup and reducing dependencies.
- Updated bot middleware to enhance performance and maintainability.
2025-08-26 22:12:06 +03:00
vchikalkin
0f2b1f5353 Reapply "packages(apps/web): upgrade next@15.5.0"
This reverts commit bcb9be88dfd1b57d6ce6f47bedca4aa3e8db0eae.
2025-08-26 21:51:28 +03:00
vchikalkin
aea9de2f1c Update deploy.yml to add REDIS_PASSWORD environment variable for improved configuration management 2025-08-26 21:20:22 +03:00
vchikalkin
a3c4eb1071 .github\workflows\deploy.yml: remove REDIS_PASSWORD env variable 2025-08-26 21:16:41 +03:00
vchikalkin
ee2ed4fdaf Update Dockerfiles to install specific version of turbo (2.3.2) for consistent dependency management 2025-08-26 20:59:01 +03:00
vchikalkin
49b84382e4 docker-compose: add volumes 2025-08-26 20:57:06 +03:00
vchikalkin
bcb9be88df Revert "packages(apps/web): upgrade next@15.5.0"
This reverts commit 22e4f72ee6e36834672e44a25acf8a5797dcca8c.
2025-08-26 20:06:07 +03:00
11 changed files with 38 additions and 28 deletions

View File

@ -25,7 +25,7 @@ jobs:
echo "EMAIL_GRAPHQL=fake@example.com" >> .env
echo "NEXTAUTH_SECRET=fakesecret" >> .env
echo "BOT_URL=http://localhost:3000" >> .env
echo "REDIS_PASSWORD=fake" > .env
echo "REDIS_PASSWORD=fake" >> .env
- name: Set image tags
id: vars

View File

@ -11,7 +11,7 @@ ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN apk add --no-cache libc6-compat && \
corepack enable && \
pnpm install turbo dotenv-cli --global
pnpm install turbo@2.3.2 dotenv-cli --global
FROM base AS pruner
ARG PROJECT

View File

@ -1,4 +1,3 @@
import { type logger } from '@/utils/logger';
import { type AutoChatActionFlavor } from '@grammyjs/auto-chat-action';
import { type CommandsFlavor } from '@grammyjs/commands';
import { type ConversationFlavor } from '@grammyjs/conversations';
@ -8,13 +7,7 @@ import { type Context as DefaultContext, type SessionFlavor } from 'grammy';
export type Context = ConversationFlavor<
HydrateFlavor<
AutoChatActionFlavor &
CommandsFlavor &
DefaultContext &
I18nFlavor &
SessionFlavor<SessionData> & {
logger: typeof logger;
}
AutoChatActionFlavor & CommandsFlavor & DefaultContext & I18nFlavor & SessionFlavor<SessionData>
>
>;

View File

@ -1,6 +1,7 @@
import { type Context } from '../context';
import { getUpdateInfo } from '../helpers/logging';
import { KEYBOARD_REMOVE } from '@/config/keyboards';
import { logger } from '@/utils/logger';
import { ERRORS } from '@repo/graphql/constants/errors';
import { type ErrorHandler } from 'grammy';
@ -11,7 +12,7 @@ export const errorHandler: ErrorHandler<Context> = async (error) => {
await ctx.reply(ctx.t(text), { ...KEYBOARD_REMOVE, parse_mode: 'HTML' });
ctx.logger.error({
logger.error({
err: error.error,
update: getUpdateInfo(ctx),
});

View File

@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { type Context } from '../context';
import { logger } from '@/utils/logger';
import { type Update } from '@grammyjs/types';
import { type Middleware } from 'grammy';
@ -11,7 +12,7 @@ export function getUpdateInfo(context: Context): Omit<Update, 'update_id'> {
export function logHandle(id: string): Middleware<Context> {
return (context, next) => {
context.logger.info({
logger.info({
msg: `Handle "${id}"`,
...(id.startsWith('unhandled') ? { update: getUpdateInfo(context) } : {}),
});

View File

@ -1,12 +1,13 @@
import { type Context } from '@/bot/context';
import { getUpdateInfo } from '@/bot/helpers/logging';
import { logger } from '@/utils/logger';
import { type Middleware } from 'grammy';
import { performance } from 'node:perf_hooks';
export function updateLogger(): Middleware<Context> {
return async (ctx, next) => {
ctx.api.config.use((previous, method, payload, signal) => {
ctx.logger.debug({
logger.debug({
method,
msg: 'Bot API call',
payload,
@ -15,7 +16,7 @@ export function updateLogger(): Middleware<Context> {
return previous(method, payload, signal);
});
ctx.logger.debug({
logger.debug({
msg: 'Update received',
update: getUpdateInfo(ctx),
});
@ -25,7 +26,7 @@ export function updateLogger(): Middleware<Context> {
return next();
} finally {
const endTime = performance.now();
ctx.logger.debug({
logger.debug({
elapsed: endTime - startTime,
msg: 'Update processed',
});

View File

@ -1,7 +1,7 @@
/* eslint-disable turbo/no-undeclared-env-vars */
import pino from 'pino';
export const logger = pino({
const logger = pino({
transport: {
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
options: {
@ -11,3 +11,9 @@ export const logger = pino({
target: 'pino-pretty',
},
});
logger.info = logger.info.bind(logger);
logger.debug = logger.debug.bind(logger);
logger.error = logger.error.bind(logger);
export { logger };

View File

@ -11,7 +11,7 @@ ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN apk add --no-cache libc6-compat openssl && \
corepack enable && \
pnpm install turbo dotenv-cli --global
pnpm install turbo@2.3.2 dotenv-cli --global
FROM base AS pruner
ARG PROJECT

View File

@ -34,3 +34,6 @@ services:
timeout: 10s
retries: 3
start_period: 30s
volumes:
redis-data:

View File

@ -5,7 +5,7 @@ services:
- .env
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
test: ['CMD', 'curl', '-f', 'http://localhost:3000/']
interval: 10s
timeout: 3s
retries: 5
@ -45,6 +45,11 @@ services:
timeout: 10s
retries: 3
start_period: 30s
networks:
- app
volumes:
redis-data:
networks:
app:

18
pnpm-lock.yaml generated
View File

@ -23,7 +23,7 @@ catalogs:
version: 2.2.2
autoprefixer:
specifier: ^10.4.20
version: 10.4.21
version: 10.4.20
dayjs:
specifier: ^1.11.3
version: 1.11.13
@ -35,7 +35,7 @@ catalogs:
version: 9.21.0
graphql:
specifier: ^16.9.0
version: 16.11.0
version: 16.9.0
husky:
specifier: ^9.1.7
version: 9.1.7
@ -44,13 +44,13 @@ catalogs:
version: 9.0.2
lint-staged:
specifier: ^15.2.10
version: 15.5.2
version: 15.2.10
lucide-react:
specifier: ^0.462.0
version: 0.462.0
postcss:
specifier: ^8.4.49
version: 8.5.6
version: 8.4.49
postcss-load-config:
specifier: ^6.0.1
version: 6.0.1
@ -59,7 +59,7 @@ catalogs:
version: 3.6.2
radashi:
specifier: ^12.5.1
version: 12.6.0
version: 12.5.1
react:
specifier: ^19.1.1
version: 19.1.1
@ -68,19 +68,19 @@ catalogs:
version: 19.1.1
tailwindcss:
specifier: ^3.4.15
version: 3.4.17
version: 3.4.15
typescript:
specifier: ^5.7
version: 5.8.3
version: 5.7.2
vite-tsconfig-paths:
specifier: ^5.1.4
version: 5.1.4
vitest:
specifier: ^2.1.8
version: 2.1.9
version: 2.1.8
zod:
specifier: ^3.24.1
version: 3.25.71
version: 3.24.1
importers: