A Laravel-based job application and admin authentication system for the Akawnt accounting firm.
- Submit applications via form on homepage with resume upload
- Receive email notification upon acceptance/decline
- Login to view application status after acceptance
- View profile and application details on personal dashboard
- Whitelist-based registration (only approved emails can register)
- Dashboard to view all job applications
- Search and filter applications by status
- Accept, decline, or mark applications as reviewing
- Download applicant resumes
- Automatic user account creation when accepting applications
- PHP 8.2+
- Laravel 10+
- MySQL/SQLite database
- Gmail account for email notifications (or configure your SMTP)
-
Clone and install dependencies:
composer install
-
Configure environment:
cp .env.example .env
-
Set up your
.envfile:DB_DATABASE=akawnt DB_USERNAME=your_username DB_PASSWORD=your_password MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your-email@gmail.com MAIL_PASSWORD=your-app-password MAIL_FROM_ADDRESS=your-email@gmail.com MAIL_FROM_NAME=Akawnt -
Generate keys and run migrations:
php artisan key:generate php artisan migrate
-
Create storage symlink:
php artisan storage:link
| URL | Description |
|---|---|
/home |
Homepage with job application form |
/affiliates |
Affiliates page |
/reports |
Reports page |
| URL | Description |
|---|---|
/admin/login |
Admin login |
/admin/register |
Admin registration (whitelist required) |
/login |
Applicant login |
/logout |
Logout (POST) |
| URL | Description |
|---|---|
/admin/dashboard |
View all applications with stats |
/admin/applications/{id} |
View application details |
/admin/applications/{id}/accept |
Accept application |
/admin/applications/{id}/decline |
Decline application |
/admin/applications/{id}/review |
Mark as reviewing |
/admin/applications/{id}/resume |
Download resume |
| URL | Description |
|---|---|
/dashboard |
View profile and application status |
By default, only these emails can register as admins:
lui@akawnt.comadmin@akawnt.com
To add more, insert into admin_whitelists table or seed it.
| Role | Description |
|---|---|
admin |
Administrators who manage applications |
accountant |
Accepted job applicants |
pending → reviewing → accepted/declined (terminal)
-
Register an admin:
- Go to
/admin/register - Use a whitelisted email (e.g.,
admin@akawnt.com) - Complete registration
- Go to
-
Submit a job application:
- Go to
/home - Fill out the application form
- Upload a resume (PDF, DOC, DOCX - max 5MB)
- Go to
-
Accept the application:
- Login as admin at
/admin/login - Go to
/admin/dashboard - Find the application, click "Accept"
- An email will be sent with login credentials
- Login as admin at
-
Applicant login:
- Check the email for temporary password
- Go to
/login - Use email and temporary password
- Access
/dashboardto view status
Resumes are stored in storage/app/private/ and are not publicly accessible. Only admins can download them through the application detail page.
For Gmail SMTP:
- Enable 2-Factor Authentication on your Google account
- Generate an App Password: Google Account → Security → App passwords
- Use the app password as
MAIL_PASSWORDin.env
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── AuthController.php
│ │ │ ├── ApplicationController.php
│ │ │ └── Admin|DashboardController.php
│ │ └── Middleware/
│ │ ├── AdminMiddleware.php
│ │ └── ApplicantMiddleware.php
│ ├── Mail/
│ │ ├── ApplicationAccepted.php
│ │ └── ApplicationDeclined.php
│ └── Models/
│ ├── JobApplication.php
│ ├── AdminWhitelist.php
│ └── User.php
├── database/migrations/
├── resources/views/
│ ├── layouts/
│ ├── auth/
│ ├── admin/
│ ├── applicant/
│ ├── emails/
│ └── partials/
└── routes/web.php
This project is proprietary software for Akawnt.