Современная система управления юридическими делами с AI-ассистентом, построенная на Next.js 14, TypeScript и Tailwind CSS.
npm install
Создайте файл .env.local
в корне проекта:
# Скопируйте пример файла окружения
cp .env.example .env.local
# Отредактируйте .env.local с вашими реальными значениями
# См. файл .env.example для всех необходимых переменных
Основные переменные для разработки:
# JWT Configuration
JWT_SECRET=your-super-secret-jwt-key-change-in-production
NEXTAUTH_SECRET=your-nextauth-secret-key-change-in-production
# API Configuration
NEXT_PUBLIC_API_URL=http://localhost:3000
# Social Authentication (Optional)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
APPLE_ID=your-apple-client-id
APPLE_SECRET=your-apple-client-secret
FACEBOOK_CLIENT_ID=your-facebook-client-id
FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
npm run dev
Откройте http://localhost:3000 в браузере.
- Admin:
admin@legalai.com
/password
- Lawyer:
lawyer@legalai.com
/password
Система поддерживает вход через:
- Google - Настройте OAuth 2.0 в Google Cloud Console
- Apple - Настройте Sign in with Apple в Apple Developer Console
- Facebook - Настройте Facebook Login в Facebook Developers
В режиме разработки (NODE_ENV=development
) социальная аутентификация работает в демо-режиме:
- Симулирует успешный вход через социальные сети
- Создает тестовые пользовательские данные
- Показывает уведомления о процессе
- Автоматически перенаправляет на dashboard
Для продакшна настройте переменные окружения:
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
APPLE_ID=your-apple-client-id
APPLE_SECRET=your-apple-client-secret
FACEBOOK_CLIENT_ID=your-facebook-client-id
FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
- Email - Проверка формата и уникальности
- Пароль - Минимум 8 символов, заглавные/строчные буквы, цифры, спецсимволы
- Имя - Только буквы и пробелы
- Телефон - Международный формат
- Номер адвоката - Буквы, цифры, дефисы
Вход в систему
{
"email": "admin@legalai.com",
"password": "password"
}
Регистрация нового пользователя
{
"name": "John Doe",
"email": "john@example.com",
"password": "password123",
"confirmPassword": "password123",
"firm": "Legal Partners",
"position": "Partner",
"barNumber": "12345",
"specialization": "Corporate Law",
"notifications": true,
"language": "en",
"terms": true,
"privacy": true
}
Подтверждение email
{
"token": "verification-token"
}
Запрос на сброс пароля
{
"email": "admin@legalai.com"
}
Сброс пароля
{
"token": "reset-token",
"password": "newpassword123",
"confirmPassword": "newpassword123"
}
Выход из системы
Получение профиля текущего пользователя
- Next.js 14 - React framework с App Router
- TypeScript - Типизированный JavaScript
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Анимации
- React Hook Form - Управление формами
- Zod - Валидация данных
- NextAuth.js - Аутентификация (включая социальную)
- React Icons - Иконки для социальной аутентификации
- Next.js API Routes - Серверные endpoints
- JWT - Аутентификация
- bcryptjs - Хеширование паролей
- Zod - Валидация на сервере
├── app/
│ ├── api/auth/ # API endpoints для аутентификации
│ ├── api/profile/ # API endpoints для профиля
│ ├── login/ # Страница входа
│ ├── register/ # Страница регистрации
│ ├── dashboard/ # Главная панель
│ ├── profile/ # Профиль пользователя
│ ├── ai-assistant/ # AI ассистент
│ ├── cases/ # Управление делами
│ └── settings/ # Настройки приложения
├── components/
│ ├── layout/ # Компоненты макета
│ ├── ui/ # UI компоненты
│ ├── auth/ # Компоненты аутентификации
│ ├── profile/ # Компоненты профиля
│ ├── settings/ # Компоненты настроек
│ └── providers/ # Провайдеры контекста
├── contexts/
│ └── AppContext.tsx # Контекст для языка и темы
├── hooks/
├── lib/
│ ├── auth.ts # Утилиты аутентификации
│ ├── utils.ts # Общие утилиты
│ └── translations.ts # Файлы переводов
└── types/
└── index.ts # TypeScript типы
Система поддерживает 5 языков и 5 цветовых тем:
- 🇺🇸 English - Английский
- 🇺🇦 Українська - Украинский
- 🇷🇺 Русский - Русский
- 🇩🇪 Deutsch - Немецкий
- 🇫🇷 Français - Французский
- Dark Blue - Темно-синяя (профессиональная)
- Dark Purple - Темно-фиолетовая (элегантная)
- Dark Green - Темно-зеленая (спокойная)
- Dark Red - Темно-красная (энергичная)
- Dark Orange - Темно-оранжевая (теплая)
- Страницы авторизации - компактные переключатели в правом верхнем углу
- Header приложения - компактные переключатели в правой части
- Settings (
/settings/appearance
) - полная страница настроек - Sidebar - ссылка "Appearance & Language" в настройках
- Primary Blue: #0066FF
- Surface Dark: #0A0E1A
- Surface Medium: #161B2E
- Surface Light: #1E2438
- Text Primary: #FFFFFF
- Text Secondary: #8B92B5
- Accent Green: #00D084
- Accent Orange: #FF8A00
- Accent Red: #FF4757
- Glass morphism эффекты
- Градиентные кнопки
- Анимированные переходы
- Responsive дизайн
- Создайте файл в
app/api/
- Экспортируйте функции
GET
,POST
,PUT
,DELETE
- Используйте
NextRequest
иNextResponse
- Создайте папку в
app/
- Добавьте
page.tsx
- Обновите навигацию в
Sidebar.tsx
- Используйте Tailwind CSS классы
- Следуйте дизайн системе
- Добавляйте анимации с Framer Motion
npm run build
npm start
JWT_SECRET=your-production-jwt-secret
NEXT_PUBLIC_API_URL=https://your-domain.com
NODE_ENV=production
- Интеграция с реальной базой данных
- Email сервис для уведомлений
- Загрузка файлов
- AI интеграция
- Мобильное приложение
- Многоязычность ✅
- Переключение тем ✅
- Аналитика и отчеты
- Fork репозитория
- Создайте feature branch
- Commit изменения
- Push в branch
- Создайте Pull Request
MIT License