Skip to content

FathaAdillah/project-management

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DewaKoding Project Management

🎉 Now using Filament 4! 🎉

image image image

A Laravel Filament 4 application for managing projects with ticket management and status tracking.

Features

  • 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)

Requirements

  • PHP > 8.2+
  • Laravel 12
  • Composer
  • Node.js & npm

image image image image image

Installation

  1. Clone the repository:

    git clone https://github.com/SeptiawanAjiP/dewakoding-project-management
    cd dewakoding-project-management
  2. Install dependencies:

    composer install
    npm install
  3. Set up environment:

    cp .env.example .env
    php artisan key:generate
  4. Configure database in .env file:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dewakoding_project_management
    DB_USERNAME=root
    DB_PASSWORD=
  5. Run migrations:

    php artisan migrate
  6. Create storage link for file uploads:

    php artisan storage:link
  7. Create a Filament admin user:

    php artisan make:filament-user
  8. Activate Role & Permission:

    php artisan shield:setup
    php artisan shield:install
    php artisan shield:super-admin
  9. Compile assets:

    npm run dev
  10. Start the development server:

    php artisan serve

Usage

  1. Access the Filament admin panel at http://localhost:8000/admin
  2. Log in with the Filament user credentials you created
  3. Create a new project with custom ticket prefix
  4. Add team members to the project
  5. Create and customize ticket statuses
  6. Add tickets and assign to team members

⚠️ Upgrade from Filament 3 to Filament 4

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:

Prerequisites

  1. Backup your database before starting the upgrade process
  2. Make sure you have the latest version of the codebase

Filament Shield Upgrade Steps

The upgrade process for Filament Shield requires special attention. Please read the official upgrade guide first: Filament Shield Upgrade Guide

Required Commands

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=policies

Note: 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.

Post-Upgrade Verification

  1. Clear all caches: php artisan optimize:clear
  2. Test your role-based permissions
  3. Verify that all resources, pages, and widgets are accessible
  4. Check that user roles and permissions are working correctly

Main Features

Board View

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

Timeline View

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

Epic Management

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

Ticket Comments

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

Google Login Integration

This application supports Google OAuth login. Here's how to configure it:

1. Getting Google OAuth Credentials

  1. Open Google Cloud Console

  2. Create or Select a Project

    • Create a new project or select an existing one
    • Make sure the project is active
  3. Enable Google+ API

    • In the sidebar, select "APIs & Services" > "Library"
    • Search for "Google+ API" and click "Enable"
  4. 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"
  5. Copy Client ID and Client Secret

    • After creation, you will get Client ID and Client Secret
    • Copy both values for application configuration

2. Environment Configuration

Add Google OAuth configuration in .env file:

GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here

Replace your_google_client_id_here and your_google_client_secret_here with the values you obtained from Google Cloud Console.

3. How to Use

  1. Open the application login page at /admin/login
  2. Click the "Continue with Google" button
  3. Sign in with your Google account
  4. 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.

Queue & Email Notifications

This application uses a queue system to send email notifications asynchronously. Here's how to configure and run it:

1. Email Configuration

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"

2. Queue Configuration

Ensure queue configuration in .env:

QUEUE_CONNECTION=database

3. Running Queue Worker

To process email notification queues, run the following commands:

Development Mode

php artisan queue:work

Production Mode (with automatic restart)

php artisan queue:work --daemon --tries=3 --timeout=60

Using Supervisor (Recommended for Production)

  1. Install supervisor:

    sudo apt-get install supervisor
  2. 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
  3. Restart supervisor:

    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start laravel-worker:*

4. Email Notification Types

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.

License

This project is licensed under the MIT License.

About

Project management tool built with Laravel Filament for simple and efficient task tracking.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 60.6%
  • Blade 38.6%
  • Other 0.8%