{"id":1373,"date":"2026-02-15T20:14:33","date_gmt":"2026-02-15T20:14:33","guid":{"rendered":"https:\/\/docs.ai.drawconclusions.org\/?page_id=1373"},"modified":"2026-02-24T12:45:55","modified_gmt":"2026-02-24T12:45:55","slug":"code-conventions","status":"publish","type":"page","link":"https:\/\/docs.ai.drawconclusions.org\/?page_id=1373","title":{"rendered":"Code Conventions"},"content":{"rendered":"<h2>Overview<\/h2>\n<ul>\n<li>Keep changes focused and minimal.<\/li>\n<li>Prefer explicitness over cleverness.<\/li>\n<li>Match existing patterns in each folder.<\/li>\n<\/ul>\n<h2>PHP<\/h2>\n<ul>\n<li>Use <code>declare(strict_types=1);<\/code> at the top of PHP files.<\/li>\n<li>Prefer typed parameters and return types.<\/li>\n<li>Use early returns for guard clauses.<\/li>\n<li>Keep controller logic thin; move heavy logic to helpers\/services.<\/li>\n<li>Use <code>json_encode<\/code> for JSON responses and set content type.<\/li>\n<\/ul>\n<h2>TypeScript<\/h2>\n<ul>\n<li>Prefer <code>const<\/code> and <code>readonly<\/code> where possible.<\/li>\n<li>Avoid <code>any<\/code>; use precise types or <code>unknown<\/code>.<\/li>\n<li>Keep components and utilities in small, focused modules.<\/li>\n<li>Use consistent naming for events and handlers (e.g., <code>handleSubmit<\/code>).<\/li>\n<\/ul>\n<h2>HTML<\/h2>\n<ul>\n<li>Use semantic elements (<code>header<\/code>, <code>nav<\/code>, <code>main<\/code>, <code>section<\/code>, <code>footer<\/code>).<\/li>\n<li>Keep forms accessible with proper <code>label<\/code> tags.<\/li>\n<li>Avoid inline styles unless localized to a single page.<\/li>\n<\/ul>\n<h2>Twig<\/h2>\n<ul>\n<li>Keep templates lean; avoid heavy logic in views.<\/li>\n<li>Use shared layouts and pass data from controllers.<\/li>\n<li>Prefer <code>path()<\/code> for route URLs.<\/li>\n<\/ul>\n<h2>CSS<\/h2>\n<ul>\n<li>Use CSS variables for theme colors when introducing new styles.<\/li>\n<li>Keep selectors simple and scoped to the page when possible.<\/li>\n<li>Prefer layout with <code>flex<\/code> or <code>grid<\/code> over manual positioning.<\/li>\n<\/ul>\n<p class=\"developerdocs-id-search\" aria-hidden=\"true\">DeveloperDoc ID: dd_id_804b83e7f5<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Keep changes focused and minimal. Prefer explicitness over cleverness. Match existing patterns in each folder. PHP Use declare(strict_types=1); at the top of PHP files. Prefer typed parameters and return types. Use early returns for guard clauses. Keep controller logic thin; move heavy logic to helpers\/services. Use json_encode for JSON responses and set content type. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1301,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[],"doc_layer":[30],"class_list":["post-1373","page","type-page","status-publish","hentry","layer-dd_id_8f59177ca0"],"_links":{"self":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1373"}],"version-history":[{"count":5,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1373\/revisions"}],"predecessor-version":[{"id":3814,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1373\/revisions\/3814"}],"up":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1301"}],"wp:attachment":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1373"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_category&post=1373"},{"taxonomy":"doc_layer","embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_layer&post=1373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}