Hurgada is a Laravel-powered web application for managing and publishing tourism content for Hurghada. It provides CRUD and interactive experiences around domain entities such as Attractions, Events, Blogs, Galleries, and user Favorites. The UI is rendered with Blade and progressively enhanced with Livewire for reactive, server-driven interactivity (e.g., favorites toggling and comments). Authentication and session flows are scaffolded with Laravel Breeze. Eloquent models, factories, and seeders back the data layer, with SQLite used by default for local development and easy switching to other RDBMS engines via environment configuration.
Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
You may also try the Laravel Bootcamp, where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, Laracasts can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel Partners program.
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via taylor@laravel.com. All security vulnerabilities will be promptly addressed.
The Laravel framework is open-sourced software licensed under the MIT license.
This project is a modern Laravel application leveraging a full-stack toolchain optimized for DX, performance, and maintainability.
-
Runtime & Language
- PHP: Modern PHP features (typed properties, enums, attributes) via PHP 8.x.
- Composer: Dependency management with PSR-4 autoloading.
-
Framework & Core Libraries
- Laravel Framework: HTTP routing, IoC container, middleware, validation, events, and job queues. Key components in use:
- Eloquent ORM: ActiveRecord-style models with factories/seeders (
database/factories,database/seeders). - Migrations: Schema management via timestamped migration classes in
database/migrations. - Queues: Config-driven queue abstraction; jobs table scaffolded for async workloads.
- Caching & Session: PSR-16 cache and session drivers configurable via
config/cache.phpandconfig/session.php. - Filesystem: Flysystem v3 adapter with local disks for
publicand private storage (config/filesystems.php).
- Eloquent ORM: ActiveRecord-style models with factories/seeders (
- Laravel Framework: HTTP routing, IoC container, middleware, validation, events, and job queues. Key components in use:
-
Frontend Build & Styling
- Vite: ESM-based bundling with hot module replacement; manifest-driven asset resolution in
public/build. - Node Tooling:
npmscripts for dev/build;resources/jsas the entrypoint. - Tailwind CSS: Utility-first styling with
tailwind.config.jsand PostCSS pipeline (postcss.config.js). - PostCSS: Autoprefixer and Tailwind processing for CSS output.
- Vite: ESM-based bundling with hot module replacement; manifest-driven asset resolution in
-
Reactive UI
- Livewire: Server-driven reactive components for dynamic UI without bespoke SPA code. Components under
app/Livewirewith corresponding Blade views inresources/views/livewire. - Blade: Templating system with components in
resources/views/componentsand page templates inresources/views/pages.
- Livewire: Server-driven reactive components for dynamic UI without bespoke SPA code. Components under
-
Authentication & Scaffolding
- Laravel Breeze: Minimal, modern auth scaffolding using Blade. Routes under
routes/auth.php, views underresources/views/authandresources/views/layouts.
- Laravel Breeze: Minimal, modern auth scaffolding using Blade. Routes under
-
Database
- SQLite (development): File-backed database
database/database.sqlitefor zero-config local development. - Easily switchable to MySQL/PostgreSQL via
config/database.phpand environment variables.
- SQLite (development): File-backed database
-
Email & Notifications
- Mail: Transport-agnostic mailer configured in
config/mail.php. - Notifications: Channel-based notifications (mail, database, etc.) available per Laravel core.
- Mail: Transport-agnostic mailer configured in
-
Testing
- PHPUnit: Feature and unit tests under
tests/Featureandtests/Unit; configuration inphpunit.xml. - Model Factories: Deterministic data generation for tests and seeders.
- PHPUnit: Feature and unit tests under
-
Logging & Observability
- Monolog via Laravel logging channels defined in
config/logging.phpwith daily rotation and stack channels.
- Monolog via Laravel logging channels defined in
-
Security
- CSRF Protection: Middleware-enforced token validation on state-changing requests.
- Validation: Form request validation classes in
app/Http/Requestsand inline validation rules. - Encryption & Hashing: OpenSSL-based encrypter and bcrypt/argon hashing via Laravel
Hashfacade.
-
Dev Experience
- Artisan: Task automation (migrations, seeding, queue workers, tinker).
- Tinker: REPL for runtime inspection and prototyping.
- Pint: Opinionated PHP code style fixer available via Composer bin.
-
Deployment Considerations
- Config/Route Caching:
artisan config:cacheandartisan route:cachecompatible for reduced bootstrap overhead. - Optimized Autoloading: Composer optimized classmaps for production builds.
- Asset Versioning: Vite manifest-based cache-busting in production.
- Config/Route Caching:
Reference documentation: