🎉 Now using Filament 4! 🎉
A Laravel Filament 4 application for managing projects with ticket management and status tracking.
- Project management with ticket prefix configuration
- Role-based access control (using Filament Shield)
- Team member management with role assignments
- Customizable ticket statuses with color coding
- Ticket management with assignees and due dates
- Unique ticket identifiers
- Epic management for organizing tickets into larger initiatives
- Comment system for tickets to facilitate team discussions
- Kanban board view for visualizing ticket progress
- Assign ticket to multi users
- User contributions chart
- Timeline view
- Export ticket data to CSV
- Leaderboard for team member performance
- External dashboard view (Client Portal)
- PHP > 8.2+
- Laravel 12
- Composer
- Node.js & npm
-
Clone the repository:
git clone https://github.com/SeptiawanAjiP/dewakoding-project-management cd dewakoding-project-management -
Install dependencies:
composer install npm install
-
Set up environment:
cp .env.example .env php artisan key:generate
-
Configure database in
.envfile:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=dewakoding_project_management DB_USERNAME=root DB_PASSWORD=
-
Run migrations:
php artisan migrate
-
Create storage link for file uploads:
php artisan storage:link
-
Create a Filament admin user:
php artisan make:filament-user
-
Activate Role & Permission:
php artisan shield:setup php artisan shield:install php artisan shield:super-admin
-
Compile assets:
npm run dev
-
Start the development server:
php artisan serve
- Access the Filament admin panel at
http://localhost:8000/admin - Log in with the Filament user credentials you created
- Create a new project with custom ticket prefix
- Add team members to the project
- Create and customize ticket statuses
- Add tickets and assign to team members
Important Notice: This project has been upgraded to Filament 4. If you're upgrading from a previous version that used Filament 3, please follow these steps carefully:
- Backup your database before starting the upgrade process
- Make sure you have the latest version of the codebase
The upgrade process for Filament Shield requires special attention. Please read the official upgrade guide first: Filament Shield Upgrade Guide
After updating your dependencies and following the official guide, run the following command to regenerate Shield policies and permissions:
php artisan shield:generate --all --option=policiesNote: Some upgrade steps related to filament-shield have already been implemented in the codebase. The command above will ensure all policies and permissions are properly generated for Filament 4 compatibility.
- Clear all caches:
php artisan optimize:clear - Test your role-based permissions
- Verify that all resources, pages, and widgets are accessible
- Check that user roles and permissions are working correctly
The Board View offers a familiar kanban-style interface for ticket management:
- Drag-and-drop tickets between status columns
- Customize columns to match your team's process
- Quick-edit functionality for updating tickets directly from the board
The Timeline feature provides a chronological perspective of your project work:
- Visualize project roadmap with start and end dates
- Track milestone completion across time periods
- Easily identify scheduling conflicts or resource bottlenecks
Epics help organize related tickets into larger initiatives:
- Group tickets by feature, release, or business objective
- Track progress across multiple tickets
- Set start and end dates for planning purposes
- Visualize which tickets belong to which initiatives
The comment system enhances team collaboration:
- Team members can discuss tickets directly in the application
- All comments are timestamped and attributed to users
- Supports rich text formatting for improved readability
- Enables better context sharing and decision documentation
This application supports Google OAuth login. Here's how to configure it:
-
Open Google Cloud Console
- Visit Google Cloud Console
- Sign in with your Google account
-
Create or Select a Project
- Create a new project or select an existing one
- Make sure the project is active
-
Enable Google+ API
- In the sidebar, select "APIs & Services" > "Library"
- Search for "Google+ API" and click "Enable"
-
Create OAuth 2.0 Credentials
- In the sidebar, select "APIs & Services" > "Credentials"
- Click "Create Credentials" > "OAuth 2.0 Client IDs"
- Select "Web application" as the application type
- Enter application name (example: "DewaKoding Project Management")
- In "Authorized redirect URIs", add:
http://localhost:8000/auth/google/callback https://yourdomain.com/auth/google/callback - Click "Create"
-
Copy Client ID and Client Secret
- After creation, you will get Client ID and Client Secret
- Copy both values for application configuration
Add Google OAuth configuration in .env file:
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_hereReplace your_google_client_id_here and your_google_client_secret_here with the values you obtained from Google Cloud Console.
- Open the application login page at
/admin/login - Click the "Continue with Google" button
- Sign in with your Google account
- The application will automatically create a new account or log in to an existing account
Note: If the Google email is already registered in the system, the application will link the Google account with the existing account.
This application uses a queue system to send email notifications asynchronously. Here's how to configure and run it:
Configure email in .env file:
# For development (log emails to file)
MAIL_MAILER=log
# For production (SMTP)
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@gmail.com
MAIL_FROM_NAME="DewaKoding Project Management"Ensure queue configuration in .env:
QUEUE_CONNECTION=databaseTo process email notification queues, run the following commands:
php artisan queue:workphp artisan queue:work --daemon --tries=3 --timeout=60-
Install supervisor:
sudo apt-get install supervisor
-
Create configuration file
/etc/supervisor/conf.d/laravel-worker.conf:[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /path/to/your/project/artisan queue:work --sleep=3 --tries=3 --max-time=3600 autostart=true autorestart=true stopasgroup=true killasgroup=true user=www-data numprocs=8 redirect_stderr=true stdout_logfile=/path/to/your/project/storage/logs/worker.log stopwaitsecs=3600
-
Restart supervisor:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
The application sends email notifications for:
- Project Assignment: When a user is added to a project
- Comment Notifications: When there are new comments on tickets
- Ticket Updates: When ticket status changes
Note: Make sure the queue worker is always running to process email notifications. Without the queue worker, emails will not be sent.
This project is licensed under the MIT License.








