Фітнес-трекер для спортсменів з детальною аналітикою прогресу та інтуїтивним інтерфейсом.
PowerLogs - це сучасний веб-додаток для відстеження тренувань, який дозволяє спортсменам планувати тренування, фіксувати результати та аналізувати прогрес через детальні графіки та статистику.
- 📊 Детальна аналітика - Графіки прогресу 1RM, об'єму та повторень
- 🎯 Персональні рекорди - Встановлення та відстеження PR з автоматичними розрахунками
- 📋 Шаблони тренувань - Готові програми та власні шаблони
- 📱 Мобільна оптимізація - Адаптивний дизайн для використання в залі
- ⚡ Швидкий ввід - Миттєве додавання сетів з підтримкою RPE та відсотків
- 🔒 Безпека даних - Захист інформації сучасними стандартами
- Next.js 14 - React фреймворк з App Router
- TypeScript - Типізація для надійності коду
- Tailwind CSS - Utility-first CSS фреймворк
- Shadcn/ui - Компоненти інтерфейсу
- React Hook Form - Управління формами
- Zod - Валідація схем
- Next.js API Routes - Serverless API
- Prisma - ORM для роботи з базою даних
- PostgreSQL - Реляційна база даних
- NextAuth.js - Аутентифікація та авторизація
- Recharts - Бібліотека графіків
- date-fns - Робота з датами
- Lucide React - Іконки
- Node.js 18+
- npm або yarn
- PostgreSQL база даних
git clone https://github.com/your-username/powerlogs.git
cd powerlogsnpm install
# або
yarn installСтворіть файл .env.local в корені проекту:
# База даних
DATABASE_URL="postgresql://username:password@localhost:5432/powerlogs"
DIRECT_URL="postgresql://username:password@localhost:5432/powerlogs"
# NextAuth.js
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key"
# Supabase (опціонально)
NEXT_PUBLIC_SUPABASE_URL=""
NEXT_PUBLIC_SUPABASE_ANON_KEY=""# Генерація Prisma клієнта
npx prisma generate
# Застосування міграцій
npx prisma db push
# Заповнення початковими даними
npx prisma db seed# Розробка
npm run dev
# Продакшн збірка
npm run build
npm startДодаток буде доступний за адресою: http://localhost:3000
powerlogs/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API маршрути
│ │ ├── dashboard/ # Дашборд сторінки
│ │ ├── workouts/ # Тренування
│ │ └── exercises/ # Вправи
│ ├── components/ # React компоненти
│ │ ├── ui/ # Базові UI компоненти
│ │ ├── features/ # Функціональні компоненти
│ │ ├── pages/ # Сторінкові компоненти
│ │ └── layout/ # Layout компоненти
│ ├── lib/ # Утиліти та конфігурація
│ ├── hooks/ # Кастомні React хуки
│ └── types/ # TypeScript типи
├── prisma/ # Prisma схема та міграції
│ ├── schema.prisma # Схема бази даних
│ └── seed.ts # Початкові дані
├── public/ # Статичні файли
└── docs/ # Документація
Проект використовує PostgreSQL з наступною структурою:
- User - Користувачі системи
- Exercise - Вправи (системні та користувацькі)
- Workout - Тренування
- WorkoutExercise - Зв'язок тренування з вправами
- Set - Підходи/сети
- PersonalRecord - Персональні рекорди
- UserExerciseTracking - Налаштування відстеження
- Підтримка відсоткового програмування
- Відстеження RPE (Rate of Perceived Exertion)
- Автоматичні розрахунки 1RM
- Групування вправ за категоріями
POST /api/auth/signin- Вхід в системуPOST /api/auth/signup- РеєстраціяGET /api/auth/session- Отримання сесії
GET /api/workouts- Список тренуваньPOST /api/workouts- Створення тренуванняGET /api/workouts/[id]- Деталі тренуванняPUT /api/workouts/[id]- Оновлення тренуванняDELETE /api/workouts/[id]- Видалення тренування
GET /api/exercises- Список вправPOST /api/exercises- Створення вправиGET /api/exercises/[id]- Деталі вправиPUT /api/exercises/[id]- Оновлення вправиDELETE /api/exercises/[id]- Видалення вправи
GET /api/workouts/[id]/exercises/[exerciseId]/sets- Список сетівPOST /api/workouts/[id]/exercises/[exerciseId]/sets- Додавання сетуPUT /api/workouts/[id]/exercises/[exerciseId]/sets/[setId]- Оновлення сетуDELETE /api/workouts/[id]/exercises/[exerciseId]/sets/[setId]- Видалення сету
- Темна/світла тема з автоматичним перемиканням
- Адаптивний дизайн для всіх пристроїв
- Консистентна колірна схема з CSS змінними
- Сучасна типографіка з системними шрифтами
- Інтуїтивна навігація з чіткими іконками
- Швидкий ввід даних з автозаповненням
- Валідація в реальному часі
- Плавні анімації та переходи
- Touch-friendly інтерфейс
- Великі кнопки та поля вводу
- Оптимізовані форми
- Швидкий доступ до основних функцій
- NextAuth.js для аутентифікації
- Валідація всіх входів з Zod
- SQL Injection захист через Prisma
- XSS захист з React
# Встановлення Vercel CLI
npm i -g vercel
# Деплой
vercel --prodFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]DATABASE_URL- URL бази данихNEXTAUTH_URL- URL додаткуNEXTAUTH_SECRET- Секретний ключ
⭐ Якщо проект вам сподобався, поставте зірочку!
Зроблено з ❤️ для спортсменів






