Chronex - открытый планировщик контента для мультиплатформенной публикации

#nextjs#trpc#cloudflare#open-source

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.

Практическое применение

  1. Content Calendar
    Единый интерфейс для планирования публикаций с визуализацией в календаре

  2. Bulk Upload
    Массовая загрузка и планирование контента через CSV/Excel

  3. Multi-platform Posting
    Публикация в один клик на multiple платформах

  4. Analytics Dashboard
    Базовые метрики по охватам и взаимодействиям

  5. Team Collaboration
    Ролевая модель с доступом для редакторов и утверждающих

Заключение

Chronex демонстрирует, как современный стек технологий позволяет создавать конкурентоспособные open-source альтернативы платным сервисам. Проект находится в активной разработке, и его архитектура позволяет легко добавлять новые платформы и функции. Для разработчиков это также отличный пример практического применения таких технологий, как tRPC, Cloudflare Workers и Drizzle в production-ready приложении.

Проект доступен на GitHub для изучения и contributions: github.com/prncexe/chronex


Источник: https://github.com/prncexe/chronex