first commit
This commit is contained in:
commit
405df0a122
3083 changed files with 69203 additions and 0 deletions
155
CLAUDE.md
Normal file
155
CLAUDE.md
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
This is a multi-domain Laravel application called "pr-copilot" that supports different domains with distinct themes and styling. The application uses Laravel with Livewire, Volt, and Fortify for authentication, along with Flux UI components.
|
||||
|
||||
### Supported Domains
|
||||
|
||||
- **Main Portal**: pr-copilot.test - Main admin portal page
|
||||
- **Presseecho**: presseecho.test - Landing page with presseecho theme
|
||||
- **Business Portal**: businessportal24.test - Landing page with business portal theme
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Installation & Setup
|
||||
|
||||
```bash
|
||||
composer install
|
||||
npm install
|
||||
php artisan key:generate
|
||||
php artisan migrate
|
||||
php artisan migrate --seed # Run seeders for roles and permissions
|
||||
```
|
||||
|
||||
### Asset Compilation
|
||||
|
||||
```bash
|
||||
npm run dev:portal # Start Portal dev server (Port 5177)
|
||||
npm run dev:web # Start Web dev server (Port 5178)
|
||||
npm run dev:all # Start both dev servers concurrently (recommended)
|
||||
npm run build # Production build (all)
|
||||
npm run build:portal # Portal-specific assets
|
||||
npm run build:web # Web-specific assets
|
||||
```
|
||||
|
||||
### Development Server
|
||||
|
||||
```bash
|
||||
php artisan serve # Start Laravel development server
|
||||
composer run dev # Start full development stack (server, queue, logs, vite)
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
composer run test # Run Pest tests (clears config first)
|
||||
php artisan test # Direct Laravel test command
|
||||
php artisan test --filter TestName # Run specific test
|
||||
```
|
||||
|
||||
### Domain Management
|
||||
|
||||
```bash
|
||||
php artisan domains:generate-favicons # Generate placeholder favicons for all domains
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Domain-Based Theme System
|
||||
|
||||
The application uses a sophisticated domain-based theme system that determines styling and assets at runtime:
|
||||
|
||||
**How it works:**
|
||||
1. `ThemeServiceProvider` detects the incoming domain from the HTTP request
|
||||
2. Looks up domain config in `/config/domains.php` by matching `domain_name`
|
||||
3. Sets theme variables globally via `View::share()` and `config()`
|
||||
4. Vite automatically loads the correct build directory based on `assets_dir`
|
||||
|
||||
**Key configuration** (`/config/domains.php`):
|
||||
- Each domain has: `domain_name`, `url`, `theme`, `view_prefix`, `assets_dir`, `color_scheme`, `font`
|
||||
- Portal domain uses `build/portal` assets
|
||||
- Web domains (presseecho, businessportal24) share `build/web` assets but load different CSS theme files
|
||||
|
||||
**Development features:**
|
||||
- Simulate any domain locally: Set `DEV_SIMULATE_DOMAIN=true` and `DEV_SIMULATED_DOMAIN=presseecho.test` in `.env`
|
||||
- Theme override via URL: Add `?theme=presseecho` to test different themes
|
||||
|
||||
### Key Components
|
||||
|
||||
- **Livewire Components**: Located in `app/Livewire/` with the following structure:
|
||||
- `app/Livewire/Actions/` - Reusable actions (e.g., Logout)
|
||||
- Auth components in `resources/views/livewire/auth/` (login, register, password reset, etc.)
|
||||
- Settings components in `resources/views/livewire/settings/` (profile, password, appearance)
|
||||
- Admin components in `resources/views/livewire/admin/` (users management)
|
||||
- Web components in `resources/views/livewire/web/` (frontend features)
|
||||
- **Volt Components**: Single-file Livewire components using functional API for rapid development
|
||||
- **Flux UI**: Premium UI component library for consistent design (Portal only)
|
||||
- **Multi-Build System**: Separate Vite configurations for different asset bundles
|
||||
|
||||
### Authentication & Authorization
|
||||
|
||||
- **Laravel Fortify**: Handles authentication features
|
||||
- **Laravel Sanctum**: API token authentication
|
||||
- **Spatie Permissions**: Role and permission management system
|
||||
|
||||
### Asset Management
|
||||
|
||||
The project uses a **dual-port Vite setup** with separate configurations:
|
||||
|
||||
- **Portal (Backend)**: `vite.portal.config.js` - Port 5177, includes FluxUI
|
||||
- **Web (Frontend)**: `vite.web.config.js` - Port 5178, no FluxUI
|
||||
- **Tailwind Configs**: `tailwind.portal.config.js` and `tailwind.web.config.js`
|
||||
|
||||
**Why two ports?** Vite can only run one configuration at a time. The portal uses FluxUI components while web domains don't, requiring separate builds. Web domains (presseecho & businessportal24) share the same Vite server and differ only in CSS variables loaded at runtime via `ThemeServiceProvider`.
|
||||
|
||||
**Build directories**:
|
||||
- Portal assets → `public/build/portal/`
|
||||
- Web assets → `public/build/web/`
|
||||
|
||||
### Database
|
||||
|
||||
- **SQLite** for development (`database/database.sqlite`)
|
||||
- **Migrations**: Users (with 2FA columns), cache, jobs, personal access tokens
|
||||
- **Seeders**: `RolesAndPermissionsSeeder` - Run with `php artisan migrate --seed`
|
||||
|
||||
### Testing Framework
|
||||
|
||||
- **Pest PHP** (v3.8+) - Modern testing framework built on PHPUnit
|
||||
- Configuration: `phpunit.xml` and `tests/Pest.php`
|
||||
- Test database: Uses `DB_DATABASE=testing` environment (configured in phpunit.xml)
|
||||
- Test directories: `tests/Feature/` (authentication, dashboard, settings) and `tests/Unit/`
|
||||
|
||||
## Important Files & Configuration
|
||||
|
||||
- **Domain System**:
|
||||
- `/config/domains.php` - Domain and theme configuration
|
||||
- `/app/Providers/ThemeServiceProvider.php` - Core theme switching logic at runtime
|
||||
- `/routes/domains.php` - Domain-specific routing
|
||||
|
||||
- **Routes**:
|
||||
- `/routes/web.php` - Public web routes
|
||||
- `/routes/auth.php` - Authentication routes
|
||||
- `/routes/admin.php` - Admin portal routes
|
||||
- `/routes/api.php` - API endpoints with Sanctum protection
|
||||
|
||||
- **Views Structure**:
|
||||
- `resources/views/web/` - Frontend domain views (presseecho, businessportal24)
|
||||
- `resources/views/admin/` - Backend portal views
|
||||
- `resources/views/components/` - Shared components across all domains
|
||||
- `resources/views/components/layouts/` - Layout components (app, auth)
|
||||
- `resources/views/livewire/` - Livewire components (auth, settings, admin, web)
|
||||
|
||||
- **Vite & Assets**:
|
||||
- `vite.portal.config.js` - Backend/Portal build configuration (Port 5177)
|
||||
- `vite.web.config.js` - Frontend/Web build configuration (Port 5178)
|
||||
- `tailwind.portal.config.js` and `tailwind.web.config.js` - Separate Tailwind configs
|
||||
- `resources/css/portal.css` - Portal styles with FluxUI
|
||||
- `resources/css/web/theme-*.css` - Theme-specific CSS for web domains
|
||||
|
||||
- **Documentation**:
|
||||
- `DOMAINS-CONFIG.md` - Detailed domain setup instructions
|
||||
- `FORTIFY-SANCTUM-SETUP.md` - Authentication setup guide
|
||||
- `VITE-SETUP.md` - Dual-port Vite architecture explanation
|
||||
Loading…
Add table
Add a link
Reference in a new issue