diff --git a/README.md b/README.md
index d45ab85..f08efb8 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,10 @@ The platform is built on CakePHP 4 along with Bootstrap 4 and shares parts of th
The installation is documented at the following location [INSTALL/INSTALL.md](INSTALL/INSTALL.md)
+Hardware requirements:
+
+A webserver with 4GB of memory and a single CPU core should be plenty for the current scope of Cerebrate. This might increase over the time with additional features being added, but the goal is to keep Cerebrate as lean as possible.
+
# License
~~~~
diff --git a/config/app_local.env.example.php b/config/app_local.env.example.php
new file mode 100644
index 0000000..2da6b57
--- /dev/null
+++ b/config/app_local.env.example.php
@@ -0,0 +1,92 @@
+ env('CEREBRATE_DB_USERNAME', 'cerebrate'),
+ 'password' => env('CEREBRATE_DB_PASSWORD', ''),
+ 'host' => env('CEREBRATE_DB_HOST', 'localhost'),
+ 'database' => env('CEREBRATE_DB_NAME', 'cerebrate'),
+ // You can use a DSN string to set the entire configuration
+ 'url' => env('CEREBRATE_DB_URL', null)
+];
+
+// non-default port can be set on demand - otherwise the DB driver will choose the default
+if (!empty(env('CEREBRATE_DB_PORT'))) {
+ $db['port'] = env('CEREBRATE_DB_PORT');
+}
+
+// If not using the default 'public' schema with the PostgreSQL driver set it here.
+if (!empty(env('CEREBRATE_DB_SCHEMA'))) {
+ $db['schema'] = env('CEREBRATE_DB_SCHEMA');
+}
+
+return [
+ /*
+ * Debug Level:
+ *
+ * Production Mode:
+ * false: No error messages, errors, or warnings shown.
+ *
+ * Development Mode:
+ * true: Errors and warnings shown.
+ */
+ 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
+
+ /*
+ * Security and encryption configuration
+ *
+ * - salt - A random string used in security hashing methods.
+ * The salt value is also used as the encryption key.
+ * You should treat it as extremely sensitive data.
+ */
+ 'Security' => [
+ 'salt' => env('SECURITY_SALT', '__SALT__'),
+ ],
+
+ /*
+ * Connection information used by the ORM to connect
+ * to your application's datastores.
+ *
+ * See app.php for more configuration options.
+ */
+ 'Datasources' => [
+ 'default' => $db,
+ /*
+ * The test connection is used during the test suite.
+ */
+ 'test' => [
+ 'host' => 'localhost',
+ //'port' => 'non_standard_port_number',
+ 'username' => 'my_app',
+ 'password' => 'secret',
+ 'database' => 'test_myapp',
+ //'schema' => 'myapp',
+ ],
+ ],
+
+ /*
+ * Email configuration.
+ *
+ * Host and credential configuration in case you are using SmtpTransport
+ *
+ * See app.php for more configuration options.
+ */
+ 'EmailTransport' => [
+ 'default' => [
+ 'host' => 'localhost',
+ 'port' => 25,
+ 'username' => null,
+ 'password' => null,
+ 'client' => null,
+ 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
+ ],
+ ],
+ 'Cerebrate' => [
+ 'open' => [],
+ 'dark' => 0
+ ]
+];
diff --git a/config/app_local.example.php b/config/app_local.example.php
index 98b2ece..6ec0087 100644
--- a/config/app_local.example.php
+++ b/config/app_local.example.php
@@ -15,7 +15,7 @@ return [
* Development Mode:
* true: Errors and warnings shown.
*/
- 'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),
+ 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
/*
* Security and encryption configuration
diff --git a/config/routes.php b/config/routes.php
index df79969..ac1ab26 100644
--- a/config/routes.php
+++ b/config/routes.php
@@ -48,7 +48,7 @@ $routes->scope('/', function (RouteBuilder $builder) {
$builder->setExtensions(['json']);
// Register scoped middleware for in scopes.
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
- 'httpOnly' => true,
+ 'httponly' => true,
]));
/*
* Apply a middleware to the current route scope.
diff --git a/design_docs/drawio/ACL.xml b/design_docs/drawio/ACL.xml
new file mode 100644
index 0000000..897a0b2
--- /dev/null
+++ b/design_docs/drawio/ACL.xml
@@ -0,0 +1,2 @@
+
+5Vldc5s4FP01ntl96A4gRPBj4qbddtJum2ym7aMCstFWICJEbPfX7wWE+RBx6NQxE/fFRldXSDo65+pKzNAi3ryVJI0+iJDymWOFmxl6PXOcOfbgtzBsK4NnW5VhJVlYmezGcMN+UG2s3XIW0qzjqITgiqVdYyCShAaqYyNSinXXbSl4t9eUrKhhuAkIN61fWKiiyupjq7H/Tdkqqnu2LV0Tk9pZG7KIhGLdMqHLGVpIIVT1FG8WlBfY1bhU7d48UrsbmKSJGtPgn/WHd+8/3tzH7PazM19/ZlfX/77Sq/NAeK4nrAertjUCNARAdFFIFYmVSAi/bKwXUuRJSItuLCg1PldCpGC0wfgfVWqrV5fkSoApUjHXtVWfRUePzk2bMpHLgO6ZUM0RIldU7fHDuxUA5lIRUyW30E5SThR76I6DaA6tdn4NzPCgkf4J1G0D9fNcRTBXFhAFQDoeh7Ff3El4WhVPkt7nNFPm2nAOQijWYB0xRW9SUoKzBikOIfxApaKb/RibmOgGNY+1kF1dXDeq2HE/aimiVsrhQbROjbvOSO7Op+SuY6B+e31VRuUqCispOKfAXKvoBwYQKCYSePij6O/8T2ONIC6mxSMgRqAlFytJYgA2pZLBkOFVvbpPTcVTtF+yDa03lQPJADnOX7irBGwqAQ0owX02JbinpgQ0Ugk2mlIKyIB9EdHgezFnKuNyGPcZ/Ikl/JTsL1kCJHGsPCs1AmKhL10Rrvf0znBUPZydmhzwSDk4U6oBG6i/K8hPwpglM/TGWAIZifguz46Su9h9ig6E7KHk5dko6htgXdMsFQnkco7lWsgk7NhMb8k4XwguZNkOLf2ABgHYM9iYv9NWzZ2PXWwdaFN0u/jusr4WwHNs4vt8yaGZYr/wGDAfGQMm3RHn5o6otz26YZnKJg0CCHVJajsDUcA+KkvNZNpkaRKeF/cYUAo4yTIWdIEBYNXXgqGQlValb62a1xtN3rKwrQuQpW9bjYrit3Zd06ws1e0moLM/vKStJcN7Dp2jWa97+CQYTKTJbKwuY3CfCdU0dav23Uv/Rbj3Iqv3ogoH40Ulq3bT/gWimanqbZWARiTT+SoDbonJd2rP7R+v0OQqNTOb30Wl9tiD2GnIFM0fSWOekCksPdm23NLCIXt8wNjzO/3Mrb3D6rs71n5/5O/1L3bkcsCHDTHmVXKT0h4omQ0x9UN3KJn1nTvkeYcJQWeoH4KmT2fHHGlHhiC7FYCacPTyQ5B9GjHI68UgDz9LCDrze90cI0SYxwOTxS/qUGb7Y8npDZPzSN+bzOuGRfumvr6j7+d9O6Tto+R+Z71PTLtbm3bq5wxo2MU/DRwUm0+vFcGb79fo8n8=
\ No newline at end of file
diff --git a/design_docs/drawio/Authentication.xml b/design_docs/drawio/Authentication.xml
new file mode 100644
index 0000000..e9c0a4c
--- /dev/null
+++ b/design_docs/drawio/Authentication.xml
@@ -0,0 +1,2 @@
+
+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
\ No newline at end of file
diff --git a/design_docs/drawio/advanced_api_keys.xml b/design_docs/drawio/advanced_api_keys.xml
new file mode 100644
index 0000000..5c73c49
--- /dev/null
+++ b/design_docs/drawio/advanced_api_keys.xml
@@ -0,0 +1,2 @@
+
+7VrZcts2FP0azaQPyZAESVOPiWw3M10mU3fapm8QebnYEMGAkCXl6wuQgLhAC5XIpuXGDx7i4mI7OAf3gtQEzRbrnxku0t9oBGTiWNF6gq4njjP1fPFfGja1wbet2pCwLKpNdmO4y76CMmq3ZRZB2XHklBKeFV1jSPMcQt6xYcboqusWU9IdtcAJGIa7EBPT+ncW8VRZbctqKj5ClqRq6MBTFXMcPiSMLnM13sRBcfVXVy+w7kv5lymO6KplQjcTNGOU8vppsZ4BkdBq2Op2t3tqt/NmkPMhDbzb4vfN9f2/+V8B+/rn+y8eul+8Vb08YrIEvYxqsnyjAYJI4KWKlPGUJjTH5KaxfqhAADmMJUqNz6+UFsJoC+M9cL5Rm4+XnApTyhdE1dZjyoH2rk2ZSrpkIRxYkJo/xywBfsDP3e6AIDbQBXC2Ee0YEMyzx+48sKJYsvVrYBYPCukTUHcM1P+AL0souTCuMsEbMeaSpw+wMXeDEKEMifoqzTjcFbiCYyW0uQvTR2Ac1odRNVHQDVxFXSXtQBVXLZ1odqctiehmZ8fN9l8bXd2BdLW9MfnqGrDfrDnDoeRrnLGKt1icg5IMPhHr+DBn4imRT7iqdeUJnmLZBlhpbJo4Gwv5KCDEhAChCcML0bgAloklAOvXfWoqjgkhztag405dJmRGCWXV0CjCEMShsJec0Qdo1fhhAPP4aaRkXw3UEnoqLTmv7uj3B2qpFX1H0JJ5hN3WOcStAT9L6WK+LIdQfARKI6dLacc3KR3sYLT3VIye7oiqZUFzES2/OYr2kfUgiNxdyAbOHPn+eZC9CrrIus7ogdc6gK3lWvbZEI6DEMKd3J0HnutZZ+Lu9MUhHLy247hOWQacx/6Yx7GeZQv3O8AsbOXgZXWtZGZqo1Mf0s1x/ofpjTMdkN64z5remPt64XrSx9Hx/AaNKSjHDBUpLqWc3sxDtin4TzvuCHsuuyPqJo5jZ3ccivy5750p0rt+TzfTsXWDzO27dN2goboZNRDpabaAn9GFXLCcO5UrVXGprx7B8xcVcsaRTuCNrRzzrd6lK2fojRrt2apnUs4zXKmfh9O+1wsHY1+pHfNObXI6j97L7zCiFIpMuMzCLpKwzvg/ks/vPFX63Kq5XiuqV4WNLuRi9q1Gsvi5Xdc0q0q63Rjkt/e8TmrtmXdgzwZrRI3wiWY5byjj9d7CuH0u1AtVrRo6mB1d9Tqyeh3VQBgdib3Hm5ZbIR3K/RP2e1cF/dpo37x8dJq/d2L/fX+ETvQ/0r/rHfQXDzWCjUi3HPqOWGQmExcei5D+NnxMjtMxQ5GeZQv3X+S9xoJ1kTG4wJAUWC8sJCHzY9TpIekbw4sOZXYrkDVhbXcoG0MDP0LSSSFp2puwre4S++bV9z8WAvrreJkhY8gLsydI9c6ojz339wtjfX/3t98mzsx65I/KSlFsfvtUuze/L0M3/wE=
\ No newline at end of file
diff --git a/design_docs/drawio/authentication_with_plugins.xml b/design_docs/drawio/authentication_with_plugins.xml
new file mode 100644
index 0000000..a6c3227
--- /dev/null
+++ b/design_docs/drawio/authentication_with_plugins.xml
@@ -0,0 +1,2 @@
+
+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
\ No newline at end of file
diff --git a/design_docs/drawio/custom_auth.xml b/design_docs/drawio/custom_auth.xml
new file mode 100644
index 0000000..01eef31
--- /dev/null
+++ b/design_docs/drawio/custom_auth.xml
@@ -0,0 +1,2 @@
+
+7Vtdd9o4EP01eWyPJX+AHxOSdNNt92SXttnum7AF1lZYrCwC9NevhGVsSwacUnAa8pJjjSRLmpk7dzQmF+5gunzH0Sz5yGJML6ATLy/c6wsIQz+Qf5VglQsC4OSCCSdxLgKlYEi+Yy0shs1JjLPaQMEYFWRWF0YsTXEkajLEOVvUh40Zra86QxNsCYYRorb0gcQiyaV92Cvlv2EySYqVQRDmPVNUDNYnyRIUs0VF5N5cuAPOmMifpssBpkp3hV4e7lYP9MO34N37P7P/0Oer3z/98eVN/rLbp0zZHIHjVPzwq72rbPi4/L70k7vVP8PZdToYfHnj569+RHSu9aXPKlaFAnEs9ambjIuETViK6E0pveJsnsZYLePIVjnmA2MzKQRS+C8WYqWdA80Fk6JETKnuzddUCxk223NgPS5jcx7hHeNc7XeIT7DYoQ1vY1WJBsymWPCVnMcxRYI81jeHtF9ONuNK3csHrf4nWNm1THF3+dGyRqlrpbhFQgQeztD69AuJ37pexywVWulAHuxqQlGWaTNlgrNvG0io0Rv/Vt1jQumAUcbXy7rj8RhG0WZapScORoGMEYUR29rsEXOBlxWN2mrXvTDQ+NMBCITaaRclnEGB0aQCZc853FKNbmJb6hcHTeMpHRs02/32BKDZtcmKKT5nmNvmoFTyDd6PmC3O2Vat7Z24oMfOnLh/Fk7stYz8vS6d2LNMcRnHKiWaZ4JN1w6B4gavlgF7ph6lthClmLIJR1Op1BnmRO4Mc7PvvuzYSx1kiYtsDhzAB0eAUs+vQQn2bSiFp0QSOA8o9VpCKewSSj3LFAPM8YgjgaV4UABKai9RZ15lAk+fS44VI9wfN2IqiPp4ND4hPblB1/QE7KD4EkEVtgQV6DTLAjasztoYQZfGCC1b5Cmvg5ckE3K1WzugJWw6mmdtWP/5RKQ6y3t+Q0QCDREpOFpEApbi/8LZjKXyXvHD9w1T4T7ux16Twvtw5AbHTKv6dQbwm/R9WgZ4cbWpHZG9TdTZYr8TUYBd9BjIzIczeblQwQdFgrD0NZUyceR1nknB8yBvELTEEeyUvYttVqxxz9kjySR6SDpRKkrRiCpNvwge94ybxTPgcTuBusUiUvfBeVPtsMMqS4d28404BnudxzG71mvHsTS+VN8MZStS5EGiur6lRvjqbxXE3vpF82u173qpI1zeWhWtJRGVabL1tdJTTlKNYs6zCXhgS0WmYkm/wZCFrHVc1CvcMyLPt3EkNzQSS9NB8oPqWaWPWC/yPCOShMaLckVYL5IOgVaVYTM1INu+YR8YNw/g7NxXYO6rPl4+5DsoPX9jgwPAAH8iGEAVCs5b6LdFQxULG2R0hIaGy/tTPle9gqF5Hd+ggXA3GKzxjn8CMDTcTTjOS745pTtEXk2cSin4lePXVG1Ufd3OOb5N1XdfWGvkarAzOm3LC5w9kfDYUQ22LQ68EIo3LwvukaKauc4eindhFxTfpv7VEgugxtS93VT9DMBw0K+44CvFPwkMBgtA6O/el8kazp6UwPy26JwCPHaZpSzWO55T+NzhJftxP8LNv4QY9X2VDh2Rv/36TaX7mj20fwrxic/tfEsqQtS1WtdeylJsqFqLECWTVIU7qbh19qXUSiJEL3XHlMQx3WbGehXzWHaBJl001IC9BrPAo5nFLnmdoVl8MxCFHZulyG6qlUhEGz4nvmy7mIzZOVxc+0vvOdrFN8LYpv3z7SKb5f9R5DlA+c8o7s3/
\ No newline at end of file
diff --git a/design_docs/drawio/simple_authkey.xml b/design_docs/drawio/simple_authkey.xml
new file mode 100644
index 0000000..68b4c8d
--- /dev/null
+++ b/design_docs/drawio/simple_authkey.xml
@@ -0,0 +1,2 @@
+
+3VjJkpswEP0aH5MCBDZznHiWHDJVU+NUzXKToQ2KBSJCjCFfHwHCLMKOk9hxyj646NethddPLYkJmkf5PcdJ+MB8oBPL8PMJuplY1pUzlf8lUNTA1DRqIODEryGzBRbkByiwCcuID2kvUDBGBUn6oMfiGDzRwzDnbNMPWzHaHzXBAWjAwsNUR5+JL0KFmobROj4DCUI1tOsoxxJ764CzLFbjTSy0qn61O8JNXyo+DbHPNh0I3U7QnDMm6qconwMtqW1oq9vd7fBu580hFoc0YMnb/RXevM1o/vDy6K6f761PH1Ty3jHNoHmNarKiaAgCX/KlTMZFyAIWY3rbop8qEqAcxpBWG/OFsUSCpgS/gRCFSj7OBJNQKCKqvPWY5UA7301BKcu4B3teqJEQ5gGIPXHWNgNS2MAiELyQ7ThQLMh7fx5YSSzYxrU0ywfF9G+wbmqsP8H3DFIhwQ2RupFjZiJcQ6Fng1K5MkrWNyERsEhwRcdGrs0xTt+BC8j3s6qz0DSwlXTV0naVuemsk0bdYWeJNM2Oztvs0tRqHahWdE61WhrrC8DcK1WapcDTquryrmbL4lf6B7mRFTApHyVTmFKgLOA4koQmwImcKvCh77F1/EruK5JDs7ucSP7m7ED9o1Pp3700/aMD9W+fU/9IY/2u3vXvNPZ5yKJllv6b6jzty9NydHm6I+p0TqXOq0tTp32gOp1zqtPWWJ+zWHAmi2hVkz1BWKwLdUuzeZajBLLPfZZwNN6eIE1YLM9Wf3zmWhFK54wyXrVDvgOub0s8lflYQ8fjWks0nZ6GWhudm9rmajfKrWEb5tEYXrkeeN4Yw0vXsR3jOAwj479jWL9B6JzG/nV5P5aWR3GaEq9PJeREvHSeX8ua+9FR1k2uSnBlFI0hK0vx0gaW5mvX1zarrKbdGY4MpjGe007OnD2748HFW43wyEgsWsk4Vl8yznDXrd9Ttere2ocdzQYdGYOOaiK0jmTqcdEJS8qAdPeE0fA0MXMGKq17bDW75fQvZKxfLb7yTC/AcumKvnj76z1mMQyKg4IwJUFcrgCps+oaURYC4mF6rRwR8X26q/D0DyPHqNUDlreVpaNKe0SV1skKycjhFtORPfBiUmAdcGw+Ugqk2X7eq9dM+wkV3f4E
\ No newline at end of file
diff --git a/design_docs/drawio/sync.xml b/design_docs/drawio/sync.xml
new file mode 100644
index 0000000..18bdd75
--- /dev/null
+++ b/design_docs/drawio/sync.xml
@@ -0,0 +1,2 @@
+
+7Zpdc5s4FIZ/jS/rAQQYXzZu0+5HG8+6O9v2TkGKrQ0grxCxvb++kpH4kPAkTTDjMrnxoBf5gI4Oj44OTMAi3X9gcLv5RBFOJp6D9hPwbuJ58yAUv1I4lELoOqWwZgSVklsLK/I/VqLuVhCE81ZHTmnCybYtxjTLcMxbGmSM7trd7mjSvuoWrrElrGKY2Oo/BPFNqUaBU+sfMVlv9JVdR51Joe6shHwDEd01JPB+AhaMUl4epfsFTqTvtF/K/12fOFvdGMMZf8of7sn36A+08ILPcR7u/fSu+L56o6w8wKRQA/7022o58cJE2Ly6ZeJoLY/UEPhB+0WMZisP40NCMoQZEJ12G8LxagtjeWInwkFoG54mouVKa7QQPdGft5UA4/s1k+pNwYUZrPS8jAI3qC7cHKW+Zcw43jckNeoPmKaYs4Poos/qKTkY7V09oaGSNs25nCsRqhhaV6ZrN4sD5emf8LpneX2BGb5lkONf2dH+/NIcDSxHW/7FGXorOSFdnMA8J3HbmXhP+Fd5PHUAUO1vou1M3Zmv2u+kAxzdODQaS8yIGApmWsvEsL42G9+ajdrQsSUtBd400IJp7eSc5bRgMX78ueeQrTF/PFIxalHSjoDGDAcdM6w1hhPIyUObrV2zrq6wpESMrA4w40muFhNtohy3+leThaahoG0oCA1DpWMsQ8cgrIb9/LgMrLj8C/9X4FzeonzK91aYikeQtwMz54ze4wVNqAyHjMqn+uqOJIkhwYSsMxndIkhk5FzJB5qIFe6tOpEShORlOrHCSpY8FnBPh4QXGZDwbEhU4GjGkHcuSIT9QcKZOu6sBQkwfwEk3BYkag50YMLpnxHeExnhXjYjnL4YEQzLiJkVlr+vbj4fHZRvaZbjo0uFR4UdjtN8xMgABjJmHchwuxKLcyFj3mteEbSIEQ6QVLjgNac4wYsg6osXYFhe6GA/lVSQB4IKKM3gBKdidkdMDGAQw+vYiVSJxyBJhmvvtJ+NjDeOtReZBeAF2JjOI9BONaIwek02ngGPWV/wMAPx3PCwSxKns40mS8aeevgGSMIOkPiDgsS3Zmr8JTu/I+MbtpLk2lv20u2/rpPNct0FOLnHrfjI6nX+U9fH4KIXyHlf2fV86Oza3o4vb1ZfhKLWSXr7r3z/JF9PTST8ryFCI14XjSqeH3Wsi4NW8dyoP3aMqoynifA4OvzLRkdfufV86NzarhYd96MOzeT8FXGMc5FCC+MOcDytw4RhiKS7RWzlY96sV2U6vffxO1gCuhKRs72ftUspL8lDxlLfG0sOYhbynw0S89XCmUHi2TWk5d9fGikHRkRc+JqMOPEwK3tB17uAQSt7mg2vlb2R5x9+T9iIzP3zubFhfwXTlX+MlRhmCS8EHcToqYQnmvUHfeX81V9Fgvc/AA==
\ No newline at end of file
diff --git a/templates/Users/login.php b/templates/Users/login.php
index f65ced8..d787594 100644
--- a/templates/Users/login.php
+++ b/templates/Users/login.php
@@ -1,5 +1,5 @@
Html->image('logo.png', ['alt' => 'CakePHP', 'class="form-signin"']);
+ echo $this->Html->image('logo-purple.png', ['alt' => 'CakePHP', 'class="form-signin"']);
echo '
';
echo $this->Form->create(null, ['url' => ['controller' => 'users', 'action' => 'login']]);
echo $this->Form->control('username', ['label' => false, 'class' => 'form-control', 'placeholder' => __('Username')]);
diff --git a/templates/element/genericElements/SingleViews/Fields/genericField.php b/templates/element/genericElements/SingleViews/Fields/genericField.php
index 59fc1fe..21e23a7 100644
--- a/templates/element/genericElements/SingleViews/Fields/genericField.php
+++ b/templates/element/genericElements/SingleViews/Fields/genericField.php
@@ -1,5 +1,5 @@