Персональный трекер расходов с AI-категоризацией. Пишешь одной фразой («потратил 1200 на обед с Никой») — Finley распарсит сумму, категорию, описание и добавит транзакцию. На дашборде видно, укладываешься ли в бюджет в этом месяце. Раздел Insights раз в 6 часов пересобирает текстовые наблюдения о твоих тратах.
- Next.js 14 App Router · TypeScript strict · Tailwind + CSS variables
- Prisma 6 + PostgreSQL (Neon serverless)
- OpenAI
gpt-4o-miniдля категоризации и инсайтов (Structured Outputs) - Recharts, Framer Motion, shadcn/radix primitives
- Single-user password gate через Edge middleware (HMAC-signed cookie)
- Создай бесплатный проект на neon.tech, получи две connection-строки: pooled (для рантайма) и unpooled (для миграций).
- Заполни
.env.local(шаблон в.env.example):DATABASE_URL=... # pooled Neon URL DIRECT_URL=... # unpooled Neon URL OPENAI_API_KEY=sk-... APP_PASSWORD=... # любой пароль SESSION_SECRET=... # openssl rand -hex 32 - Установи и проинициализируй БД:
npm install npx prisma migrate dev --name init npm run seed npm run dev - Открой http://localhost:3000, введи
APP_PASSWORD.
npm run dev— dev-серверnpm run build && npm start— продакшн-сборка локальноnpm run seed— залить 50 реалистичных транзакций за последние 30 днейnpm run db:studio— Prisma Studionpm run db:migrate— создать миграцию
- Запушь в GitHub:
gh repo create <name> --public --source . --push. npm i -g vercel && vercel link(браузерная авторизация).- Перенеси все 5 env-переменных (
vercel env add ...) дляproductionиpreview. vercel --prod.- Применить миграции на prod БД:
DATABASE_URL=<prod> DIRECT_URL=<prod-direct> npx prisma migrate deploy - Залить seed на prod (осознанно, один раз):
DATABASE_URL=<prod> DIRECT_URL=<prod-direct> npm run seed
app/ роуты (Server Components где возможно)
api/ эндпоинты — auth, transactions, categorize, insights, export
features/ бизнес-логика по фичам
ai/ промпты, zod-схемы, OpenAI-клиент
categories/ каталог 10 категорий с иконками и цветами
dashboard/ hero card, bento, charts
transactions/ QuickAdd, History, EditDialog, CategoryBadge
insights/ AI-генератор + карточки
settings/ форма + экспорт + danger zone
export/ CSV/PDF рендеринг
components/ui/ примитивы (button, card, dialog, …)
components/layout/ shell, sidebar, bottom nav, floating add
lib/ db, env, session, money, date, aggregates
prisma/ schema + seed
- Типографика: Lora (headings), Geist Sans (body), Geist Mono (numbers).
Суммы всегда
font-mono tabular-nums. - Spacing: только 4/8 px множители.
- Цвета: 60/30/10 background/surface/primary. Семантические цвета зарезервированы: success для доходов, warning для 80% бюджета, danger только для превышения и ошибок.
- Radii: sm 4 / md 8 / lg 12 / 2xl 16 / full.
- Анимации только осмысленные: count-up на hero-цифре, slide-up на модалках, shimmer на skeletons.
Приватный pet-project, код — личное пользование.