| Minimum | Why | |
|---|---|---|
| WordPress | 7.0 | |
| PHP | 8.3 | PHP 8.2’s security support ends on 31 December 2026 |
| Database | MariaDB 10.3 | The ceiling of IVK’s current host |
JSON_TABLE, INSERT … RETURNING or SKIP LOCKED.DECIMAL as a float, lacks
LAST_INSERT_ID(expr) and MariaDB’s collations, and aborts the whole
transaction on a failed statement.utf8mb4_hungarian_ci on our text
columns; no PHP-side collation or stored sort keys. It sorts ö/ő after o and
ü/ű after u, which WordPress’s default collation gets wrong (Öröm before
Ottó). Known deviations, accepted: it has no digraphs, so cs, dz, dzs,
gy, ly, ny, sz, ty and zs sort as two letters (Csaba before Cukor and
Czakó, Zsolt before Zuhany), doubled forms are not expanded (Asszony before
Aszalós), and Adam and Ádám tie. Gy, ny, sz and the like mostly come out
right because y and z sort late. Every MariaDB collation has these
deviations; sorting stays indexable and free.utf8mb4_hungarian_ci, o ≠ ö and
u ≠ ü, so search conditions use an accent-blind collation
(utf8mb4_unicode_520_ci) in the predicate. Searches stay within one event,
so their cost is bounded.CHARACTER SET utf8mb4 and its
collation explicitly. Defaults differ: 10.3’s server default is latin1, and
a table without COLLATE gets the character set’s default collation, not
the database’s.DECIMAL is clamped and a bad number becomes 0 with only a
warning, and MariaDB 10.3 accepts invalid JSON. Values are validated in PHP
before they are written.JSON_ARRAYAGG, JSON_OBJECTAGG.FOR UPDATE on the event row is the
first read of the submit transaction. A plain read before it would let a
later count reuse an old snapshot and overbook the event.EXPLAIN; a query that examines
rows outside its own event fails the build
(Foundation).WP_Error, Site
Health, the Requires Plugins header, the privacy export and erase tools,
post passwords.plugins/
kalaka/ core plugin
kalaka.php
composer.json Kalaka\ → src/
src/<Module>/… Kalaka\<Module>\…, public API in Kalaka\<Module>\Api\…
tests/unit/
tests/integration/
kalaka-woocommerce/ an extension plugin, same shape
composer.json development tools only
package.json development tools only
docs/ these pages (GitHub Pages)
internal/ git-ignored: drafts, spikes, source material
composer.json; the root composer.json and
package.json hold development tools only.@wordpress/scripts in each plugin, for blocks and the
admin app.wp_json_encode, wp_remote_get).Kalaka\<Module>\Api\… namespace.roave/backward-compatibility-check).tests/unit runs without WordPress, where code is naturally free of it
(e.g. money arithmetic).tests/integration runs with WordPress loaded, on MariaDB, in wp-env.
Most tests are integration tests.wp kalaka seed command. It creates WordPress users
per role with WordPress functions, and our own data (realistic anonymized
registrations) through our use cases.