Bebop is a campaign-centric content marketing orchestration platform designed specifically for technical content creators, Developer Relations professionals, and content marketing teams. It combines the power of content planning, creation, scheduling, and multi-platform publishing in a unified workflow.
Campaign-First Approach: Unlike traditional CMSs that focus on individual posts, Bebop organizes content around marketing campaigns - helping you plan, create, and execute cohesive content strategies across multiple channels.
Multi-Platform Publishing: Write once, publish everywhere. Bebop automatically adapts and publishes your content to:
- Technical Blogs: Hashnode, Dev.to
- Newsletters: Beehiiv
- Social Networks: Bluesky, Mastodon
- Coming Soon: LinkedIn, Twitter, WordPress, Ghost
Intelligent Scheduling: Built-in publishing queue with retry logic, failure monitoring, and real-time status tracking.
Privacy-First Analytics: Cookie-free, GDPR-compliant analytics that respect user privacy while providing valuable insights.
- 📋 Plan → Create content marketing campaigns with strategic goals
- ✍️ Create → Write content using our integrated editor with live preview
- ⏰ Schedule → Plan publishing timeline across multiple platforms
- 📊 Monitor → Track publishing status with real-time dashboard
- 📈 Analyze → Monitor campaign performance and content analytics
- Campaign Management: Organize content around marketing objectives
- Content Library: Centralized content creation and management
- Multi-Platform Publishing: Automated cross-posting with platform-specific formatting
- Publishing Queue: Reliable scheduling with retry logic and monitoring
- Real-Time Dashboard: Monitor publishing status and campaign progress
- Platform Integration: Easy setup for Hashnode, Dev.to, Bluesky, and Mastodon
- Privacy-First Analytics: Track performance without cookies or invasive tracking
- Rich Media Support: YouTube, Spotify embeds with visual editors
- GitHub Integration: Import content from GitHub repositories
Current Version: v0.4.0 (Hybrid Publishing Workflow Release)
Core Publishing System:
- ✅ Campaign-centric workflow - Create and manage content campaigns
- ✅ Multi-platform publishing - Hashnode, Dev.to, Bluesky, Mastodon support
- ✅ Hybrid scheduling system - Three modes: "Publish Now", "Add to Queue", "Custom Schedule"
- ✅ Background processing - Automated scheduler with manual trigger capability
- ✅ Real-time monitoring - Publishing queue with status tracking and retry logic
Technical Infrastructure:
- ✅ TypeScript implementation - Type-safe codebase with proper interfaces
- ✅ Performance optimizations - Lazy loading, code splitting, bundle analysis
- ✅ Comprehensive testing - Automated smoke tests for APIs and workflows
- ✅ Modern stack - Next.js 15, React 19, MongoDB, Prisma, Clerk Auth
- ✅ Developer experience - Testing suite, documentation, development workflow
User Experience:
- ✅ Integrated editor - Markdown editor with rich media card support
- ✅ Content library - Centralized topic and media management
- ✅ Search functionality - Real-time search across content with keyboard shortcuts
- ✅ Responsive UI - Modern interface with loading states and error handling
Analytics & Insights (Complete):
- ✅ Privacy-first analytics - Cookie-free tracking with daily visitor rotation
- ✅ Publishing analytics - Success rates, engagement tracking, performance metrics
- ✅ Campaign ROI tracking - Goal setting and achievement measurement
- ✅ Content performance - Views, clicks, and conversion tracking across platforms
Platform Improvements:
- Enhanced Beehiiv integration - Improve UI/UX design, better visual identity, clearer enterprise plan guidance
- Platform grouping - Organize platforms by type (newsletters, blogs, social) for better discovery
- Settings wizard - Guided setup flow for new platform integrations
Platform Expansion:
- LinkedIn integration - Professional content publishing and scheduling
- Twitter/X integration - Social media content distribution with threading
- WordPress integration - Blog platform connectivity and content sync
- Ghost integration - Modern publishing platform support
Advanced Features:
- Content versioning - Track changes and maintain content history
- Team collaboration - Multi-user workflows and permission management
- Content templates - Reusable templates for common content types
- Advanced scheduling - Optimal timing suggestions and bulk scheduling
User Experience Enhancements:
- User onboarding - Welcome tour and guided setup for new users
- Advanced filtering - Tags, categories, and saved search functionality
- Bulk operations - Multi-select actions for topics and campaigns
- Mobile optimization - Responsive design improvements for mobile devices
- Node.js 18.17 or later
- MongoDB database (local or cloud)
- Clerk account for authentication
- AWS S3 bucket for media storage (optional)
- Clone the repository
git clone https://github.com/ddri/bebop.git
cd bebop- Install dependencies
npm install- Set up environment variables
Copy the example environment file and configure it:
cp .env.example .env.localEdit .env.local and add your configuration:
# Required: Database (MongoDB)
DATABASE_URL="mongodb://localhost:27017/bebop"
# Required: Clerk Authentication (get from https://dashboard.clerk.com)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_..."
CLERK_SECRET_KEY="sk_..."
NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in"
NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up"
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL="/"
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL="/"
# Required: Application URL
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# Optional: See .env.example for AWS S3, platform APIs, etc.- Set up the database
# Generate Prisma client
npx prisma generate
# Push schema to MongoDB
npx prisma db push- Start Bebop
# Development mode (with hot reload)
npm run dev
# Or production mode
npm run build
npm run startOpen http://localhost:3000 and sign up for an account!
- MongoDB is running (local or cloud)
- Created Clerk account and added keys
- Configured
.env.localwith required variables - Database schema pushed with
npx prisma db push - Server started with
npm run dev - Created your first account at http://localhost:3000
- Framework: Next.js 15 with React 19
- Language: TypeScript
- Styling: Tailwind CSS + shadcn/ui components
- Database: MongoDB with Prisma ORM
- Authentication: Clerk
- Storage: AWS S3 (optional) or local filesystem
- Analytics: Privacy-first custom analytics
bebop/
├── src/
│ ├── app/ # Next.js app router pages
│ │ ├── api/ # API routes
│ │ ├── campaigns/ # Campaign pages
│ │ ├── analytics/ # Analytics dashboard
│ │ ├── media/ # Media library
│ │ ├── settings/ # Settings pages
│ │ └── write/ # Content editor
│ ├── components/ # React components
│ │ ├── editor/ # Markdown editor components
│ │ ├── social/ # Social platform components
│ │ ├── analytics/ # Analytics components
│ │ └── ui/ # shadcn/ui components
│ ├── lib/ # Utility libraries
│ │ ├── analytics/ # Analytics service
│ │ ├── social/ # Social platform clients
│ │ └── webhooks/ # Webhook handling
│ ├── hooks/ # Custom React hooks
│ └── types/ # TypeScript type definitions
├── prisma/
│ └── schema.prisma # Database schema
├── public/ # Static assets
├── blog/ # Blog content (markdown)
└── docs/ # Documentation
| Platform | Status | Content Types | Requirements | Setup Guide |
|---|---|---|---|---|
| Beehiiv | ✅ Ready | Newsletter posts | Enterprise Plan | Setup Guide |
| Platform | Status | Content Types | Setup Guide |
|---|---|---|---|
| Hashnode | ✅ Ready | Blog posts, articles | Setup Guide |
| Dev.to | ✅ Ready | Technical articles | Setup Guide |
| Platform | Status | Content Types | Setup Guide |
|---|---|---|---|
| Bluesky | ✅ Ready | Social posts, threads | Setup Guide |
| Mastodon | ✅ Ready | Social posts, updates | Setup Guide |
| Platform | Status | Content Types |
|---|---|---|
| 🚧 Development | Professional posts | |
| Twitter/X | 🚧 Development | Tweets, threads |
| Threads | 🚧 Development | Posts, threads |
| WordPress | 🚧 Development | Blog posts |
| Ghost | 🚧 Development | Blog posts |
- Navigate to Settings → Destinations
- Click Add Destination
- Select your platform and follow the setup wizard
- Test the connection to ensure proper configuration
- Real-time status of all scheduled content
- Retry management for failed publications
- Publishing activity feed with detailed logs
- Performance metrics and success rates
- Content performance across all platforms
- Publishing success rates by destination
- Campaign ROI and engagement metrics
- Content type analysis (blog posts vs social media)
For complete technical documentation, API reference, and platform setup guides, see the Developer Guide.
# Development
npm run dev # Start development server (port 3000)
npm run build # Build for production
npm run start # Start production server
npm run build:analyze # Build with bundle analyzer
# Testing
npm test # Run tests in watch mode
npm run test:ui # Open Vitest UI
npm run test:smoke # Run smoke tests
npm run test:quick # Quick test summary
npm run test:workflow # Test publishing workflow
# Code Quality
npm run lint # Run ESLint
# Database
npx prisma studio # Open Prisma Studio
npx prisma generate # Generate Prisma client
npx prisma db push # Push schema changes to database- Start the development server
npm run dev-
Make your changes - Hot reload will update the browser automatically
-
Run tests to ensure everything works
npm run test:smoke- Build for production to verify the build
npm run buildBebop includes a comprehensive testing suite with automated smoke tests to ensure the publishing workflow functions correctly.
- Smoke Tests: Fast tests covering critical functionality
- API Tests: Publishing plans, scheduler, and trigger endpoints
- Component Tests: HybridPublisher scheduling modes and validation
- Integration Tests: End-to-end workflow validation
# Quick smoke test summary
npm run test:quick
# All smoke tests with detailed output
npm run test:smoke
# Live API testing (requires dev server)
npm run test:workflow
# Interactive test UI
npm run test:ui
# Watch mode during development
npm testPublishing Workflow:
- ✅ Three scheduling modes: "Publish Now", "Add to Queue", "Custom Schedule"
- ✅ Date/time validation and timezone handling
- ✅ Publishing plan creation and status transitions
- ✅ Background scheduler processing
API Endpoints:
- ✅
POST /api/publishing-plans- Create scheduled publications - ✅
POST /api/publishing-plans/process-scheduled- Process due publications - ✅
POST /api/scheduler/trigger- Manual scheduler trigger
Components:
- ✅ HybridPublisher form validation and submission
- ✅ Platform selection and content requirements
- ✅ Lazy loading states and performance optimizations
-
Start Development Server
npm run dev
-
Test Scheduling Features
- Visit
/campaigns/[id](create campaign if needed) - Test "Publish Now" - immediate publishing
- Test "Add to Queue" - 1-hour delay scheduling
- Test "Custom Schedule" - user-selected date/time
- Use "Process Now" button in campaign planner
- Visit
-
Test Performance Optimizations
- Visit
/write,/media,/settings - Verify lazy loading with skeleton states
- Run
npm run build:analyzefor bundle analysis
- Visit
-
Test API Integration
# Test scheduler manually curl -X POST http://localhost:3000/api/scheduler/trigger # Check database health curl http://localhost:3000/api/health/database
src/__tests__/smoke/- Smoke test suiteapi.smoke.test.ts- API endpoint testscomponents.smoke.test.tsx- Component behavior testsscheduler.smoke.test.ts- Scheduling logic tests
scripts/test-workflow.js- Manual integration testingvitest.config.ts- Test configuration
-
Fork and connect repository
- Fork this repository to your GitHub account
- Sign in to Vercel and import your fork
-
Configure environment variables Add all variables from
.env.localto your Vercel project settings -
Deploy
- Vercel will automatically build and deploy your application
- Enable automatic deployments for continuous deployment
- Build the application
npm run build-
Set up production environment
- Configure MongoDB (MongoDB Atlas recommended for production)
- Set all environment variables
- Use a process manager like PM2 for Node.js
-
Start the production server
npm run start# Dockerfile example
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
CMD ["npm", "start"]Bebop is a personal project developed on nights and weekends. Contributions are welcome! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Submit a pull request with a clear description
This project is licensed under the AGPL-3.0 license - see the LICENSE file for details.
Bebop is created and maintained by David Ryan, a product leader and developer now working in the quantum computing industry. This project combines experience from building content management systems at Red Hat and is a spiritual successor to the Corilla CMS.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: Contact via GitHub