Об этом проекте
Runique разработан для того, чтобы принести продуктивность в стиле Django в приложения на Rust, сохраняя при этом безопасность типов и производительность. Он построен на Axum, SeaORM и Tera и сосредоточен на сокращении объёма шаблонного кода за счёт декларативных макросов и интегрированных соглашений. Основной пакет, runique, является ядром фреймворка, а репозиторий также включает демонстрационное приложение для проверки фреймворка и двуязычную документацию на английском и французском языках.
Фреймворк построен вокруг макроса model!, который позволяет объявить модель один раз и сгенерировать соответствующую сущность SeaORM и SQL-миграцию. Сочетание модели с атрибутом #[form] создаёт соответствующую безопасную с точки зрения типов форму, которая валидируется на стороне сервера. Регистрация ресурса в макросе admin! генерирует панель администратора CRUD с представлениями списка, поиском, фильтрами и разрешениями. Маршрутизация осуществляется через макрос urlpatterns!, который создаёт обычный роутер Axum, а шаблоны используют Tera с автоматическим экранированием.
Runique включает в себя несколько мер безопасности по умолчанию, таких как сравнение CSRF-токенов с постоянным временем, nonce для политики безопасности контента на каждый ответ, устойчивое к таймингу управление входом, хеширование паролей с помощью Argon2, сессии на основе базы данных, одноразовые хешированные токены для сброса пароля и санитизацию вывода с помощью ammonia. Он также предоставляет CLI для выполнения общих задач, таких как создание нового проекта, генерация кода администратора, создание суперпользователя, создание миграций и их применение или откат.
Проект поддерживает несколько баз данных, включая SQLite, PostgreSQL, MySQL и MariaDB, с включённой по умолчанию поддержкой всех баз данных. Он сообщает о большом наборе тестов и предоставляет метрики покрытия для пакета фреймворка. Документация охватывает установку, архитектуру, конфигурацию, маршрутизацию, формы, модели, шаблоны, использование ORM, промежуточное ПО, всплывающие сообщения, примеры, администратора, сессии и переменные окружения. Проект распространяется под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.