TL;DR
Chronex - это open-source решение для планирования и автоматизации публикации контента на multiple платформах, построенное на стеке Next.js, tRPC, Cloudflare Workers и Backblaze B2, предоставляющее альтернативу платным сервисам вроде Buffer или Hootsuite.
Введение: контекст и актуальность
В эпоху мультиплатформенного контент-маркетинга автоматизация публикаций стала must-have инструментом для digital-специалистов. Однако большинство существующих решений либо платные, либо ограничены в функциональности. Chronex предлагает open-source альтернативу с гибкой архитектурой и современным стеком технологий.
Технический стек и архитектура
Core Platform
Chronex построен на Next.js 13+ с использованием App Router и новых React Server Components. Для реализации API выбран tRPC - современный TypeScript-first RPC framework, который обеспечивает end-to-end type safety:
// Пример tRPC процедуры для добавления поста
const addPost = t.procedure
.input(z.object({
content: z.string(),
platforms: z.array(z.string()),
scheduleAt: z.date()
}))
.mutation(async ({ input }) => {
// Логика сохранения в БД
return db.insert(posts).values(input);
});
ORM слой реализован на Drizzle - lightweight TypeScript ORM с поддержкой миграций через drizzle-kit. Для аутентификации используется Better Auth - modern auth library с поддержкой OAuth 2.0 и WebAuthn.
Media Storage
Для хранения медиа контента выбрана Backblaze B2 - cost-effective cloud storage с S3-совместимым API. Интеграция реализована через официальный SDK:
import B2 from 'backblaze-b2';
const b2 = new B2({
applicationKeyId: process.env.B2_KEY_ID,
applicationKey: process.env.B2_APP_KEY
});
async function uploadFile(file: File) {
await b2.authorize();
const response = await b2.getUploadUrl({ bucketId });
return b2.uploadFile({
uploadUrl: response.data.uploadUrl,
fileName: file.name,
data: file.buffer
});
}
Scheduling Engine
Сердце системы - планировщик, построенный на Cloudflare Workers и Queues. Это позволяет реализовать масштабируемый и отказоустойчивый механизм отложенной публикации:
// Cloudflare Worker обработчик очереди
export default {
async queue(batch, env) {
for (const message of batch.messages) {
const post = JSON.parse(message.body);
await publishToPlatform(post);
message.ack();
}
}
}
Для интеграции с социальными сетями используются официальные API (Twitter API v2, Instagram Graph API, LinkedIn API) с поддержкой OAuth.
Практическое применение
-
Content Calendar
Единый интерфейс для планирования публикаций с визуализацией в календаре -
Bulk Upload
Массовая загрузка и планирование контента через CSV/Excel -
Multi-platform Posting
Публикация в один клик на multiple платформах -
Analytics Dashboard
Базовые метрики по охватам и взаимодействиям -
Team Collaboration
Ролевая модель с доступом для редакторов и утверждающих
Заключение
Chronex демонстрирует, как современный стек технологий позволяет создавать конкурентоспособные open-source альтернативы платным сервисам. Проект находится в активной разработке, и его архитектура позволяет легко добавлять новые платформы и функции. Для разработчиков это также отличный пример практического применения таких технологий, как tRPC, Cloudflare Workers и Drizzle в production-ready приложении.
Проект доступен на GitHub для изучения и contributions: github.com/prncexe/chronex
Источник: https://github.com/prncexe/chronex