A comprehensive Laravel-based application for managing HR intern recruitment processes, built with Filament admin panel and AI-powered resume parsing capabilities.
- Candidate Management: Track candidates through the entire recruitment lifecycle
- Position Management: Create and manage internship positions with different types
- AI-Powered Resume Parsing: Automatic extraction of candidate information using Groq AI
- Email Templates: Customizable email templates for candidate communications
- Document Generation: Automated PDF generation for offer letters, completion certificates, and reports
- Activity Logging: Complete audit trail of all system changes
- Tag System: Skill-based tagging for candidate categorization
- Queue-Based Processing: Background job processing for document generation and email sending
- Backend: Laravel 11.45+ with PHP 8.1+
- Admin Panel: Filament 3.2+
- Frontend: Vite + Laravel Mix
- Database: MySQL/PostgreSQL
- AI Integration: Groq API for LLM functionality
- PDF Processing: Spatie PDF-to-text + DomPDF
- File Management: Spatie Media Library
- Queue System: Laravel Queues
- PHP 8.1 or higher
- Composer
- Node.js and npm
- MySQL or PostgreSQL database
- Groq API key (for AI features)
-
Clone the repository
git clone <repository-url> cd HR-interns
-
Install dependencies
composer install npm install
-
Environment setup
cp .env.example .env php artisan key:generate
-
Configure environment variables
Edit
.env
file with your settings:APP_NAME="HR Intern Management" APP_URL=http://localhost:8000 # Database Configuration DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hr_interns DB_USERNAME=your_username DB_PASSWORD=your_password # Mail Configuration (for email features) MAIL_MAILER=smtp MAIL_HOST=your_smtp_host MAIL_PORT=587 MAIL_USERNAME=your_email MAIL_PASSWORD=your_password MAIL_FROM_ADDRESS="noreply@yourcompany.com" # Groq API (for AI resume parsing) GROQ_API_KEY=your_groq_api_key
-
Database setup
php artisan migrate:fresh --seed
-
Storage setup
php artisan storage:link
# Start Laravel development server
php artisan serve
# Start Vite development server (in another terminal)
npm run dev
# Start queue worker (for background jobs)
php artisan queue:work
# Run all tests
php artisan test
# Run specific test class
php artisan test --filter TestClassName
# Run specific test file
php artisan test tests/Feature/ExampleTest.php
# Format code using Laravel Pint
vendor/bin/pint
- Candidate: Job applicants with resume uploads and status tracking
- Position: Internship positions with types and statuses
- Email: Template system for candidate communications
- User: Admin panel authentication
Candidate Status Flow: PENDING → CONTACTED → TECHNICAL_TEST → INTERVIEW → OFFER_ACCEPTED → HIRED → COMPLETED
(Can be WITHDRAWN at any stage)
GenerateOfferLetterJob
- PDF offer letter generationGenerateAttendanceReportJob
- Attendance tracking documentsGenerateCompletionCertJob
- Completion certificatesGenerateCompletionLetterJob
- Completion lettersGenerateWFHLetterJob
- Work from home documentationSendEmailJob
- Email dispatch handling
- GroqService: AI integration for resume parsing and candidate data extraction
- PdfExtractorService: Resume parsing using Spatie PDF-to-text + AI analysis
Access the admin panel at /admin
after starting the development server.
After running seeders, use these credentials:
- Email: admin@example.com
- Password: password
- Candidates: Manage candidate profiles, resumes, and status
- Positions: Create and manage internship positions
- Emails: Configure email templates
- Tags: Manage skill tags
- Users: Admin user management
The application uses Groq API for:
- Resume text extraction and parsing
- Candidate information extraction
- Automated data processing
Ensure you have a valid Groq API key in your .env
file.
- Resumes: Stored via Spatie Media Library
- Generated Documents: Stored in
storage/app/
- Templates: Blade templates in
resources/views/template/
For production environments, configure a proper queue driver:
QUEUE_CONNECTION=database
# or
QUEUE_CONNECTION=redis
Then run queue workers:
php artisan queue:work --daemon
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and formatting
- Submit a pull request
This project is licensed under the MIT License.
For development guidance and architecture details, see CLAUDE.md.