# Libra - Source Tree & Directory Structure > Extracted from `docs/architecture.md` Section 6 ## Project Structure ``` libra/ ├── app/ │ ├── Actions/ # Business logic (single-purpose) │ │ ├── Fortify/ # Auth actions (existing) │ │ │ ├── CreateNewUser.php │ │ │ ├── ResetUserPassword.php │ │ │ └── UpdateUserPassword.php │ │ ├── Consultation/ │ │ │ ├── CreateConsultationAction.php │ │ │ ├── ApproveConsultationAction.php │ │ │ ├── RejectConsultationAction.php │ │ │ ├── CompleteConsultationAction.php │ │ │ └── CancelConsultationAction.php │ │ ├── Timeline/ │ │ │ ├── CreateTimelineAction.php │ │ │ ├── AddTimelineUpdateAction.php │ │ │ └── ArchiveTimelineAction.php │ │ ├── User/ │ │ │ ├── CreateClientAction.php │ │ │ ├── UpdateClientAction.php │ │ │ ├── DeactivateClientAction.php │ │ │ ├── ReactivateClientAction.php │ │ │ ├── DeleteClientAction.php │ │ │ └── ConvertClientTypeAction.php │ │ ├── Post/ │ │ │ ├── CreatePostAction.php │ │ │ ├── UpdatePostAction.php │ │ │ ├── PublishPostAction.php │ │ │ └── DeletePostAction.php │ │ └── Export/ │ │ ├── ExportUsersAction.php │ │ ├── ExportConsultationsAction.php │ │ └── GenerateMonthlyReportAction.php │ ├── Enums/ # PHP 8.1+ enums │ │ ├── UserType.php │ │ ├── UserStatus.php │ │ ├── ConsultationType.php │ │ ├── ConsultationStatus.php │ │ ├── PaymentStatus.php │ │ ├── TimelineStatus.php │ │ └── PostStatus.php │ ├── Http/ │ │ ├── Controllers/ # Minimal controllers │ │ │ ├── LanguageController.php │ │ │ └── CalendarDownloadController.php │ │ └── Middleware/ │ │ ├── SetLocale.php │ │ ├── EnsureUserIsAdmin.php │ │ └── EnsureUserIsActive.php │ ├── Jobs/ # Queue jobs │ │ ├── SendWelcomeEmail.php │ │ ├── SendBookingNotification.php │ │ ├── SendConsultationReminder.php │ │ ├── SendTimelineUpdateNotification.php │ │ └── GenerateExportFile.php │ ├── Livewire/ # Full-page Livewire components (if any) │ │ └── Forms/ # Livewire form objects │ │ ├── ConsultationForm.php │ │ ├── ClientForm.php │ │ ├── TimelineForm.php │ │ └── PostForm.php │ ├── Mail/ # Mailable classes │ │ ├── WelcomeMail.php │ │ ├── BookingSubmittedMail.php │ │ ├── BookingApprovedMail.php │ │ ├── BookingRejectedMail.php │ │ ├── ConsultationReminderMail.php │ │ ├── TimelineUpdatedMail.php │ │ └── NewBookingRequestMail.php │ ├── Models/ # Eloquent models │ │ ├── User.php │ │ ├── Consultation.php │ │ ├── Timeline.php │ │ ├── TimelineUpdate.php │ │ ├── Post.php │ │ ├── WorkingHour.php │ │ ├── BlockedTime.php │ │ ├── Notification.php │ │ ├── AdminLog.php │ │ └── Setting.php │ ├── Observers/ # Model observers │ │ ├── ConsultationObserver.php │ │ ├── TimelineUpdateObserver.php │ │ └── UserObserver.php │ ├── Policies/ # Authorization policies │ │ ├── ConsultationPolicy.php │ │ ├── TimelinePolicy.php │ │ ├── PostPolicy.php │ │ └── UserPolicy.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ └── FortifyServiceProvider.php │ └── Services/ # Cross-cutting services │ ├── AvailabilityService.php │ ├── CalendarService.php │ └── ExportService.php ├── config/ │ └── libra.php # App-specific config ├── database/ │ ├── factories/ │ │ ├── UserFactory.php │ │ ├── ConsultationFactory.php │ │ ├── TimelineFactory.php │ │ ├── TimelineUpdateFactory.php │ │ └── PostFactory.php │ ├── migrations/ │ └── seeders/ │ ├── DatabaseSeeder.php │ ├── AdminSeeder.php │ ├── WorkingHoursSeeder.php │ └── DemoDataSeeder.php ├── docs/ │ ├── architecture.md # Main architecture document │ ├── architecture/ # Sharded architecture docs │ │ ├── tech-stack.md │ │ ├── source-tree.md │ │ └── coding-standards.md │ ├── prd.md # Product requirements │ ├── epics/ # Epic definitions │ └── stories/ # User stories ├── resources/ │ ├── views/ │ │ ├── components/ # Blade components │ │ │ ├── layouts/ │ │ │ │ ├── app.blade.php # Main app layout │ │ │ │ ├── guest.blade.php # Guest/public layout │ │ │ │ └── admin.blade.php # Admin layout │ │ │ └── ui/ # Reusable UI components │ │ │ ├── card.blade.php │ │ │ ├── stat-card.blade.php │ │ │ ├── status-badge.blade.php │ │ │ └── language-switcher.blade.php │ │ ├── emails/ # Email templates │ │ │ ├── welcome.blade.php │ │ │ ├── booking-submitted.blade.php │ │ │ ├── booking-approved.blade.php │ │ │ ├── booking-rejected.blade.php │ │ │ ├── consultation-reminder.blade.php │ │ │ ├── timeline-updated.blade.php │ │ │ └── new-booking-request.blade.php │ │ ├── livewire/ # Volt single-file components │ │ │ ├── admin/ # Admin area │ │ │ │ ├── dashboard.blade.php │ │ │ │ ├── users/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── create.blade.php │ │ │ │ │ └── edit.blade.php │ │ │ │ ├── consultations/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── pending.blade.php │ │ │ │ │ ├── calendar.blade.php │ │ │ │ │ └── show.blade.php │ │ │ │ ├── timelines/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── create.blade.php │ │ │ │ │ └── show.blade.php │ │ │ │ ├── posts/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── create.blade.php │ │ │ │ │ └── edit.blade.php │ │ │ │ ├── settings/ │ │ │ │ │ ├── working-hours.blade.php │ │ │ │ │ ├── blocked-times.blade.php │ │ │ │ │ └── content-pages.blade.php │ │ │ │ └── reports/ │ │ │ │ └── index.blade.php │ │ │ ├── client/ # Client area │ │ │ │ ├── dashboard.blade.php │ │ │ │ ├── consultations/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── book.blade.php │ │ │ │ ├── timelines/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── show.blade.php │ │ │ │ └── profile.blade.php │ │ │ ├── pages/ # Public pages │ │ │ │ ├── home.blade.php │ │ │ │ ├── posts/ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── show.blade.php │ │ │ │ ├── terms.blade.php │ │ │ │ └── privacy.blade.php │ │ │ ├── auth/ # Auth pages (existing) │ │ │ └── settings/ # User settings (existing) │ │ ├── pdf/ # PDF templates │ │ │ ├── users-export.blade.php │ │ │ ├── consultations-export.blade.php │ │ │ └── monthly-report.blade.php │ │ └── errors/ # Error pages │ │ ├── 404.blade.php │ │ ├── 403.blade.php │ │ └── 500.blade.php │ ├── css/ │ │ └── app.css # Tailwind entry point │ ├── js/ │ │ └── app.js # Minimal JS │ └── lang/ # Translations │ ├── ar/ │ │ ├── auth.php │ │ ├── validation.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ ├── messages.php │ │ ├── models.php │ │ ├── enums.php │ │ └── emails.php │ └── en/ │ └── ... (same structure) ├── routes/ │ ├── web.php # Web routes │ └── console.php # Scheduled commands ├── tests/ │ ├── Feature/ │ │ ├── Admin/ │ │ │ ├── DashboardTest.php │ │ │ ├── UserManagementTest.php │ │ │ ├── ConsultationManagementTest.php │ │ │ ├── TimelineManagementTest.php │ │ │ ├── PostManagementTest.php │ │ │ └── SettingsTest.php │ │ ├── Client/ │ │ │ ├── DashboardTest.php │ │ │ ├── BookingTest.php │ │ │ ├── TimelineViewTest.php │ │ │ └── ProfileTest.php │ │ ├── Public/ │ │ │ ├── HomePageTest.php │ │ │ ├── PostsTest.php │ │ │ └── LanguageSwitchTest.php │ │ └── Auth/ │ │ └── ... (existing tests) │ └── Unit/ │ ├── Actions/ │ ├── Models/ │ ├── Services/ │ └── Enums/ ├── storage/ │ └── app/ │ └── exports/ # Generated export files ├── .github/ │ └── workflows/ │ └── ci.yml # GitHub Actions CI └── public/ └── build/ # Compiled assets ``` ## Key Modules & Their Purpose | Module | Location | Purpose | |--------|----------|---------| | **User Management** | `app/Actions/User/` | CRUD for clients (individual/company) | | **Consultation Booking** | `app/Actions/Consultation/` | Booking lifecycle management | | **Timeline/Case Tracking** | `app/Actions/Timeline/` | Case progress tracking | | **Posts/Blog** | `app/Actions/Post/` | Legal content publishing | | **Export Generation** | `app/Actions/Export/` | PDF/CSV report generation | | **Authentication** | `app/Actions/Fortify/` | Fortify auth customization | | **Email Notifications** | `app/Mail/`, `app/Jobs/` | Queued email delivery | | **Authorization** | `app/Policies/` | Access control policies |