/opt/canhelp
NameSizeModeActions
.git/-0755rm
.github/-0755rm
apps/-0755rm
backups/-0755rm
logs/-0755rm
node_modules/-0755rm
packages/-0755rm
scripts/-0755rm
uploads/-0755rm
.env37350644editdlrm
.env.example19780644editdlrm
.gitignore10710644editdlrm
CLAUDE.md34820644editdlrm
deploy.log5680644editdlrm
DEPLOY.md38710644editdlrm
docker-compose.yml8350644editdlrm
ecosystem.config.js9830644editdlrm
find_missing_keys.js9900644editdlrm
package-lock.json2015120644editdlrm
package.json13950644editdlrm
ru_keys.txt287680644editdlrm
STACK.md37450644editdlrm
turbo.json4620644editdlrm
uk_keys.txt287680644editdlrm
Edit: /opt/canhelp/STACK.md (3745B)
# CanHelp — Tech Stack **Проект:** Marketplace для услуг в Греции (клон kabanchik.ua) --- ## Монорепо ``` CanHelp/ ├── apps/ │ ├── api/ # Hono + Drizzle + Better Auth (Node.js) │ ├── web/ # Next.js 15 (App Router) │ └── mobile/ # Flutter (iOS, Android) ├── packages/ │ ├── db/ # Drizzle ORM schema + migrations (shared) │ └── shared/ # TypeScript types (shared) ├── turbo.json ├── docker-compose.yml └── .env ``` Monorepo manager: **npm workspaces + Turborepo** --- ## Backend (apps/api) | Компонент | Технология | |--------------|-------------------------------| | Runtime | Node.js | | Framework | **Hono** 4.x | | ORM | **Drizzle ORM** 0.38 | | Database | PostgreSQL 16 | | Auth | **Better Auth** 1.2 (+ Bearer plugin) | | Cache | Redis 7 (ioredis) | | WebSockets | Socket.IO 4.x | | Validation | Zod | | Dev runner | tsx (watch mode) | API endpoint base: `http://localhost:4000/api` Auth endpoints: `/api/auth/**` (Better Auth) ### Модули - `auth` — Better Auth (email/password, cookie sessions, Bearer token for mobile) - `users` — профиль, обновление - `tasks` — CRUD, поиск, статусы - `offers` — ставки специалистов - `chat` — комнаты + сообщения (REST + WebSocket) - `reviews` — отзывы и рейтинги - `notifications` — 7 типов уведомлений - `favorites` — закладки - `categories` — 9 категорий (кэш Redis) - `uploads` — загрузка изображений (5MB, JPEG/PNG/GIF/WebP) - `reports` — жалобы + модерация - `admin` — статистика, управление - `i18n` — переводы (el, en, ru) - `health` — health check --- ## Web (apps/web) | Компонент | Технология | |--------------|-------------------------------| | Framework | **Next.js 15** (App Router) | | React | React 19 | | Styling | **Tailwind CSS 3** | | Auth client | `better-auth/react` | | API client | fetch (кастомный, src/lib/api.ts) | | Real-time | socket.io-client | | Types | @canhelp/shared | Порт: 3000. SSR для страниц задач (SEO). --- ## Mobile (apps/mobile) | Компонент | Технология | |--------------|-------------------------------| | Framework | **Flutter** (Dart 3.10+) | | Target | iOS, Android | | Auth | Better Auth Bearer token | | State | Provider | | Routing | go_router | --- ## Shared packages - **@canhelp/db** — Drizzle schema (все таблицы), db client - **@canhelp/shared** — TypeScript типы (User, Task, Offer и т.д.) --- ## Infrastructure - **Docker Compose**: PostgreSQL 16 + Redis 7 - **Turborepo**: инкрементальные билды - Env: `.env` в корне (один для всех) --- ## Env variables ```env NODE_ENV=development API_PORT=4000 WEB_URL=http://localhost:3000 DATABASE_URL=postgresql://canhelp:canhelp@localhost:5432/canhelp REDIS_URL=redis://localhost:6379 BETTER_AUTH_SECRET=... BETTER_AUTH_URL=http://localhost:4000 DEFAULT_LOCALE=el DEFAULT_CURRENCY=EUR UPLOAD_DIR=./uploads MAX_FILE_SIZE_MB=5 ```