Repositories

The dashboard your procurement team actually uses.

The frontend turns raw engine output into coverage, exposure and payback you can act on — per database, per server, per contract. Business users read the answer, not the SQL.

One monorepo today, three repos tomorrow.

The frontend and backend currently live together in the GitHub monorepo danimoya/LMSCloud — frontend root frontend/app (Laravel 8.83.29, PHP 7.4-FPM) and backend root backend/current (PostgreSQL 14 + PL/pgSQL). The three-repository split below is the intended publishing layout, not the current state.

Monorepo: danimoya/LMSCloud frontend/app · backend/current Collector: planned
Status · stated honestly

Frontend and backend share one repository today.

Both components live in the GitHub monorepo danimoya/LMSCloud — the frontend under frontend/app and the backend under backend/current. The collector is not present on this host and is not in the monorepo history; its lmscloud-collector repository does not exist yet. The names lmscloud-frontend, lmscloud-backend and lmscloud-collector describe the intended publishing split, not three independent projects shipping today.

Today: one monorepo lmscloud-frontend + lmscloud-backend lmscloud-collector: planned
The components

Read them for what they are today.

The frontend is the most developed component by a wide margin, the backend is a mature SQL engine, and the collector is a planned repository.

lmscloud-frontend Most developed

The part of the platform people actually touch. A thin Laravel layer over the SMART-DB engine: controllers call PostgreSQL functions through DB::select(), and the views render coverage, exposure, payback and topology. No licensing logic is computed in PHP.

Capabilities in the current build:

  • Database module — overview, granularity, ROI and cloud views
  • FMW module with automatic mapping
  • Server comparator + ROI
  • Payback console
  • Contract management + exposure reports
  • Virtual Asset Manager
  • Alerts + severities
  • Price-list browser
  • Topology explorer

Recent development

  • 2026-02-07 — upgraded Laravel 5.2 → 8.83.29.
  • 2026-02-11 — fixed SQL injection across controllers and models.
  • 2026-02-13 — v1.3: introduced the service layer plus the GlobalConfig, PriceList and Topology controllers and the ShareUserContext middleware.
  • 2026-02-15 — fixed the VAM null identifier, payback-overview string arithmetic and sidebar layout.
  • In progress (uncommitted)UpdateDatabaseRequest validating ~30 Oracle opt_* flags; LicenseDataService::fetchByLocationsBatched() to remove an N+1 of rdb()/rfmw() calls; LocationTreeService caching via LMS_TOPOLOGY_CACHE_TTL; PDO ? placeholder fixes in the PriceList/Topology controllers; Secure middleware honouring X-Forwarded-Proto.
Laravel 8.83.29 PHP 7.4-FPM Blade Bootstrap 3 + AdminLTE jQuery + DataTables Select2 vis-network
frontend/app/ ├── Http/Controllers/ ~21 controllers ├── Services/ 5 services ├── Models/ 11 Eloquent models ├── Http/Middleware/ 7 middleware · incl. Secure ├── resources/views/ ~65 Blade views └── routes/web.php 100+ routes views/ ├── dashboard/ databases/ · servers/ ├── fusiomiddleware/ payback/ · contracts/ └── topology/ pricelist/ · globalconfig/

Real stats: DatabaseController, FusionMiddlewareController, ServerController, PaybackController, ContractController, VirtualAssetManagerController, PriceListController, TopologyController, GlobalConfigController, ReleaseNotesController, AlertController and more. Services: LicenseDataService, LocationTreeService, FmwMappingService, MetricService, SessionContextService.

Repository ↗ ★ —frontend/app
lmscloud-backend Mature engine
PostgreSQL 14PL/pgSQLDocker

backend/current — the SMART-DB engine. 49 ordered SQL files (001.a tables → 001.r security → 002.* reference → 00Z.* demo), 25 tables and 80+ PL/pgSQL functions (the docs reference 130+ composed). Custom types trr, trtree, trtreecost, trdbgcost, trwrt and trrelnotes, materialized views db / fmw_view, plus contract triggers.

backend/current/ ├── 001.a.tables.sql 25 tables ├── 001.r.security.sql roles · isolation ├── 002.*.reference.sql price lists · core data ├── 00Z.*.demo.sql two demo tenants └── functions/ 80+ PL/pgSQL routines
Repository ↗ ★ —backend/current
lmscloud-collector Planned
BashBuilt-ins onlyAES-256 output

Planned / placeholder — this repository does not exist yet. There is no collector on this host and none in the monorepo history. Historically it was a single ~357 KB bash file LMSCloud for Linux, AIX, HP-UX, Solaris and Cygwin, using OS built-ins only, with AES-256 output and the commands collect, upload and daemon.

lmscloud-collector/ planned └── LMSCloud single file · built-ins only collect | upload | daemon platform matrix: Linux · AIX · HP-UX · Solaris · Cygwin
No repository yet placeholder
The dashboards

The frontend, screen by screen.

Placeholder frames — the real screenshots are pending. Each one names the business outcome and the matching technical view.

placeholder frame · dashboard
DashboardCoverage, exposure and payback in one landing view. dashboard/
placeholder frame · databases
Databases overview & granularitySee every instance, then drill to the detail. databases/*
placeholder frame · roi
ROI comparisonContract vs deployed, ranked by financial exposure. servers/ · roi views
placeholder frame · payback
Payback consoleFrame a migration or consolidation in payback terms. payback/
placeholder frame · topology
Topology graphSee how systems and software depend on each other. topology/ · vis-network
placeholder frame · contracts
Contract exposure reportWalk into renewal holding the evidence. contracts/ · exposure
Maturity

How far along is each piece — objectively.

Line counts and module inventories, not marketing. The frontend leads; the engine is solid; the collector is still to be built.

lmscloud-frontend Most developed

The most developed component by a wide margin, with a rich Bootstrap 3 / AdminLTE UI.

~21 controllers 5 services 11 models 7 middleware ~65 Blade views 100+ routes

Bootstrap 3 + AdminLTE + jQuery + DataTables + Select2 + vis-network (topology). Thin controllers calling PostgreSQL functions via DB::select().

lmscloud-backend Mature engine

A complete SQL engine with a disciplined file order and real data-model depth.

49 SQL files 25 tables 80+ functions 6 custom types Materialized views Contract triggers

Ordered 001.a001.r002.*00Z.*, with types trr/trtree/trtreecost/trdbgcost/trwrt/trrelnotes.

lmscloud-collector Planned

No repository, no build and no UI yet — only a documented historical design.

Single-file Bash Platform matrix AES-256 No UI yet

Historically one ~357 KB file covering Linux, AIX, HP-UX, Solaris and Cygwin. Publishing it as lmscloud-collector is intended, not done.

Quickstart

Bring it up from the monorepo.

One clone gets you both components today. The collector step is annotated because that repository is still planned.

Business view

Evaluate without touching production

A local sandbox gives procurement, finance and compliance the same views a real deployment produces — with none of the operational risk.

  • Bundled PostgreSQL 14 + PHP 7.4 — no versions to reconcile with your estate.
  • Two demo tenants pre-seeded by 00Z.* — realistic coverage, exposure and payback data on first boot.
  • View coverage, exposure and payback in the UI — the same dashboards the frontend team operates.
  • Your data stays in your perimeter — self-hosted, no external service and nothing leaves the host.
  • Docker + Docker Compose
  • No Oracle licence needed for the demo
  • Sandbox only
What you get · sandbox scope
2
Demo tenants pre-seeded
via 00Z.*
14
PostgreSQL version
bundled
7.4
PHP version
FPM · bundled
0
Bytes leaving your perimeter
self-hosted

The point of the sandbox is a defensible first look — not a production cutover.

Technical view

Clone, compose, query

Both components come from the single monorepo. The collector step uses the planned repository's historical single file — adjust once lmscloud-collector is published.

  • Git
  • Docker + Docker Compose
  • PostgreSQL 14 (bundled)
  • PHP 7.4 (bundled)
  • A shell on the target host
# 1 · clone the monorepo (frontend + backend today)
git clone https://github.com/danimoya/LMSCloud
cd LMSCloud

# 2 · bring up PostgreSQL 14 + PHP 7.4-FPM
docker compose up -d

# 3 · run the collector — lmscloud-collector is a *planned* repo
#     today, use the historical single-file collector:
# ( cd lmscloud-collector && ./LMSCloud collect ALL ALL )

# 4 · query the SMART-DB engine
psql -h localhost -U u1 -d lms1 \
  -c "SELECT * FROM u1.rdb('C', :tenant, :location);"
Contributing

Extend it where it counts.

Issues and pull requests are welcome against the monorepo. The most valuable contributions extend Oracle coverage, ship a new ROI-* module, or help stand up the collector repository.

Governance

Open process

Public issues, reviewable SQL, versioned modules and a documented release cadence.

Security

Data stays home

Self-hosted by design; the collector encrypts output before transport and leaves no footprint.

Licence

Permissive placeholder

Repositories reference Apache-2.0 as a placeholder pending the final open-source licence.

Roadmap · business view · what each release means for your Oracle strategy
  • v1.xDefensible current state. Coverage of Oracle Database, Fusion Middleware and the OS layer behind every effective processor count — an audit file you can stand behind.
  • v2.xCloud and Exadata what-if. Model migration scenarios in financial terms before committing spend, not after.
  • v3.xBeyond Oracle. The same evidence model applied to the rest of your software estate, on your terms.
Roadmap · technical view · release plan and engine work
  • v1.xCore engine. ROI-DB / ROI-FMW / ROI-OS, agentless collector, the typed result set (trr, trtree, trdbgcost) and the modular file ordering.
  • v2.xModule registry + compliance. Pluggable ROI-* registry, ROI-CLOUD and ROI-EXADATA, plus rdb_compliance() and OEM-pack detection.
  • v3.xMulti-vendor. Additional software vendors beyond Oracle on the same schema-native engine.

Talk to us about a defence file.

Clone the monorepo.

Bring your Oracle position into one console: coverage, exposure, contracts and payback, backed by evidence rather than estimates.

One repository gets you the Laravel frontend and the PostgreSQL engine. The collector is the next repo to land.