Expressa
Data-driven API middleware with an admin UI for Express.js
Expressa is a Node.js/Express middleware that creates data-driven REST collection APIs from JSON Schema and exposes a Django-like admin interface for creating collections and managing permissions. It is designed to be embedded into existing Express apps and supports per-collection storage backends (MongoDB, PostgreSQL, or JSON files). (github.com)
Key Features
- JSON Schema-driven collections: define collection schemas using standard JSON Schema and edit them via the admin UI. (github.com)
- Built-in admin interface: browser-based admin for creating collections, roles/permissions and managing data (admin UI rebuilt with Vue.js in a past release). (npmjs.com)
- Pluggable storage per collection: supports MongoDB and PostgreSQL drivers plus file-backed JSON storage for versionable data. (github.com)
- Standard REST endpoints generated for each collection: list, get by id, create, update (including mongo-style update), delete, plus schema endpoints. (github.com)
- Middleware-first design: installs as Express middleware so it can be mixed with other Express routes and middlewares; supports event listeners/hooks to modify/stop requests and responses. (github.com)
Use Cases
- Rapid CRUD backends: quickly add collection-based REST APIs and an admin UI for internal tools, prototypes, or admin dashboards. (github.com)
- Decoupled frontends: expose JSON-schema-backed endpoints so frontends can reuse schema for forms and validation. (github.com)
- Small CMS or content stores: manage content collections with per-collection storage and role/permission controls for editorial workflows. (github.com)
Limitations and Considerations
- Data types: only standard JSON types are supported natively; dates must be stored as strings (ISO 8601) and there is no built-in advanced date type handling. (github.com)
- Feature gaps noted in project roadmap: automatic GraphQL support, JWT token expiration handling, cookie-based auth, and file-upload features were listed as roadmap items (indicating they may be absent or limited). (npmjs.com)
- Small ecosystem and low npm usage: the project is community/open-source with modest download numbers and community size; consider maintenance and support requirements for production use. (npmjs.com)
Expressa is a pragmatic option when you need a schema-driven REST admin layer that plugs into an existing Express app. It emphasizes simplicity and extensibility (hooks/listeners) while relying on common Node.js stacks (Express, MongoDB, PostgreSQL); evaluate the listed limitations and project activity before picking it for critical production workloads. (github.com)
Categories:
Tags:
Tech Stack:
Similar Services
Strapi
Open-source Node.js headless CMS for REST and GraphQL APIs
Open-source headless CMS for building customizable content APIs with an admin UI, supporting REST/GraphQL and multiple databases.

Payload
TypeScript headless CMS and app framework for Next.js
Payload is an open-source, TypeScript-first headless CMS for Next.js with an extensible admin UI, auth, drafts, access control, and APIs for building fullstack apps.

Directus
Headless CMS and instant APIs for SQL databases
Directus turns any SQL database into a headless CMS with an admin app, role-based access control, and instant REST and GraphQL APIs for custom applications.

Saleor
GraphQL-first headless commerce API for composable ecommerce
Open source, GraphQL-native headless ecommerce platform with a composable API for products, checkout, payments, and multichannel order management.

Wagtail
Django-based content management system focused on flexibility
Wagtail is an open-source CMS built on Django and Python, offering an editor-friendly admin UI, flexible content modeling with StreamField, and optional headless APIs.

Spree Commerce
Modular, API-first eCommerce platform built on Ruby on Rails
Open-source eCommerce platform for B2C and B2B with a modular architecture, headless APIs, and support for multi-store, multi-currency, and extensibility via extensions.

JavaScript
Express
npm
Node.js
Cypress