GS CRM — Runtime Architecture

GS CRM — Runtime Architecture An architecture diagram generated by Archify. Browser · visitors and CRM staff · Architecture component Browser visitors and CRM staff Public SEO homepage · GET / when signed out · Browser / UI Public SEO homepage GET / when signed out CRM UI · PHP shells + vanilla JS · Browser / UI CRM UI PHP shells + vanilla JS Costing calculator · costing-calculator.js · Browser / UI Costing calculator costing-calculator.js Front controller · index.php + Router · PHP application (one process per request) Front controller index.php + Router Third-party services · Google, Xero, Meta, OSM, SMTP · External services Third-party services Google, Xero, Meta, OSM, SMTP Session auth gate · login, CSRF, role checks · PHP application (one process per request) › Auth / security gate Session auth gate login, CSRF, role checks Company context · session company_id · PHP application (one process per request) › Auth / security gate Company context session company_id Controllers · page + JSON handlers · PHP application (one process per request) › Company-scoped: company_id = ? in each query Controllers page + JSON handlers Leads, customers · createProject converts · PHP application (one process per request) › Company-scoped: company_id = ? in each query Leads, customers createProject converts Projects · Project model + tabs · PHP application (one process per request) › Company-scoped: company_id = ? in each query Projects Project model + tabs Sales Input costing · recalculateTotals + STC · PHP application (one process per request) › Company-scoped: company_id = ? in each query Sales Input costing recalculateTotals + STC Reports, tasks · dashboard, alerts · PHP application (one process per request) › Company-scoped: company_id = ? in each query Reports, tasks dashboard, alerts File handling · SecureUpload, readfile · PHP application (one process per request) › Company-scoped: company_id = ? in each query File handling SecureUpload, readfile Quotes, payments · quote, sign, invoice · PHP application (one process per request) › Company-scoped: company_id = ? in each query Quotes, payments quote, sign, invoice Integrations, mail · HTTP clients, PHPMailer · PHP application (one process per request) › Company-scoped: company_id = ? in each query Integrations, mail HTTP clients, PHPMailer MySQL (PDO) · users, companies, leads, aj_* tables · Server persistence MySQL (PDO) users, companies, leads, aj_* tables Local disk · public/uploads/{projects,company,...} · Server persistence Local disk public/uploads/{projects,company,...} GET / (anonymous) signed-in pages POST /login fetch /api/v1 + CSRF Sales Input tab PATCH field Meta webhook (HMAC) every request login sets company_id requireUser + companyId() SQL aj_projects totals reads files HTML, PNG HTTPS + SMTP Browser / UI PHP application (one process per request) Auth / security gate Company-scoped: company_id = ? in each query Server persistence External services Legend Frontend Backend Database Security External