[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92780":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},92780,"fintech-dashboard","Elias569\u002Ffintech-dashboard","Elias569","fintech dashboard for personal finance management which track income and expenses, leverage AI-powered analytics, manage budgets and financial goals, enjoy a dark theme","https:\u002F\u002Ffintech-dashboard-six.vercel.app\u002F",null,"TypeScript",133,1152,51,0,101,56.19,false,"main",true,[22,23,24,25,5],"ai-dashboard","dashboard","fintech","fintech-ai","2026-07-22 04:02:07","# FinTech Dashboard\n\n**Личный финансовый кабинет с AI-аналитикой и полной адаптивностью.**\n\n![Next.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNext.js-15.5-000?logo=next.js)\n![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?logo=react)\n![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.6-3178C6?logo=typescript)\n![Prisma](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPrisma-6-2D3748?logo=prisma)\n![Turso](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTurso-libSQL-4FC08D?logo=sqlite)\n![Tailwind CSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwind_CSS-3.4-06B6D4?logo=tailwindcss)\n![OpenRouter](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenRouter-AI-FF6B6B)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green)\n![Vercel](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeployed_on-Vercel-000?logo=vercel)\n\n---\n\n> **🌐 Деплой:** [fintech-dashboard-six.vercel.app](https:\u002F\u002Ffintech-dashboard-six.vercel.app\u002F)\n\n## Оглавление\n\n- [Описание проекта](#описание-проекта)\n- [Основные возможности](#основные-возможности)\n- [Архитектура проекта](#архитектура-проекта)\n- [Технологии](#технологии)\n- [Требования к окружению](#требования-к-окружению)\n- [Установка и настройка](#установка-и-настройка)\n- [Переменные окружения](#переменные-окружения)\n- [Запуск AI-ассистента](#запуск-ai-ассистента)\n- [Тестирование](#тестирование)\n- [Деплой](#деплой)\n- [Безопасность](#безопасность)\n- [Roadmap](#roadmap)\n\n---\n\n## Описание проекта\n\n### Проблема\n\nУправление личными финансами — хаос: куча чеков, разрозненные заметки, отсутствие аналитики. Сложно понять, куда уходят деньги и как оптимизировать бюджет.\n\n### Решение\n\nFinTech Dashboard — единое окно для учёта финансов с AI-помощником. Спросите ассистента — он проанализирует ваши траты и даст совет. Всё работает бесплатно, на русском языке, на компьютере и телефоне.\n\n---\n\n## Основные возможности\n\n- **📊 Дашборд** — баланс, доходы\u002Fрасходы, KPI, графики, тренды\n- **💬 AI-ассистент** — floating-чат, анализирует ваши транзакции, даёт советы (OpenRouter)\n- **🖼️ Распознавание чеков** *(планируется)* — AI будет заполнять форму по фото чека\n- **💡 AI-инсайты** — автоматические рекомендации по оптимизации бюджета\n- **📋 Управление транзакциями** — CRUD, фильтры, поиск, сортировка\n- **💰 Бюджеты** — установите лимиты по категориям, контроль перерасхода\n- **🎯 Цели** — отслеживание финансовых целей\n- **📈 Мониторинг** — cash flow, норма сбережения, долговая безопасность\n- **📤 Экспорт** — CSV и PDF\n- **🌙 Тёмная тема** — переключение светлой\u002Fтёмной темы\n- **📱 PWA** — установка на телефон как приложение\n- **🔐 Авторизация** — GitHub OAuth + демо-вход по email\n\n---\n\n## Архитектура проекта\n\n```\n┌────────────────────────────────────────────────────┐\n│              Frontend (Next.js)                    │\n│  ┌──────────┐  ┌──────────┐                        │\n│  │ Dashboard│  │ AI Chat  │                        │\n│  │ (виджеты)│  │(floating)│                        │\n│  └────┬─────┘  └────┬─────┘                        │\n│       │             │                              │\n│  ┌────▼─────────────▼──────────────────────────┐   │\n│  │           API Routes (Next.js)              │   │\n│  │  \u002Fapi\u002Fchat  \u002Fapi\u002Finsights                   │   │\n│  │  \u002Fapi\u002Ftransactions  \u002Fapi\u002Fbudgets  \u002Fapi\u002Fauth │   │\n│  └────────────────────┬────────────────────────┘   │\n└───────────────────────┼────────────────────────────┘\n                        │\n┌───────────────────────▼──────────────────────────────┐\n│              OpenRouter API (облако)                 │\n│  ┌──────────────────────────────────────────────┐    │ \n│  │  Chat\u002FInsights: ling-2.6-1t                  │    │\n│  └──────────────────────────────────────────────┘    │\n└──────────────────────────────────────────────────────┘\n                        │\n┌───────────────────────▼──────────────────────────────┐\n│              Turso (libSQL, облачная SQLite)         │\n│  ┌────────────────────────────────────────────────┐  │\n│  │  Prisma ORM + @prisma\u002Fadapter-libsql           │  │\n│  │  fintech-db-lina-whm (Frankfurt)               │  │\n│  └────────────────────────────────────────────────┘  │\n└──────────────────────────────────────────────────────┘\n```\n\n### Ключевые модули\n\n| Модуль | Путь | Описание |\n|--------|------|----------|\n| **Виджеты** | `widgets\u002F` | Dashboard, AI-чат, графики, таблицы |\n| **Фичи** | `features\u002F` | Транзакции, бюджеты, фильтры, цели, мониторинг |\n| **Сущности** | `entities\u002F` | Модели, API-запросы, типы транзакций |\n| **Shared** | `shared\u002F` | UI-компоненты (shadcn\u002Fui), утилиты |\n| **API Routes** | `app\u002Fapi\u002F` | Эндпоинты чата, транзакций, авторизации |\n\n---\n\n## Технологии\n\n### Frontend\n- **Next.js 15.5** (App Router) — фреймворк\n- **React 19** — UI\n- **TypeScript 5.6** — типизация\n- **Tailwind CSS 3.4** — стилизация\n- **shadcn\u002Fui** (Radix UI) — компоненты\n- **TanStack React Query** — управление состоянием сервера\n- **Zustand** — клиентское состояние\n- **React Hook Form** + **Zod** — формы и валидация\n- **Recharts** — графики\n- **Lucide React** — иконки\n\n### Backend\n- **Next.js API Routes** — серверные эндпоинты\n- **Prisma 6** — ORM\n- **Turso (libSQL)** — облачная SQLite (бесплатно, 9 ГБ)\n- **NextAuth v5** — аутентификация (GitHub OAuth + Credentials)\n\n### AI\n- **OpenRouter API** — облачные AI-модели\n  - `inclusionai\u002Fling-2.6-1t:free` — чат и инсайты\n\n### Тестирование\n- **Vitest** — unit-тесты\n- **Playwright** — E2E-тесты\n- **Testing Library** — тестирование React-компонентов\n\n### Инфраструктура\n- **Docker** — контейнеризация (опционально)\n- **GitHub Actions** — CI\u002FCD\n- **Gitleaks** — сканирование секретов\n\n---\n\n## Требования к окружению\n\n- **Node.js** 18+ (рекомендуется 20+)\n- **npm** 9+ (или yarn\u002Fpnpm)\n- **Git** — для клонирования репозитория\n- **Turso CLI** (опционально) — для управления облачной БД\n\n> База данных — **Turso (libSQL)**, облачная SQLite. Регистрация через GitHub, бесплатно до 9 ГБ. Не требует локального PostgreSQL.\n\n---\n\n## Установка и настройка\n\n### 1. Клонирование\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdavi12399\u002Ffintech-dashboard.git\ncd fintech-dashboard\n```\n\n### 2. Установка зависимостей\n\n```bash\nnpm install\n```\n\n### 3. Переменные окружения\n\nСкопируйте `.env.example` в `.env.local` и заполните:\n\n```bash\ncp .env.example .env.local\n```\n\nПодробнее — в разделе [Переменные окружения](#переменные-окружения).\n\n### 4. Генерация Prisma Client\n\n```bash\nnpx prisma generate\n```\n\n### 5. Настройка базы данных (Turso)\n\n1. Зарегистрируйтесь на [turso.tech](https:\u002F\u002Fturso.tech) через GitHub\n2. Создайте базу данных:\n   ```bash\n   turso db create fintech-db\n   ```\n3. Получите URL и токен:\n   ```bash\n   turso db show fintech-db --url\n   turso db tokens create fintech-db\n   ```\n4. Добавьте в `.env.local`:\n   ```env\n   DATABASE_URL=\"libsql:\u002F\u002F[ваша-база].turso.io\"\n   TURSO_AUTH_TOKEN=\"[ваш-токен]\"\n   ```\n\n### 6. Запуск\n\n```bash\nnpm run dev\n```\n\nОткройте [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000).\n\n---\n\n## Переменные окружения\n\nСоздайте файл `.env.local` в корне проекта:\n\n```env\n# === База данных (Turso \u002F libSQL) ===\nDATABASE_URL=\"libsql:\u002F\u002F[ваша-база].turso.io\"\nTURSO_AUTH_TOKEN=\"[ваш-токен]\"\n\n# === NextAuth ===\nNEXTAUTH_SECRET=\"[ВАШ_SECRET_МИНИМУМ_32_СИМВОЛА]\"\nNEXTAUTH_URL=\"http:\u002F\u002Flocalhost:3000\"\n\n# === GitHub OAuth (опционально) ===\nGITHUB_CLIENT_ID=\"[ВАШ_GITHUB_CLIENT_ID]\"\nGITHUB_CLIENT_SECRET=\"[ВАШ_GITHUB_CLIENT_SECRET]\"\n\n# === OpenRouter (AI) ===\nOPENROUTER_API_KEY=\"sk-or-v1-[ВАШ_OPENROUTER_КЛЮЧ]\"\nOPENROUTER_MODEL=\"inclusionai\u002Fling-2.6-1t:free\"\n\n# === Redis (опционально) ===\n# Общий rate limit и кэш AI-ответов между инстансами приложения.\n# Без Redis используется in-process лимитер (достаточно для одного процесса).\nREDIS_URL=\"redis:\u002F\u002Flocalhost:6379\"\n```\n\n### Redis\n\nRedis опционален. При наличии `REDIS_URL`:\n\n- **Rate limiting** — `\u002Fapi\u002Fchat`, `\u002Fapi\u002Finsights`, `\u002Fapi\u002Fweekly-report` делят лимиты по IP между всеми инстансами Next.js.\n- **Кэш AI** — инсайты и еженедельный отчёт кэшируются на 5–10 минут; версия данных сбрасывается при изменении транзакций.\n- **Docker Compose** — сервис `redis` уже включён; приложение получает `REDIS_URL=redis:\u002F\u002Fredis:6379`.\n\nЛокально:\n\n```bash\ndocker run -d --name fintech-redis -p 6379:6379 redis:7-alpine\n```\n\n> **Важно:** Никогда не коммитьте `.env.local` в репозиторий. Он уже добавлен в `.gitignore`.\n\n---\n\n## Запуск AI-ассистента\n\nAI-ассистент использует **OpenRouter API** — облачные модели, доступные бесплатно.\n\n### Получение ключа OpenRouter\n\n1. Зарегистрируйтесь на [openrouter.ai\u002Fkeys](https:\u002F\u002Fopenrouter.ai\u002Fkeys)\n2. Создайте API-ключ (бесплатные модели имеют лимит запросов в день)\n3. Добавьте ключ в `.env.local`:\n\n```env\nOPENROUTER_API_KEY=sk-or-v1-[ВАШ_КЛЮЧ]\n```\n\n### Модели\n\n| Функция | Модель | Тип |\n|---------|--------|-----|\n| AI-чат | `inclusionai\u002Fling-2.6-1t:free` | Текст |\n| AI-инсайты | `inclusionai\u002Fling-2.6-1t:free` | Текст |\n\n### Floating AI-чат\n\nAI-чат отображается как плавающая кнопка в правом нижнем углу. Нажмите на неё — откроется окно чата. На мобильных устройствах чат открывается на весь экран. На странице входа чат автоматически скрывается.\n\n---\n\n## Тестирование\n\n### Unit-тесты (Vitest)\n\n```bash\n# Запустить все unit-тесты\nnpm test\n\n# Запустить с детальным выводом\nnpx vitest run --reporter=verbose\n\n# Режим watch\nnpx vitest\n```\n\n**Покрытие тестами:**\n\n| Модуль | Файл | Тестов |\n|--------|------|--------|\n| TransactionService | `tests\u002Funit\u002Ftransaction-service.test.ts` | 16 |\n| Finance utils | `tests\u002Funit\u002Ffinance.test.ts` | 11 |\n| AI utils | `tests\u002Funit\u002Fai.test.ts` | 11 |\n| Transaction service | `tests\u002Funit\u002Ftransaction.service.test.ts` | 4 |\n| **Всего** | | **42** |\n\n### E2E-тесты (Playwright)\n\n```bash\n# Запустить E2E-тесты (требуется запущенный dev-сервер)\nnpm run test:e2e\n```\n\n---\n\n## Деплой\n\n### Vercel (рекомендуется)\n\nПроект задеплоен на **Vercel**: [fintech-dashboard-six.vercel.app](https:\u002F\u002Ffintech-dashboard-six.vercel.app)\n\nПри пуше в ветку `main` деплой происходит автоматически через Vercel Git Integration.\n\n**Настройка вручную:**\n\n[![Deploy with Vercel](https:\u002F\u002Fvercel.com\u002Fbutton)](https:\u002F\u002Fvercel.com\u002Fnew)\n\n1. Подключите GitHub-репозиторий\n2. Добавьте переменные окружения (см. [Переменные окружения](#переменные-окружения))\n3. Укажите `DATABASE_URL` и `TURSO_AUTH_TOKEN` от Turso\n4. Деплой\n\n> **Важно:** На Vercel не требуется `prisma db push` или `prisma migrate` — Prisma Client генерируется на этапе сборки, а Turso работает через `@prisma\u002Fadapter-libsql`.\n\n### Docker\n\n```bash\ndocker-compose up -d --build\n```\n\n---\n\n## Безопасность\n\n- **Gitleaks** — pre-commit hook и CI-проверка на утечку секретов\n- `.env.local` — добавлен в `.gitignore`\n- Все чувствительные данные в README заменены на заглушки `[ВАШ_ЗНАЧЕНИЕ]`\n- **GitHub OAuth Secret** — отозван и перевыпущен при обнаружении утечки\n- **История git** — очищена от секретов через `git filter-repo`\n- **CI** — запускает Gitleaks на каждый push, блокирует коммиты с утечками\n\n---\n\n## Roadmap\n\n- [x] AI-чат с историей диалога\n- [x] Floating AI-чат (сворачиваемый виджет)\n- [x] Экспорт в PDF\n- [x] PWA (установка на телефон)\n- [ ] Распознавание чеков через AI (Vision)\n- [ ] Множественные счета\u002Fкошельки\n- [ ] Импорт банковских выписок (CSV\u002FOFX)\n- [ ] Уведомления о превышении бюджета\n- [ ] Семейный доступ (общие бюджеты)\n- [ ] Локализация (EN)","这是一款面向个人用户的金融管理仪表盘，用于追踪收入与支出、设定预算及财务目标，并集成AI驱动的分析功能。核心特性包括可视化仪表盘（含KPI、趋势图表）、浮动式AI助手（基于OpenRouter提供交易分析与优化建议）、多维度交易管理、预算监控、目标追踪、CSV\u002FPDF导出及PWA支持。采用Next.js + TypeScript构建，后端使用Prisma与Turso（libSQL），支持暗色主题与响应式设计。适用于个人日常记账、消费分析、储蓄规划等轻量级理财场景。",2,"2026-07-10 02:30:27","CREATED_QUERY"]