jambostack / jambo-api
Jambo API — Headless CMS open-source. Backend API REST + GraphQL pour le JamboStack.
Requires
- php: >=8.4
- ext-ctype: *
- ext-iconv: *
- doctrine/doctrine-bundle: ^3.2
- doctrine/doctrine-migrations-bundle: ^4.0
- doctrine/orm: ^3.6
- dompdf/dompdf: ^3.1
- gregwar/captcha-bundle: ^2.5
- intervention/image: ^4.1
- knplabs/knp-paginator-bundle: ^6.10
- lcobucci/jwt: 5.5
- meilisearch/meilisearch-php: *
- nelmio/api-doc-bundle: *
- phpdocumentor/reflection-docblock: ^6.0
- phpstan/phpdoc-parser: ^2.3
- stof/doctrine-extensions-bundle: ^1.15
- symfony/apache-pack: *
- symfony/asset: 8.0.*
- symfony/console: 8.0.*
- symfony/doctrine-messenger: 8.0.*
- symfony/dotenv: 8.0.*
- symfony/expression-language: 8.0.*
- symfony/flex: ^2
- symfony/form: 8.0.*
- symfony/framework-bundle: 8.0.*
- symfony/http-client: 8.0.*
- symfony/intl: 8.0.*
- symfony/mailer: 8.0.*
- symfony/mime: 8.0.*
- symfony/monolog-bundle: ^3.0|^4.0
- symfony/notifier: 8.0.*
- symfony/process: 8.0.*
- symfony/property-access: 8.0.*
- symfony/property-info: 8.0.*
- symfony/rate-limiter: 8.0.*
- symfony/runtime: 8.0.*
- symfony/security-bundle: 8.0.*
- symfony/serializer: 8.0.*
- symfony/stimulus-bundle: ^3.0
- symfony/string: 8.0.*
- symfony/translation: 8.0.*
- symfony/twig-bundle: 8.0.*
- symfony/uid: 8.0.*
- symfony/ux-turbo: ^3.0
- symfony/validator: 8.0.*
- symfony/web-link: 8.0.*
- symfony/webpack-encore-bundle: ^2.4
- symfony/yaml: 8.0.*
- twig/extra-bundle: ^2.12|^3.0
- twig/intl-extra: ^3.24
- twig/twig: ^2.12|^3.0
- vich/uploader-bundle: ^2.9
- webonyx/graphql-php: ^15.32
- zircote/swagger-php: *
Requires (Dev)
- doctrine/doctrine-fixtures-bundle: ^4.3
- phpunit/phpunit: ^13.1
- symfony/browser-kit: 8.0.*
- symfony/css-selector: 8.0.*
- symfony/debug-bundle: 8.0.*
- symfony/maker-bundle: ^1.0
- symfony/stopwatch: 8.0.*
- symfony/web-profiler-bundle: 8.0.*
Conflicts
This package is auto-updated.
Last update: 2026-06-03 04:15:51 UTC
README
Jambo API
Open-source headless CMS — Symfony 8 · PHP 8.4 · React 19
Website · Documentation · Demo · Roadmap
What is Jambo API?
Jambo API is a fully open-source, self-hosted headless CMS built on Symfony 8 and PHP 8.4. It exposes your content via REST and GraphQL APIs, ships with an AI-powered Studio to design schemas by chat, native End User authentication, a built-in MCP server for AI agent integration, and a complete admin panel — all in a single deployable PHP application.
Part of the Jambostack ecosystem alongside jambo-workbench (AI site builder, Node.js).
Why Jambo API?
| Jambo API | Strapi v5 | Directus | Payload v3 | |
|---|---|---|---|---|
| Backend stack | Symfony 8 / PHP 8.4 | Node.js | Node.js | Next.js / TS |
| Multi-project (single install) | ✅ native | ❌ one instance = one project | ❌ | ❌ |
| AI Schema Studio (chat-based) | ✅ native | ❌ | ❌ | ❌ |
| MCP Server (AI agents) | ✅ v2.0 native | ❌ | ✅ extension | ✅ plugin |
| End Users (dedicated front-end auth) | ✅ separate table + JWT | ✅ Users & Permissions | ⚠️ same user table | ✅ per-collection auth |
| Content Versioning | ✅ open source | ❌ Enterprise only | ✅ open source | ✅ open source |
| Multi-locale | ✅ native | ✅ native (v5) | ✅ native | ✅ native |
| GraphQL | ✅ native | ✅ free plugin | ✅ native | ✅ native |
| Full-text Search | ✅ Meilisearch | ❌ no native | ❌ no native | ❌ no native |
| Webhooks | ✅ native | ✅ | ✅ | ✅ |
| Audit logs | ✅ open source | ❌ Enterprise only | ✅ open source | ❌ Enterprise only |
| PDF export | ✅ native | ❌ | ❌ | ❌ |
| License | AGPL v3 | MIT | Apache 2.0 | MIT |
Feature Overview
Content Management
- 📋 Collections — flexible EAV model, 15+ field types:
text,longtext,richtext(Lexical editor),slug,email,password,number,decimal,boolean,date,datetime,time,color,json,enumeration,media,relation - 🌍 Multi-locale — native i18n on every collection (en, fr, es, ar built-in)
- 📜 Content Versioning — full history of every entry, diff & restore
- 🗂 Collection Templates — reusable schema blueprints
- 📊 Column Settings — customizable list views per collection
- 🔍 Full-text Search — Meilisearch integration with real-time indexing
API
- ⚡ REST API — paginated, filterable, locale-aware endpoints
- 🔗 GraphQL — full schema with query, cache invalidation
- 📖 OpenAPI / Swagger — auto-generated docs (Nelmio + Swagger UI)
- 🔑 API Tokens — per-project token management, role-based permissions
AI & Automation
- 🤖 AI Studio — design and modify your content schema by chatting with an AI (OpenAI, Claude/Anthropic, DeepSeek, Ollama — via Symfony AI Bundle)
- 🔌 MCP Server v2.0 — connect any AI agent (Claude, Cursor…) directly to your CMS via Model Context Protocol: exploration, content CRUD, schema management, media, end users, AI tools
- 🧠 AI Content Service — AI-assisted content generation within entries
Users & Security
- 👤 Admin Users — roles, permissions, project members, invitations
- 👥 End Users — front-end user authentication with custom fields, JWT (
lcobucci/jwt), registration, password reset - 🛡 Rate Limiter — API protection against abuse
- 🔒 Captcha — bot protection on public forms
Media & Assets
- 🖼 Media Library — file upload, metadata, VichUploader
- 🎨 Image Transform — resize, crop, format conversion (Intervention Image v4)
- 📄 PDF Export — generate PDFs from content (DomPDF)
DevOps & Integrations
- 📬 Webhooks — event-driven triggers on content changes (per-collection)
- 📧 Email / Mailer — SMTP configuration per project, email logs
- 📦 Messenger — async jobs via Symfony Messenger (Doctrine transport)
- 🚀 Deployments — deployment tracking and management
- 📊 Audit Logs — complete history of every admin action
- 🏗 Project Templates — bootstrap new projects from templates
Admin Panel
- 🎨 Built with React 19 + Inertia.js + Tailwind CSS 4 + shadcn/ui
- Rich text editor: Lexical (bold, italic, lists, links, code blocks, markdown)
- Drag & drop fields: @hello-pangea/dnd
- Charts: Recharts
- Dark mode — emerald-based design system
Tech Stack
Backend
| Language | PHP 8.4 |
| Framework | Symfony 8.0 |
| ORM | Doctrine ORM 3 + Migrations |
| Database | MySQL, PostgreSQL, SQLite (via Doctrine ORM) |
| Search | Meilisearch |
| AI | Symfony AI Bundle (OpenAI, Anthropic, DeepSeek, Ollama) |
| Auth | Symfony Security + lcobucci/jwt 5.5 |
| Media | VichUploader + Intervention Image 4 |
| Queue | Symfony Messenger (Doctrine transport) |
| DomPDF 3 | |
| GraphQL | webonyx/graphql-php 15 |
| API Docs | Nelmio API Doc + Swagger PHP |
Frontend
| Framework | React 19 + Inertia.js 3 |
| Build | Webpack Encore + TypeScript 5.9 |
| Styles | Tailwind CSS 4 + shadcn/ui + Radix UI |
| Rich text | Lexical |
| Charts | Recharts |
| UI extras | Stimulus 3, Hotwire Turbo, nanostores, sonner |
Getting Started
Requirements
- PHP 8.4+ with extensions:
ctype,iconv - Composer
- MySQL 8+, PostgreSQL 14+, or SQLite (via Doctrine ORM)
- Node.js 18+ + npm (for assets)
- Optional: Meilisearch (for full-text search), Symfony CLI
Installation
# 1. Clone git clone https://github.com/jambostack/jambo-api.git cd jambo-api # 2. PHP dependencies composer install # 3. JS dependencies & build npm install npm run build # 4. Environment cp .env .env.local
Edit .env.local:
APP_ENV=prod APP_SECRET=your-secret-here DATABASE_URL="mysql://user:password@127.0.0.1:3306/jambo?serverVersion=8.0.32&charset=utf8mb4" MAILER_DSN=smtp://user:pass@smtp.example.com:587 MEILISEARCH_HOST=http://localhost:7700 MEILISEARCH_KEY=your-meilisearch-key APP_HOSTNAME=yourdomain.com
# 5. Database php bin/console doctrine:database:create php bin/console doctrine:migrations:migrate # 6. Load fixtures (default admin + system permissions) php bin/console doctrine:fixtures:load --append # Default credentials: admin@jambostack.site / admin1234 # 7. Start symfony serve # or: php -S localhost:8000 -t public/
Open http://localhost:8000 and log in with the default credentials above. Change the password immediately.
Docker (coming soon)
docker compose up -d
API Reference
# List published entries GET /api/{project-uuid}/{collection}?locale=en&limit=20&offset=0 # Get single entry GET /api/{project-uuid}/{collection}/{entry-uuid} # Authentication Authorization: Bearer YOUR_API_TOKEN
GraphQL endpoint: GET/POST /api/{project-uuid}/graphql
OpenAPI docs: /api/docs
Example response:
{
"data": [
{
"uuid": "a1b2c3d4-e5f6-...",
"locale": "en",
"status": "published",
"title": "Hello World",
"slug": "hello-world",
"created_at": "2026-01-01T00:00:00+00:00",
"updated_at": "2026-01-15T12:00:00+00:00"
}
],
"meta": { "total": 42, "page": 1, "limit": 20 }
}
MCP Server (AI Agent Integration)
Connect any AI agent directly to your Jambo API via Model Context Protocol:
MCP endpoint: https://your-jambo.com/mcp
Version: 2.0.0 — JamboApi CMS
Available tool categories:
- Exploration — browse projects, collections, schema
- Content — list, create, update, delete entries
- Schema — manage collections and fields
- Media — upload, query assets
- End Users — manage front-end users
- AI Tools — content generation, search, versioning, image processing
Project Structure
jambo-api/
├─ assets/js/ # React 19 frontend (Inertia.js)
│ ├─ components/ # UI components (shadcn/ui, Radix)
│ ├─ layouts/ # App shell
│ └─ pages/ # Inertia pages (Content, Media, Studio…)
├─ config/ # Symfony configuration
├─ migrations/ # 32 Doctrine migrations
├─ src/
│ ├─ Controller/ # 24 controllers (API, pages, MCP…)
│ ├─ Entity/ # 28 Doctrine entities
│ ├─ Mcp/ # MCP Server v2.0
│ ├─ Repository/ # Data access layer
│ ├─ Service/ # 16 business services
│ └─ EventSubscriber/ # 6 subscribers (webhooks, audit, search…)
├─ templates/ # Twig base templates
└─ translations/ # i18n — en, fr, es, ar
Ecosystem
jambostack/
├─ jambo-api ← You are here · Symfony 8 / PHP 8.4 · AGPL v3
├─ jambo-workbench ← AI site builder · Node.js / Vite / React · MIT
└─ jambo-mobileapp ← Mobile app (coming soon)
Roadmap
- REST API + GraphQL + OpenAPI/Swagger
- AI Schema Studio (multi-provider via Symfony AI Bundle)
- MCP Server v2.0
- End Users + JWT authentication
- Content versioning
- Webhooks + Audit logs
- Meilisearch full-text search
- Multi-locale (en, fr, es, ar)
- PDF export, Image transform
- Project templates, Collection templates
- Docker one-click install
- Jambo Cloud (managed hosting)
- Plugin/extension system
Contributing
Contributions are welcome! Please read CONTRIBUTING.md first.
git clone https://github.com/jambostack/jambo-api.git cd jambo-api git checkout -b feat/your-feature composer install && npm install && npm run dev # Make your changes, write tests, then: git commit -m "feat: description" # Open a Pull Request on GitHub
License
Jambo API is open source under the GNU AGPL v3 License.
You can use, modify and distribute Jambo API freely. If you run a modified version as a public SaaS, you must publish your source code under AGPL v3.
For a commercial license (closed-source, white-label): contact@jambostack.site
Built with ❤️ · jambostack.site