Skip to content

Latest commit

 

History

136 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tarassov.me

Личный сайт Михаила Тарасова — визитка и блог на tarassov.me.

CI C++20 Drogon PostgreSQL Redis License

Что это

Публичная страница-визитка + блог с заметками, на собственном C++-бэкенде. Контент блога редактируется через защищённую админку и хранится в Postgres; картинки к постам — в S3/MinIO.

  • Публичный сайт (/) — статическая визитка BookCard (frontend/public-site/): обо мне, опыт/стек, блог, контакт-форма.
  • Блог — посты отдаются из API (GET /api/v1/public/posts[/{slug}]): серверные фильтры/пагинация/фасеты (?topic=&tag=&q=&page=&include=facets), соседние посты (include=adjacent), превью черновиков (?preview=); рендер Markdown на клиенте, <head> пост-страниц — SSR из templates/pages/ с data-island.
  • Контакт-формаPOST /api/v1/public/contact → письмо через SMTP (Mailer).
  • Админка (/admin/*) — React/TS SPA: CRUD постов, загрузка изображений.

Стек

Слой Технологии
Backend C++20, Drogon (HTTP), libpqxx (PostgreSQL), redis-plus-plus
Frontend React + TypeScript + Vite (админка), статический BookCard (визитка/блог)
Хранилище медиа S3-совместимое (MinIO / R2 / S3), бэкенд local для dev
Инфраструктура Docker Compose (dev), Helm (k8s), GitHub Actions

Один nginx-контейнер раздаёт BookCard на /, React-SPA как fallback (/admin, /login, /account/*) и проксирует /api/* в бэкенд.

Структура

src/            C++ backend (api/ domain/ repositories/ storage/ security/ email/ …)
frontend/       React-админка + public-site/ (BookCard) + nginx.conf + Dockerfile
migrations/     SQL-миграции (применяются на старте)
config/         config.json (dev) / config.production.json
helm/           чарты: tarassov-me (app) / -worker / -frontend / -env
docker/         docker-compose.yml + Dockerfile бэкенда

Разработка

make up            # поднять стек (postgres + redis + app) в docker-compose
make test          # тесты (ctest в контейнере)
make build         # пересобрать образ приложения

cd frontend && npm install && npm run dev   # админка с hot-reload (проксирует /api)
make new-resource ENTITY=Foo                 # скаффолд CRUD-ресурса (домен+репо+контроллер+тесты)

Конфигурация — через config/config.json и переменные окружения (каждый ключ читается как ${ENV:-default}). Секреты — только через env / external secrets, не в коде.

Деплой

Образы публикуются в Docker Hub (docker.io/moveeeax/tarassov-me{,-worker,-frontend}) через GitHub Actions (.github/workflows/release.yml, по тегу vX.Y.Z). Прод — Helm-чарт helm/tarassov-me (+ -worker / -frontend); выкат в кластер — ручной helm upgrade. Нужные CI-переменные и storage/SMTP-настройки описаны в values.yaml и docker/docker-compose.yml.

Лицензия

MIT — см. LICENSE. Шаблон визитки BookCard — коммерческий (куплен отдельно), не покрывается этой лицензией.

About

Личный сайт Михаила Тарасова — визитка и блог на tarassov.me (C++20/Drogon + React)

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages