Self-hosted social media management platform. Schedule posts across Twitter/X, Facebook, LinkedIn, and Instagram from a single dashboard. Open source, no license keys, no monthly fees.
Built with Laravel 11 + Inertia.js + Vue 3 + Tailwind CSS + MySQL 8 + Redis.
- ✅ User authentication (register, login, logout)
- ✅ Dashboard with stats (total/scheduled/published posts, connected accounts)
- ✅ Post composer (text content, multi-account selection, schedule datetime)
- ✅ Post scheduling with queue worker (Laravel Queue + Redis)
- ✅ Calendar view (monthly grid showing all scheduled/published posts)
- ✅ Social accounts management UI (connect/disconnect)
- ✅ Docker compose deployment (one-command self-hosted)
- ✅ CI/CD pipeline (auto-build Docker image to GHCR on push)
- 🚧 OAuth integration for Twitter/X, Facebook, LinkedIn, Instagram
- 🚧 Actual post publishing via provider APIs
- 🚧 AI caption generation (OpenAI-compatible endpoint support)
- 🚧 Analytics (engagement metrics per post/account)
- 🚧 Team management (multi-user, roles, workspaces)
- 🚧 Image upload (currently URL-only)
- 🚧 Draft auto-save
git clone https://github.com/kelvinzer0/remixpost.git
cd remixpost
cp .env.example .env
# Edit .env: set DB_PASSWORD, APP_KEY, social API credentials
nano .env
# Generate APP_KEY locally (or let entrypoint do it)
# docker run --rm -v $(pwd):/app -w /app php:8.3-fpm-alpine php artisan key:generate
docker compose up -d --build
# Run migrations (also auto-run on container start)
docker compose exec app php artisan migrate
# Open http://localhost:8080mkdir remixpost && cd remixpost
curl -O https://raw.githubusercontent.com/kelvinzer0/remixpost/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/kelvinzer0/remixpost/main/.env.example
cp .env.example .env
# Edit .env
nano .env
# Edit docker-compose.yml: change `build: .` to `image: ghcr.io/kelvinzer0/remixpost:latest`
docker compose up -dPrerequisites: PHP 8.3+, Composer, Node.js 20+, MySQL 8, Redis.
git clone https://github.com/kelvinzer0/remixpost.git
cd remixpost
composer install
npm install
cp .env.example .env
php artisan key:generate
# Edit .env: set DB_* to your local MySQL, REDIS_* to your Redis
php artisan migrate
npm run dev # in one terminal
php artisan serve # in another
php artisan queue:listen # in a third (for scheduled post publishing)
# Open http://localhost:8000To enable actual post publishing, register API apps at each provider and fill in .env:
| Provider | Get credentials at | Env vars |
|---|---|---|
| Twitter/X | https://developer.twitter.com | TWITTER_CLIENT_ID, TWITTER_CLIENT_SECRET |
| https://developers.facebook.com | FACEBOOK_CLIENT_ID, FACEBOOK_CLIENT_SECRET |
|
| (via Facebook Graph API) | Same as Facebook | |
| https://developer.linkedin.com | LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET |
Note: OAuth flow implementation is in progress. The UI for connecting accounts exists, but actual OAuth callbacks are stubbed. See Roadmap.
For AI caption generation (when implemented), set any OpenAI-compatible endpoint:
OPENAI_API_KEY=your-key
OPENAI_API_BASE_URL=https://your-endpoint/v1 # e.g. router9, OpenAI, Azure
OPENAI_MODEL=your-model┌─────────────────────────────────────────────────────┐
│ VPS Anda │
│ │
│ ┌────────────────┐ │
│ │ Nginx :8080 │ (reverse proxy + static) │
│ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ ┌──────────┐ ┌──────────┐ │
│ │ PHP-FPM │──▶│ MySQL 8 │ │ Redis │ │
│ │ (Laravel app) │ │ :3306 │ │ :6379 │ │
│ └───────┬────────┘ └──────────┘ └──────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ Queue Worker │ (publishes scheduled posts) │
│ │ (Laravel) │ │
│ └────────────────┘ │
└─────────────────────────────────────────────────────┘
↑
│ HTTPS (via Caddy/nginx on host)
│
┌──────────────────┐
│ Browser Anda │
│ (Vue 3 SPA) │
└──────────────────┘
| Component | Technology |
|---|---|
| Backend | Laravel 11 (PHP 8.3) |
| Frontend | Vue 3 + Inertia.js + Tailwind CSS |
| Database | MySQL 8 |
| Cache/Queue | Redis 7 |
| Web server | Nginx (in container) |
| Process manager | Supervisor (nginx + php-fpm + queue worker) |
| Build tool | Vite 5 |
| Container | Docker (multi-stage build, alpine-based) |
| CI/CD | GitHub Actions → GHCR |
# Run tests
php artisan test
# Code style
./vendor/bin/pint
# Build assets for production
npm run build
# Create migration
php artisan make:migration create_xxx_table
# Tinker
php artisan tinkerApache License 2.0 — see LICENSE for full text.
You are free to:
- ✅ Use this software commercially
- ✅ Modify and distribute
- ✅ Fork and rebrand
- ✅ Host privately or publicly
- ✅ Sell hosted instances
Just keep the NOTICE file attribution. See LICENSE for details.
This project is an independent implementation inspired by open source social media management tools. We respect and learn from projects like Mixpost and Postiz. remixpost is written from scratch with its own codebase, architecture, and design.
Pull requests welcome! Please:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing-feature) - Open a PR
- Open an issue: https://github.com/kelvinzer0/remixpost/issues
- Discussions: https://github.com/kelvinzer0/remixpost/discussions