PageCharm

Разработчикам

Быстрый старт

Руководство разработчика PageCharm

Подключение пакетов, база, storage и первый запуск sample.

1. Установите пакеты

Минимальная сборка состоит из ядра, UI, EF Core-провайдера и storage-провайдера. Sample использует SQLite и локальное файловое хранилище.

Пакет Для чего нужен
PageCharm Ядро CMS: модели публичного сайта, маршрутизация контента, Razor-рендеринг, модули и query/helper API.
PageCharm.Ui Русскоязычная админка, setup/login flow, admin API, управление блоками, шаблонами, контентом, медиа, настройками, бэкапами и пользователями.
PageCharm.EntityFrameworkCore Общий EF Core-слой: PageCharmDbContext, конфигурации сущностей, миграционный runner и сервисы хранения данных. Обычно подтягивается provider-пакетом.
PageCharm.EntityFrameworkCore.Sqlite SQLite provider и миграции. Лучший вариант для простого деплоя, небольших и средних сайтов, demo/sample и проектов без отдельного DB-сервера.
PageCharm.EntityFrameworkCore.PostgreSql PostgreSQL provider и миграции. Хороший выбор для production, высокой нагрузки, сложных фильтров, индексов и масштабирования.
PageCharm.EntityFrameworkCore.MySql Не входит в очищенный репозиторий и дистрибутив 1.0.0.
PageCharm.Storage.Local Локальное хранение медиа, resized-пресетов и бэкапов в папках приложения.
PageCharm.Storage.S3 S3-совместимое хранение файлов для production-сценариев с объектным storage/CDN.
PageCharm.Abstractions Контракты и общие модели. Обычно ставится транзитивно; напрямую нужен, если вы пишете отдельные интеграции, модули или пакеты расширений.

После размещения подготовленного feed по адресу https://pagecharm.ru/nuget/v3/index.json и настройки доступа к нему установите пакеты в проект сайта. Вместо <версия> укажите одну доступную версию PageCharm для всех пакетов.

PAGECHARM_VERSION='<версия>'
dotnet add package PageCharm --version "$PAGECHARM_VERSION"
dotnet add package PageCharm.Ui --version "$PAGECHARM_VERSION"
dotnet add package PageCharm.EntityFrameworkCore.Sqlite --version "$PAGECHARM_VERSION"
dotnet add package PageCharm.Storage.Local --version "$PAGECHARM_VERSION"

2. Подключите сервисы

В Program.cs регистрируется PageCharm, выбранная база, режим миграций и модули, которые сидируют структуру сайта.

3. Откройте админку

Админка доступна по /cms. Для первого пользователя задайте PageCharm:SetupToken в конфигурации или PAGECHARM_SETUP_TOKEN в окружении. Публичные страницы обслуживает fallback-маршрут MapPageCharm().

Пример

using PageCharm;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();

builder.Services.AddPageCharm(options =>
{
    options.Database.UseSqlite(
        builder.Configuration.GetConnectionString("PageCharm") ?? "Data Source=ncms.db");
    options.Migrations.Mode = builder.Environment.IsDevelopment()
        ? PageCharmMigrationMode.ApplyOnStartup
        : PageCharmMigrationMode.Validate;
    options.UseLocalStorage("wwwroot/uploads", "/uploads", "storage/backups");
});

builder.Services.AddPageCharmUi(options =>
{
    options.Path = "/cms";
    options.SetupToken = builder.Configuration["PageCharm:SetupToken"];
});

var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapPageCharmUi();
app.MapRazorPages();
app.MapPageCharm();
app.Run();

Production

В production режим ApplyOnStartup намеренно запрещен. Используйте Validate и применяйте миграции отдельным шагом.