Welcome, Jules (or other AI Agent). This document is your primary source of truth for understanding the Vertex Contas architecture, conventions, and business logic.
- Name: Vertex Contas
- Company: Vertex Solutions LTDA
- CEO/Architect: Reinan Rodrigues
- Core Business: High-performance financial platform with modular architecture.
This project uses nwidart/laravel-modules. Code is NOT in app/. Everything is segmented into Modules.
Each module acts as a mini-application with its own routes, controllers, views, and database migrations.
-
🟢 Core (
Modules/Core)- Role: The kernel of the system.
- Contains: Global Layouts (
x-layout-app), Base Controllers, Traits, Global Components (x-icon,x-logo,x-financial-value), Middleware (RBAC). - Key File:
resources/views/components/layouts/app.blade.php(Master Layout).
-
👤 PanelUser (
Modules/PanelUser)- Role: The Dashboard for end-users (clients).
- Features: Financial summary, Ticket management (Help Center), Profile settings, Security (2FA, Password).
- Routes: Prefix
/user, Namepaneluser.*.
-
🛡️ PanelAdmin (
Modules/PanelAdmin)- Role: The Command Center for administrators.
- Features: User management, System settings, Module control, Financial oversight.
- Routes: Prefix
/admin, Namepaneladmin.*.
-
🎧 PanelSuporte (
Modules/PanelSuporte)- Role: Dedicated workspace for Support Agents.
- Features: Ticket queue, Knowledge Base (Wiki), Remote Inspection (Impersonation).
- Routes: Prefix
/support, Namepanelsuporte.*.
-
💳 Gateways (
Modules/Gateways)- Role: Payment processing abstraction layer.
- Integrations: Stripe, Mercado Pago.
-
🔔 Notifications (
Modules/Notifications)- Role: Centralized notification system (Database + Real-time UI).
-
🏠 HomePage (
Modules/HomePage)- Role: Public landing page and authentication entry points.
-
📝 Blog (
Modules/Blog)- Role: Content management for SEO.
- Backend: Laravel 12.x (PHP 8.2+)
- Frontend:
- Blade Templates: Primary rendering engine.
- Tailwind CSS 4.1: Styling (Utility-first). configured via Vite.
- Alpine.js 3.x: JavaScript interactivity (Modals, Dropdowns, Toggles). Do not use jQuery.
- Database: SQLite (Local/Dev), MySQL 8 (Production).
- Access Control:
spatie/laravel-permission(Roles:admin,suporte,user).
NEVER use raw <svg> or <i> tags for icons. Use the component:
<x-icon name="user" style="duotone" class="text-primary-500" />- Source: Font Awesome Pro 6 (Mapped in
config/icons.php). - Styles:
solid,regular,light,duotone(preferred).
- Primary: Indigo (
indigo-600/#4f46e5). - Secondary: Purple (
purple-600/#9333ea). - Dark Mode: Fully supported using Tailwind's
dark:variant andslate-900backgrounds.
Use the global loading overlay for heavy actions:
<x-loading-overlay />Always use the privacy-aware component for monetary values:
<x-core::financial-value :value="$amount" />- Why? Handles currency formatting and automatically blurs data during "Remote Inspection" if the user has requested privacy.
- Framework: PHPUnit 11.
- DB: SQLite In-Memory (
:memory:) for speed. - Key Path:
tests/Featureandtests/Unit. - Command:
php artisan test
- CI/CD: Github Actions (
jules-auto-merge.yml,phpunit.yml). - Environment: use
.env.exampleas the base for all CI pipelines.
Note to Agent: When modifying this system, always verify the module context (Modules/{Module}/...). Do not place code in the default app/ folder unless it applies globally to the entire framework instance.