Hireon is a Laravel 12 + Tailwind + Vite application that connects candidates, employers, and admins through a role-aware job marketplace. Public visitors can explore curated jobs, candidates can apply with guided profile completion, and employers/admins run analytics-rich dashboards to manage postings, applicants, companies, and notifications.
- Agile board (Jira): https://ahmedalla56756.atlassian.net/jira/software/projects/HIR/boards/100
- Database ERD: https://dbdiagram.io/d/Job-Listing-Management-66785b045a764b3c7231a5a0
- Live demo: to be added soon
- PHP 8.2, Laravel 12, Laravel Breeze auth scaffolding
- MySQL (default), SQLite support for local prototyping
- Queue + notification channels backed by the database driver
- Tailwind CSS 3, Alpine.js stores (dark mode, UI state), Vite 7
- PHPUnit / Pest for automated tests, Laravel Pint for linting
- Marketing site: Hero slider, featured/latest jobs, category stats, and company/candidate metrics powered by
HomeController. - Job marketplace: Advanced filtering (category, keyword, location, work type, salary buckets, date posted) with job detail pages that track authenticated candidate views.
- Candidate applications: Guided profile completion (phone, resume upload), duplicate application prevention, and seamless submission.
- Employer/Admin dashboard: Role-scoped analytics, CRUD flows for jobs/companies, applicant pipelines, job approval/rejection, and toast-driven feedback.
- Notifications: Queued mail + database notifications for employers (job approvals) and candidates (application decisions), plus in-app notification center with mark-as-read endpoints.
- Contact & theme: SMTP-backed contact form and Alpine-powered dark/light theme toggle stored per user.
project-root/
├── app/
│ ├── Http/Controllers # Public, dashboard, auth, notification, contact flows
│ ├── Http/Middleware # RoleMiddleware + auth gates
│ ├── Models # Job, Company, Application, JobView, etc.
│ ├── Notifications # Queue-aware notification classes
│ ├── Policies # JobPolicy rules for employers/demo accounts
│ └── Providers # AppServiceProvider registering gates + view composers
├── config/ # queue.php defaults to the database driver
├── database/
│ ├── factories/ # Rich model factories for seeding
│ ├── migrations/ # Jobs, apps, comments, queue tables, etc.
│ └── seeders/ # DatabaseSeeder creates full demo data
├── public/ # Entry point + built assets
├── resources/
│ ├── css/ # Tailwind + animation utilities
│ ├── js/ # Alpine store & bootstrap.js
│ └── views/ # Layouts, components, dashboard & landing pages
├── routes/ # web.php + auth.php (Breeze)
├── storage/ # Public disk for resumes/logos (symlinked)
├── tests/ # Feature + unit tests (Pest/PHPUnit)
├── composer.json # PHP deps + helper Composer scripts
└── package.json # Vite/Tailwind/Alpine configuration
- PHP 8.2+, Composer 2.6+
- Node 18+/20+ with npm
- MySQL 8 (or MariaDB/SQLite for local dev)
- Optional Redis; queues default to MySQL tables
- Mail credentials for SMTP notifications
- Clone the repository and
cdinto it. - Copy env file:
cp .env.example .env. - Install backend deps:
composer install. - Install frontend tooling:
npm install. - Generate the key:
php artisan key:generate. - Update
.envwith database, queue, cache/session, and mail credentials. SetQUEUE_CONNECTION=database(default) and, if needed,DB_QUEUE_CONNECTION=mysql. - Link storage for public assets:
php artisan storage:link. - Run migrations + seeders:
For a clean slate use
php artisan migrate php artisan db:seed
php artisan migrate:fresh --seed.
- Serve API + frontend separately:
php artisan serve npm run dev
- Or use the Composer helper that also spawns the queue worker:
composer run dev
Notifications implement ShouldQueue, so keep a worker online:
php artisan queue:work database --queue=default --tries=3 --timeout=90For local debugging you can run php artisan queue:listen --tries=1.
- Dev build:
npm run dev - Production build:
npm run build - Preview production bundle locally:
npm run preview
database/seeders/DatabaseSeeder.php provisions hundreds of users/jobs plus a verified admin you can use right away:
| Role | Password | |
|---|---|---|
| Admin | ahmed.alla56756@gmail.com | password |
Factories also generate companies, technologies, comments, saved jobs, applications, and job views so every dashboard widget has meaningful analytics immediately.
- Run backend tests:
php artisan test(orcomposer test) - Static analysis / formatting:
./vendor/bin/pint - Add UI/feature tests as you extend flows (Pest scaffolding included).
- Set
APP_ENV=production,APP_DEBUG=false,APP_URLto your domain. - Cache config/routes:
php artisan config:cache && php artisan route:cache. - Build assets:
npm run build(commit or deploy artifact). - Run migrations with
php artisan migrate --force. - Start queue workers under Supervisor/systemd using
php artisan queue:work database --queue=default --tries=3 --timeout=90. - Schedule tasks if needed via
php artisan schedule:workor a cron entry. - Ensure
php artisan storage:linkran on the server andpublic/is the web root. - Update the README “Live demo” link once the production URL is ready.
Need help extending the platform (e.g., multi-tenant companies, interview pipeline, analytics exports)? Open an issue or reach out via the Agile board link above.