Сайт-портфолио с кабинетом владельца
Собственный проект. Собрал сайт, на котором можно показать работы, получить заявку и обновить контент без правки кода.
Обсудить сайт
Задача
Объединить портфолио, услуги и приём заявок. Управлять содержимым и обращениями из одного кабинета, сохранив быстрые публичные страницы на русском и английском.
Что получилось
- Показывает услуги, цены, изображения и видео; работает на телефоне и компьютере, на русском и английском.
- Принимает заявки через форму и сохраняет их в базе.
- Отправляет заявку на почту, а в Telegram только номер и ссылку на кабинет. Есть и прямая связь в Telegram.
- В кабинете: поиск заявок, статусы, заметки, продление хранения и повтор неудачной доставки.
- Позволяет редактировать тексты, загружать изображения и менять доступные настройки разделов через кабинет. Изменения сначала сохраняются в черновик, затем публикуются после предпросмотра.
- Сохраняет историю изменений и создаёт резервные копии.
Редактирование через кабинет
Редактор на Puck позволяет переставлять разделы, добавлять текстовые блоки и галереи, менять изображения, цвета и шрифты. Есть просмотр для компьютера, планшета и телефона, масштабирование и отмена изменений.

Черновик → предпросмотр → публикация
Сохранение не меняет публичный сайт. Сначала можно проверить черновик, затем отдельно опубликовать его. История позволяет вернуть предыдущую версию в черновик.
Текущий стек
| Часть | Сейчас используется |
|---|---|
| Фронтенд | React, TypeScript, HTML/CSS; сборка Vite |
| Бэкенд | Python, Flask; Node.js для сборки статических страниц |
| База данных | SQLite |
| Уведомления | SMTP, Telegram Bot API, фоновые очереди доставки |
| Управление сайтом | Кабинет владельца и визуальный редактор Puck |
| Размещение | VPS Selectel, Ubuntu, Caddy, HTTPS |
Защита и копии
HTTPS; пароль и двухфакторный вход в кабинет; ограничение частоты запросов и попыток входа; защита изменений от CSRF. Можно настроить автоматическое резервное копирование с сохранением в выбранном хранилище.
Границы проекта
Кабинет рассчитан на одного владельца. Редактор работает с готовыми адаптивными блоками, а не со свободным рисованием макета. Максимальная нагрузка не измерена; рост продаж или числа заявок этим кейсом не подтверждается.
Нужен сайт под вашу задачу?
Напишите, что нужно показывать на сайте, кто будет его обновлять и куда должны приходить заявки. По этому описанию обсудим состав работ и стоимость.