exceedone/exment
Exment is an open-source, self-hosted, Laravel-based no-code/low-code platform for building custom business apps, databases, and workflows. It provides Excel-like tables, forms, permissions, dashboards, and automation, enabling teams to manage data and processes without coding.
Architecture fit Exment is not a library you compose into an application — it is a full Laravel application shipped as a package. It expects to own routing, authentication, migrations, file storage, the queue/scheduler, and an admin UI. It provides a no-code/low-code data platform: table and column designers, custom views, permission roles, approval/workflow, CSV import/export, and a REST API.
That inverts the usual integration direction. You adapt your system to Exment, not the other way around. It fits well as:
It fits poorly as a component inside a mature domain model that already owns auth, users, and schema.
Integration feasibility
composer require exceedone/exment plus the install command gets a working demo quickly. The real cost sits elsewhere: unifying identity (Exment carries its own users/roles/policies), avoiding route-prefix and published-asset collisions, and deciding database ownership. Extension surfaces are real but constrained — custom column classes, composer-based plugins, event hooks, and the REST API. Integrate through the API or a plugin; never write directly against its internal tables.
Technical risk
Key questions
Stack fit Laravel 9–11 / PHP 8.1+, MySQL or PostgreSQL, standard queue + scheduler. Teams already on Laravel ramp fast because it is the same idioms — Eloquent, Blade, Artisan, policies. It does not fit a headless/API-only architecture without a wrapper.
Containment model (the core decision) Run Exment as a separate deployable with its own database, integrated to the core product via its REST API and outbound events/sync jobs. This contains the GPL boundary, isolates upgrade blast radius, and keeps its schema out of your migrations. In-process embedding is defensible only for internal, non-distributed tools with no existing auth to reconcile.
v6.2.15 strengthens this argument materially: an improper-authentication or improper-access-restriction flaw in an in-process embed is a flaw in your application's auth boundary, not a neighbouring system's. Containment turns "attacker got into the low-code tool" into a scoped incident instead of a full compromise.
Migration path Treat it as additive: net-new data surfaces (master data CRUD, approval flows, asset inventories) rather than a rewrite target. Populate via custom-table seeding plus CSV/API import. Do not port existing Eloquent models into Exment's schema — that path leads to permanent dual-write.
Compatibility
Pin the Exment major that matches your Laravel major, and pin to the latest patch within that major — 6.2.x at >=6.2.15 as the floor. Lock both in composer.json and maintain a tested matrix. Verify the route prefix, config/exment.php publishing, middleware stack, and public-disk/file handling against your existing app before committing — the directory-traversal fixes land squarely in that file-handling area, so verify attachment paths and public-disk exposure explicitly rather than assuming defaults are safe.
Sequencing
Maintenance You inherit an application, not a dependency. Budget a standing allocation for Laravel-major upgrades and regression testing of custom columns/plugins, plus a separate security-patch lane with a short SLA (target: emergency patch within days of a JVN advisory, not the next sprint). v6.2.15 is a positive signal on responsiveness — eight coordinated fixes in one release suggests an active disclosure process — but it also sets the expectation that this cadence continues, and each patch release needs a smoke test over custom columns, plugins, file attachments, and import/export.
Support Documentation and community are Japanese-first; English coverage is thinner than the feature surface, and security advisories arrive as JVN identifiers in Japanese-first release notes. Assume self-support for edge cases, and treat the commercial support tier as the mitigation for anything business-critical — it also improves your odds of advance notice on vulnerabilities. Expect 1–2 engineers to become the de facto owners; that is a real bus-factor risk, and it now includes security-response ownership, not just feature work.
Scaling Comfortable for departmental workloads: tens of concurrent editors, hundreds of thousands of records. Not a high-throughput transactional core. Custom-field storage is effectively attribute-per-row, so heavy reporting and aggregation will strain the database — plan read replicas or an export-to-warehouse path for analytics. Server-rendered, session-bound UI limits horizontal scaling versus a stateless API tier.
Failure modes
Ramp-up Engineers: about a week to be productive — it is plain Laravel. Business users: roughly half a day of training to create their own tables and views, which is where the actual ROI lives. Invest more in governance onboarding (roles, permissions, audit) than in developer onboarding; permission mistakes are the most common operational incident in low-code platforms, and the v6.2.15 access-restriction fix means the permission layer itself deserves an explicit review pass, not just user training.
Verdict Viable and fast for internal data-management tooling on a Laravel stack, with the separate-deployable/API-seam model. Two hard gates, both resolved before the spike: the license question, and a security posture gate — minimum version 6.2.15, network-level restriction, and a named owner with a patch SLA. The release fixes real exploitable flaws without changing feature scope, so it does not alter the architectural verdict; it does raise the ongoing operational cost of ownership and argues firmly against in-process embedding.
How can I help you explore Laravel packages today?