feat: Complete Woles Framework v1.0 with enterprise-grade UI

- Add comprehensive error handling system with custom error pages
- Implement professional enterprise-style design with Tailwind CSS
- Create modular HMVC architecture with clean separation of concerns
- Add security features: CSRF protection, XSS filtering, Argon2ID hashing
- Include CLI tools for development workflow
- Add error reporting dashboard with system monitoring
- Implement responsive design with consistent slate color scheme
- Replace all emoji icons with professional SVG icons
- Add comprehensive test suite with PHPUnit
- Include database migrations and seeders
- Add proper exception handling with fallback pages
- Implement template engine with custom syntax support
- Add helper functions and facades for clean code
- Include proper logging and debugging capabilities
This commit is contained in:
mwpn
2025-10-11 07:08:23 +07:00
commit 0b42271bfe
90 changed files with 8315 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ $title }}</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
'sans': ['Inter', 'system-ui', 'sans-serif'],
}
}
}
}
</script>
</head>
<body class="font-sans bg-gray-50 min-h-screen">
<!-- Header -->
<header class="bg-white shadow-sm border-b border-gray-200">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center h-16">
<div class="flex items-center">
<div class="text-2xl mr-3"></div>
<h1 class="text-xl font-bold text-gray-900">Woles Framework</h1>
</div>
<div class="flex items-center space-x-4">
<span class="text-gray-600">Welcome, {{ $user['name'] }}</span>
<a href="/logout" class="bg-red-600 hover:bg-red-700 text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors">
Logout
</a>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<!-- Welcome Card -->
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-8 mb-8 text-center">
<div class="text-6xl mb-4">🚀</div>
<h2 class="text-3xl font-bold text-gray-900 mb-4">Woles Framework v1.0</h2>
<p class="text-lg text-gray-600 mb-8">Welcome to your dashboard! The framework is running successfully.</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="/users" class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-lg font-medium transition-colors">
Manage Users
</a>
<a href="/login" class="bg-gray-600 hover:bg-gray-700 text-white px-6 py-3 rounded-lg font-medium transition-colors">
Back to Login
</a>
</div>
</div>
<!-- Features Grid -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 text-center">
<div class="text-3xl mb-4">🔒</div>
<h3 class="text-lg font-semibold text-gray-900 mb-3">Security First</h3>
<p class="text-gray-600 text-sm leading-relaxed">Built-in CSRF protection, XSS filtering, and secure password hashing with Argon2ID.</p>
</div>
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 text-center">
<div class="text-3xl mb-4"></div>
<h3 class="text-lg font-semibold text-gray-900 mb-3">High Performance</h3>
<p class="text-gray-600 text-sm leading-relaxed">Optimized for PHP 8.2+ with JIT compilation and RoadRunner/FrankenPHP support.</p>
</div>
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 text-center">
<div class="text-3xl mb-4">🏗️</div>
<h3 class="text-lg font-semibold text-gray-900 mb-3">Clean Architecture</h3>
<p class="text-gray-600 text-sm leading-relaxed">Modular HMVC structure with dependency injection and PSR-4 autoloading.</p>
</div>
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 text-center">
<div class="text-3xl mb-4">🎨</div>
<h3 class="text-lg font-semibold text-gray-900 mb-3">Modern UI</h3>
<p class="text-gray-600 text-sm leading-relaxed">Clean, professional interface with Tailwind CSS and responsive design.</p>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,94 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ $title }}</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
'sans': ['Inter', 'system-ui', 'sans-serif'],
}
}
}
}
</script>
</head>
<body class="font-sans bg-slate-50 min-h-screen flex items-center justify-center p-4">
<div class="bg-white rounded-lg shadow-sm border border-slate-200 w-full max-w-md p-8">
<!-- Header -->
<div class="text-center mb-8">
<div class="w-16 h-16 bg-slate-100 rounded-lg flex items-center justify-center mx-auto mb-4">
<span class="text-2xl font-bold text-slate-900">W</span>
</div>
<h1 class="text-2xl font-bold text-slate-900 mb-2">Woles Framework</h1>
<p class="text-slate-600">Sign in to your account</p>
</div>
<!-- Error Message -->
<?php if (isset($error)): ?>
<div class="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg mb-6">
<?php echo htmlspecialchars($error); ?>
</div>
<?php endif; ?>
<!-- Login Form -->
<form method="POST" action="/login" class="space-y-6">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<div>
<label for="email" class="block text-sm font-medium text-slate-700 mb-2">
Email Address
</label>
<input
type="email"
id="email"
name="email"
value="<?php echo htmlspecialchars(old('email', $old['email'] ?? '')); ?>"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Enter your email"
required>
<?php if (isset($errors['email'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['email']); ?></p>
<?php endif; ?>
</div>
<div>
<label for="password" class="block text-sm font-medium text-slate-700 mb-2">
Password
</label>
<input
type="password"
id="password"
name="password"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Enter your password"
required>
<?php if (isset($errors['password'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['password']); ?></p>
<?php endif; ?>
</div>
<button
type="submit"
class="w-full bg-slate-900 hover:bg-slate-800 text-white font-medium py-3 px-4 rounded-md transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-slate-500 focus:ring-offset-2">
Sign In
</button>
</form>
<!-- Links -->
<div class="text-center mt-6">
<a href="/register" class="text-slate-600 hover:text-slate-900 text-sm font-medium transition-colors">
Don't have an account? Register
</a>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ $title }}</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
'sans': ['Inter', 'system-ui', 'sans-serif'],
}
}
}
}
</script>
</head>
<body class="font-sans bg-slate-50 min-h-screen flex items-center justify-center p-4">
<div class="bg-white rounded-lg shadow-sm border border-slate-200 w-full max-w-md p-8">
<!-- Header -->
<div class="text-center mb-8">
<div class="w-16 h-16 bg-slate-100 rounded-lg flex items-center justify-center mx-auto mb-4">
<span class="text-2xl font-bold text-slate-900">W</span>
</div>
<h1 class="text-2xl font-bold text-slate-900 mb-2">Woles Framework</h1>
<p class="text-slate-600">Create your account</p>
</div>
<!-- Register Form -->
<form method="POST" action="/register" class="space-y-6">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<div>
<label for="name" class="block text-sm font-medium text-slate-700 mb-2">
Full Name
</label>
<input
type="text"
id="name"
name="name"
value="<?php echo htmlspecialchars(old('name', $old['name'] ?? '')); ?>"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Enter your full name"
required>
<?php if (isset($errors['name'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['name']); ?></p>
<?php endif; ?>
</div>
<div>
<label for="email" class="block text-sm font-medium text-slate-700 mb-2">
Email Address
</label>
<input
type="email"
id="email"
name="email"
value="<?php echo htmlspecialchars(old('email', $old['email'] ?? '')); ?>"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Enter your email"
required>
<?php if (isset($errors['email'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['email']); ?></p>
<?php endif; ?>
</div>
<div>
<label for="password" class="block text-sm font-medium text-slate-700 mb-2">
Password
</label>
<input
type="password"
id="password"
name="password"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Enter your password"
required>
<?php if (isset($errors['password'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['password']); ?></p>
<?php endif; ?>
</div>
<div>
<label for="password_confirmation" class="block text-sm font-medium text-slate-700 mb-2">
Confirm Password
</label>
<input
type="password"
id="password_confirmation"
name="password_confirmation"
class="w-full px-4 py-3 border border-slate-300 rounded-md focus:ring-2 focus:ring-slate-500 focus:border-slate-500 transition-colors"
placeholder="Confirm your password"
required>
<?php if (isset($errors['password_confirmation'])): ?>
<p class="mt-2 text-sm text-red-600"><?php echo htmlspecialchars($errors['password_confirmation']); ?></p>
<?php endif; ?>
</div>
<button
type="submit"
class="w-full bg-slate-900 hover:bg-slate-800 text-white font-medium py-3 px-4 rounded-md transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-slate-500 focus:ring-offset-2">
Create Account
</button>
</form>
<!-- Links -->
<div class="text-center mt-6">
<a href="/login" class="text-slate-600 hover:text-slate-900 text-sm font-medium transition-colors">
Already have an account? Sign In
</a>
</div>
</div>
</body>
</html>