Skip to main content
Use this page when you already know the concern but not the directory.

Top-level directories

app/

The main application namespace.
  • Client/ external service clients
  • Console/Commands/ custom Artisan commands
  • Constants/ application enums and constant values
  • Dto/ transport and state objects
  • Events/ domain events grouped by business area
  • Exceptions/ domain or transport exceptions
  • Filament/ admin and dashboard resources, pages, and widgets
  • Http/Controllers/ route controllers
  • Http/Middleware/ custom HTTP middleware
  • Listeners/ event listeners
  • Livewire/ frontend interaction components
  • Mail/ mailables
  • Mapper/ mapping helpers
  • Models/ Eloquent models
  • Notifications/ notifications
  • Policies/ authorization policies
  • Providers/ service providers and panel providers
  • Services/ business logic
  • Support/ support helpers
  • Validator/ custom validation logic
  • View/Components/ Blade view components

config/

Operational configuration for:
  • auth
  • cache
  • cookie consent
  • CORS
  • database
  • filesystems
  • Filament
  • Horizon
  • invoices
  • localization
  • mail
  • permission
  • queue
  • Sanctum
  • services
  • session
  • Telescope
  • two-factor auth

database/seeders/

Contains both default seeders and special-purpose seeders:
  • production-safe seeders in the root
  • demo seeders under Demo/
  • testing seeders under Testing/

resources/

Frontend assets and Blade templates. Important areas:
  • resources/css/
  • resources/js/
  • resources/views/

routes/

  • web.php for browser routes
  • api.php for webhook-style API routes
  • channels.php
  • console.php

tests/

Automated tests for critical application behavior.

Where to add new functionality

Add a new admin management feature

Typical touch points:
  • app/Filament/Admin/Resources
  • app/Filament/Admin/Pages
  • app/Services
  • app/Models
  • database/migrations

Add a new customer-facing dashboard capability

Typical touch points:
  • app/Filament/Dashboard
  • app/Livewire
  • app/Services
  • resources/views

Add a new payment or verification provider

Typical touch points:
  • app/Services/PaymentProviders
  • app/Services/VerificationProviders
  • app/Http/Controllers/PaymentProviders
  • config/services.php
  • .env
  • seeders if the provider should exist by default

Add a new public content section

Typical touch points:
  • routes/web.php
  • app/Http/Controllers
  • resources/views
  • admin-side Filament resources if the content is editable

Guiding rule

If a change includes both orchestration and provider-specific SDK code, keep the orchestration in a service and isolate the provider specifics behind an interface or dedicated implementation.
Last modified on March 30, 2026