Skip to content
Открытый исходный код · MIT

Веб-фреймворк на Си

Высокопроизводительный сервер с поддержкой HTTP/1, HTTP/2 и HTTP/3 (QUIC), WebSocket, баз данных и ORM из коробки

HTTP/1 HTTP/2 HTTP/3 WebSocket PostgreSQL
Быстрый старт

Запустите сервер за пару команд

Склонируйте репозиторий, соберите проект с нужными драйверами баз данных и запустите сервер одной командой.

bash
git clone https://github.com/fraxer/C-web-framework.git
cd C-web-framework/backend

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
  -DINCLUDE_POSTGRESQL=yes \
  -DINCLUDE_MYSQL=yes \
  -DINCLUDE_REDIS=yes \
  -DINCLUDE_SQLITE=yes
cmake --build . -j$(nproc)

./exec/cpdy -c /path/to/config.json
Маршрут — config.json
{
  "/": {
    "GET": {
      "file": "handlers/libindexpage.so",
      "function": "index"
    }
  }
}
Обработчик — handlers/indexpage.c
#include "http.h"

void index(httpctx_t* ctx) {
  ctx->response->send_data(
    ctx->response,
    "Hello world!"
  );
}

Обработчик — это просто функция — Каждый маршрут загружает обработчик из .so-библиотеки. Прочитайте запрос, сформируйте ответ — больше ничего настраивать не нужно.

Руководство по сборке →
Возможности

Всё необходимое в одном фреймворке

Полный набор инструментов для современных веб-сервисов — протоколы, базы данных, безопасность и утилиты из коробки.

HTTP/1.1

Полный HTTP/1.1 сервер и клиент — маршрутизация, виртуальные хосты, middleware и TLS.

  • Полная поддержка HTTP/1.1
  • Гибкая маршрутизация с динамическими параметрами
  • Виртуальные хосты с regex-доменами и поддержкой IDN
  • Middleware и фильтры: gzip, range, chunked, cache control
  • Cookie с secure, httpOnly, sameSite
  • Обработка multipart/form-data и загрузка файлов
  • Автоматическое сжатие gzip для поддерживаемых типов
  • Редиректы с регулярными выражениями и группами захвата
  • Встроенный HTTP-клиент: TLS 1.2+, keep-alive pool, редиректы
Подробнее

HTTP/2

Мультиплексирование, сжатие HPACK и управление потоком — множество запросов в одном соединении.

  • Мультиплексирование до 100 потоков на соединение
  • Двухуровневое управление потоком с авторасширением окна
  • Сжатие заголовков HPACK с кодированием Хаффмана
  • Трейлеры и 103 Early Hints
  • WebSocket поверх HTTP/2 (Extended CONNECT)
  • h2c upgrade для plaintext-соединений
  • Защита от Rapid Reset и других DoS-атак
  • Включается автоматически через ALPN поверх TLS
Подробнее

HTTP/3

Транспорт на QUIC поверх UDP — нет HOL-blocking, быстрый старт и независимые потоки запросов.

  • Полный стек QUIC (RFC 9000) на UDP
  • Рукопожатие TLS 1.3 за один RTT
  • Миграция соединений и валидация пути
  • QPACK-сжатие заголовков
  • Трейлеры, 103 Early Hints и 100 Continue
  • Параллельные запросы в одном соединении
  • Автоанонс через заголовок Alt-Svc
  • Требует OpenSSL 3.5+ (флаг -DINCLUDE_HTTP3=yes)
Подробнее

WebSocket

Двунаправленные каналы реального времени с broadcasting и именованными группами.

  • Полная поддержка протокола WebSocket
  • Система broadcasting для групп клиентов
  • Именованные каналы с фильтрацией получателей
  • Встроенная поддержка JSON-сообщений
  • Middleware для WebSocket-запросов
Подробнее

Базы данных

PostgreSQL, MySQL, SQLite и Redis за единой API с ORM и миграциями.

  • PostgreSQL — нативная поддержка с prepared statements
  • MySQL — нативная поддержка с защитой от SQL-инъекций
  • SQLite — встраиваемая БД без отдельного сервера
  • Redis — для кеширования и сессий
  • ORM-модели для работы с таблицами
  • Миграции — версионирование схемы базы данных
  • Query Builder — безопасное построение SQL-запросов
  • Транзакции и connection pool
Подробнее

Безопасность

Аутентификация, сессии, RBAC, rate limiting и современное хеширование паролей.

  • Встроенная система регистрации и авторизации
  • Сессии на файлах, в Redis и в базе данных
  • Секреты сессий защищены через AES-256-GCM
  • Хеширование паролей PBKDF2-HMAC-SHA256
  • Валидаторы email, паролей и других данных
  • RBAC — система ролевого доступа
  • Rate Limiting — защита от DDoS
Подробнее

Хранилище и Email

Локальное и S3-хранилище плюс транзакционная почта с DKIM.

  • Локальное файловое хранилище
  • S3-совместимые сервисы
  • CRUD-операции над файлами
  • multipart-загрузка с сохранением в хранилище
  • SMTP-клиент для отправки писем
  • DKIM-подписи для аутентификации отправителя
  • Шаблоны писем
Подробнее

Инструменты

Шаблонизатор, i18n, JSON, JWT, планировщик задач и набор str_t / HashMap.

  • Шаблонизатор: переменные, циклы, интеграция с моделями
  • i18n на базе gettext: плюрализм, автоопределение языка, fallback
  • Высокопроизводительный JSON-парсер и сериализация
  • JWT, UUID, Base64, SHA-1/256
  • Планировщик задач: interval, daily, weekly, monthly
  • AES-256-GCM, генератор случайных чисел
  • str_t с SSO, Array, HashMap/Map, упорядоченная очередь
Подробнее
Области применения

Где применяется фреймворк

REST API

Высокопроизводительные API для мобильных и веб-приложений

Real-time

Чаты, уведомления и live-обновления через WebSocket

Микросервисы

Микросервисы и монолитные приложения

API Gateway

Маршрутизация и проксирование запросов между сервисами

Админ-панели

Аутентификация, RBAC и CRUD-операции

Загрузка файлов

Локальное и S3-совместимое облачное хранилище

Email-сервисы

Транзакционная отправка писем с DKIM

i18n

Многоязычный контент на базе gettext и плюрализма

Начните прямо сейчас

Создавайте быстрые веб-сервисы на Си

Изучите введение, посмотрите примеры или откройте исходный код на GitHub.

Выпущено под лицензией MIT.