Set up modern PHP MVC project structure for GetYourBand platform
- Implemented clean MVC architecture with Router, Controller, and Model base classes - Created database migrations for users, bands, bookings, reviews, and availability - Set up Tailwind CSS with yellow color scheme and modern design - Added Alpine.js for reactive JavaScript components - Configured Vite for asset building and hot module replacement - Created authentication and role-based middleware - Implemented helper functions and configuration system - Added comprehensive README with setup instructions - Configured Apache with proper rewrite rules and security headers - Set up Composer and npm package management with modern dependencies
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
RewriteEngine On
|
||||
|
||||
# Redirect all requests to index.php
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*)$ index.php [L,QSA]
|
||||
|
||||
# Security headers
|
||||
<IfModule mod_headers.c>
|
||||
Header set X-Content-Type-Options "nosniff"
|
||||
Header set X-Frame-Options "SAMEORIGIN"
|
||||
Header set X-XSS-Protection "1; mode=block"
|
||||
</IfModule>
|
||||
|
||||
# Disable directory browsing
|
||||
Options -Indexes
|
||||
|
||||
# Compress assets
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
|
||||
</IfModule>
|
||||
|
||||
# Browser caching
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresByType image/jpeg "access plus 1 year"
|
||||
ExpiresByType image/png "access plus 1 year"
|
||||
ExpiresByType image/webp "access plus 1 year"
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
</IfModule>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/../bootstrap.php';
|
||||
|
||||
use App\Core\Router;
|
||||
|
||||
// Initialize router
|
||||
$router = new Router();
|
||||
|
||||
// Load routes
|
||||
require_once __DIR__ . '/../routes/web.php';
|
||||
|
||||
// Dispatch request
|
||||
$requestMethod = $_SERVER['REQUEST_METHOD'];
|
||||
$requestUri = $_SERVER['REQUEST_URI'];
|
||||
|
||||
try {
|
||||
$router->dispatch($requestMethod, $requestUri);
|
||||
} catch (Exception $e) {
|
||||
if (config('app.debug')) {
|
||||
echo "<h1>Error</h1>";
|
||||
echo "<p>{$e->getMessage()}</p>";
|
||||
echo "<pre>{$e->getTraceAsString()}</pre>";
|
||||
} else {
|
||||
http_response_code(500);
|
||||
echo "500 - Internal Server Error";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user