Zum Inhalt springen
← Zurück zu den Projekten

Dewakoding Project Management

#DewaKoding Project Management

🎉 Now using Filament 4! 🎉

image 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.

Neue Version verfügbar.