Современный адаптивный сайт веб-студии с административной панелью и полным функционалом управления контентом.
- React 18 - современная библиотека для создания пользовательских интерфейсов
- TypeScript - типизированный JavaScript для лучшей разработки
- Vite - быстрый сборщик и dev-сервер
- Tailwind CSS - utility-first CSS фреймворк
- shadcn/ui - современные компоненты интерфейса
- React Router - маршрутизация
- React Query - управление серверным состоянием
- React Hook Form - работа с формами
- Lucide React - современные иконки
- Supabase - Backend-as-a-Service платформа
- PostgreSQL - реляционная база данных
- Row Level Security (RLS) - безопасность на уровне строк
- Edge Functions - серверная логика
- Supabase Auth - аутентификация пользователей
- Supabase Storage - хранение файлов
src/
├── components/ # React компоненты
│ ├── ui/ # Базовые UI компоненты (shadcn)
│ ├── admin/ # Компоненты админ-панели
│ ├── Header.tsx # Шапка сайта
│ ├── Hero.tsx # Главный баннер
│ ├── Services.tsx # Секция услуг
│ ├── Cases.tsx # Секция кейсов
│ └── ...
├── pages/ # Страницы приложения
│ ├── Index.tsx # Главная страница
│ ├── Services.tsx # Страница услуг
│ ├── Cases.tsx # Страница кейсов
│ ├── About.tsx # О компании
│ ├── Contact.tsx # Контакты
│ ├── Login.tsx # Авторизация
│ └── Admin.tsx # Админ-панель
├── hooks/ # Пользовательские хуки
│ ├── useAuth.ts # Аутентификация
│ ├── useUserRole.ts # Роли пользователей
│ └── useSiteContent.ts # Контент сайта
├── integrations/ # Внешние интеграции
│ └── supabase/ # Конфигурация Supabase
├── lib/ # Утилиты
└── assets/ # Статические ресурсы
supabase/
├── migrations/ # SQL миграции
├── functions/ # Edge Functions
└── config.toml # Конфигурация Supabase
Динамический контент сайта (заголовки, описания, тексты)
section
- раздел сайтаkey
- ключ контентаvalue
- значение
Услуги компании
title
,description
,short_description
features
- массив возможностейprice_from
,price_to
- диапазон ценslug
- URL слаг- SEO поля:
meta_title
,meta_description
, и т.д.
Портфолио проектов
title
,description
,short_description
client_name
,project_url
category
- категория проекта (enum)technologies
- используемые технологииmain_image
,gallery_images
- изображенияresults
- результаты проекта- SEO и сортировка
Заявки с формы обратной связи
name
,email
,phone
,message
status
- статус обработки
Роли пользователей
user_id
- ссылка на auth.usersrole
- роль (admin/editor)
Команда компании
name
,position
,description
skills
- навыки сотрудникаimage
- фото сотрудника
SEO настройки страниц
page_slug
- URL страницы- Meta теги, Open Graph, Canonical URL
Информация о компании
description
,mission
,vision
founding_year
,team_size
projects_completed
,clients_served
- admin - полный доступ ко всем функциям
- editor - доступ к редактированию контента
Все таблицы защищены политиками RLS:
- Публичный доступ только к активным записям
- Административные операции требуют соответствующих ролей
- Функция
has_role()
для проверки прав доступа
- Node.js 18+ и npm
- Аккаунт Supabase
- Клонирование репозитория
git clone <repository-url>
cd work4studio
- Установка зависимостей
npm install
- Настройка Supabase
- Создайте проект в Supabase Dashboard
- Получите URL и anon key проекта
- Обновите файл
src/integrations/supabase/client.ts
- Применение миграций
# Установка Supabase CLI
npm install -g supabase
# Логин в Supabase
supabase login
# Линк к проекту
supabase link --project-ref <your-project-id>
# Применение миграций
supabase db push
- Запуск dev-сервера
npm run dev
Приложение будет доступно по адресу http://localhost:8080
# Деплой всех функций
supabase functions deploy
# Деплой конкретной функции
supabase functions deploy <function-name>
Проект можно задеплоить на любой платформе:
- Vercel
- Netlify
- GitHub Pages
- AWS S3 + CloudFront
-- Добавить роль admin для пользователя
INSERT INTO user_roles (user_id, role)
VALUES ('<user-uuid>', 'admin');
- Зарегистрируйтесь через
/login
- Получите роль admin в базе данных
- Перейдите на
/admin
- Управление контентом - редактирование текстов сайта
- Управление услугами - добавление/редактирование услуг
- Управление кейсами - портфолио проектов
- Управление командой - информация о сотрудниках
- Заявки - просмотр и обработка обращений
- SEO настройки - мета-теги для страниц
Для отправки уведомлений используется Resend:
- Зарегистрируйтесь на resend.com
- Получите API ключ
- Добавьте секрет
RESEND_API_KEY
в Supabase - Настройте домен для отправки писем
Определена в src/index.css
с использованием CSS переменных:
--primary
- основной цвет бренда--secondary
- вторичный цвет--accent
- акцентный цвет--background
- фон--foreground
- текст
Используется shadcn/ui с кастомизацией в components/ui/
Адаптивный дизайн для всех устройств:
- Mobile first подход
- Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)
useAuth()
- аутентификацияuseUserRole()
- роли пользователейuseSiteContent()
- контент сайта с real-time обновлениями
- Обработка форм обратной связи
- Отправка email уведомлений
- Дополнительная бизнес-логика
# Линтинг
npm run lint
# Типы TypeScript
npm run type-check
Автоматически генерируется на основе схемы БД в Supabase Dashboard
Документация доступна в supabase/functions/
- Форкните репозиторий
- Создайте feature-ветку
- Внесите изменения
- Создайте Pull Request
- ESLint для JavaScript/TypeScript
- Prettier для форматирования
- Conventional Commits для сообщений коммитов
При возникновении вопросов:
- Проверьте документацию
- Изучите Issues в репозитории
- Создайте новый Issue с подробным описанием
[Укажите лицензию проекта]
Разработано: Work4Studio
Технологии: React + TypeScript + Supabase
Версия: 1.0.0