12 KiB
12 KiB
Libra - Source Tree & Directory Structure
Extracted from
docs/architecture.mdSection 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 |