A self-hosted web portal that connects to the Jira Cloud API and simplifies issue tracking for multiple users through a single authenticated account.
Built with Symfony 7.2, Docker, and FrankenPHP, this project includes project/user management, ticket interaction, Kanban boards, notifications, and more.
- Login portal with user management
- Multi-project dashboard and statistics
- View, comment, and update Jira issues
- Assignee, priority, type, and status editing
- Attachment preview and download
- Kanban board synced with Jira project configuration
- Notification system (via Jira Webhook)
- Admin panel to manage users, projects, and logs
- Backend: Symfony 7.2, PHP 8.3+
- Frontend: Webpack Encore (JS & CSS bundling)
- Runtime: FrankenPHP (standalone binary)
- Dev Environment: Docker + Make
- Database: MariaDB (or any DB supported by Symfony)
- Jira Integration: php-JiraCloud-RESTAPI
Make sure Docker and npm are installed, then:
make start
The app will be available at: https://localhost
Download the latest FrankenPHP binary build from GitHub Releases and follow the binary setup guide.
The following variables must be configured (via .env or your server):
###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=your-secret-key
###<> symfony/framework-bundle ###
###> symfony/mailer ###
MAILER_DSN=smtp://user:pass@mailserver
[email protected]
###< symfony/mailer ###
###> doctrine/doctrine-bundle ###
DATABASE_URL=mysql://user:pass@db:3306/dbname
###< doctrine/doctrine-bundle ###
###> hosts ###
ROUTER_REQUEST_CONTEXT_HOST=localhost
ROUTER_REQUEST_CONTEXT_SCHEME=https
###< hosts ###
###> lesstif/php-jira-rest-client ###
[email protected]
JIRAAPI_V3_PERSONAL_ACCESS_TOKEN=your-jira-token
JIRAAPI_V3_HOST=https://your-domain.atlassian.net
###< lesstif/php-jira-rest-client ###
###> spiriitlabs/jira-service-desk ###
JIRA_ACCOUNT_ID=''
DEFAULT_PRIORITY_NAME=''
NOT_AVAILABLE_TYPES_JIRA_ID="[]"
###< spiriitlabs/jira-service-desk ###
-
Authentication:
- Users log in via the web portal.
-
Dashboard:
- After logging in, users are presented with a dashboard that shows an overview of Jira issues and statistics, including:
- Active projects
- Assigned tickets
- Favorite(s)
- After logging in, users are presented with a dashboard that shows an overview of Jira issues and statistics, including:
-
Viewing & Managing Jira Issues:
- Users can view a list of Jira issues within their assigned projects.
- Each issue displays:
- Issue title, description, and comments.
- Attachments (downloadable and previewable).
- Key fields such as assignee, priority, issue type, and current status.
-
Commenting & Updating Issues:
- Users can add comments to Jira issues.
- Admins and authorized users can update key fields of an issue, such as:
- Assignee: Change who is responsible for the task.
- Priority: Update the issue’s priority.
- Type: Modify issue type (e.g., Bug, Task, Story).
- State: Change the status (e.g., In Progress, Done).
-
Kanban Board View:
- A Kanban board view is available for project-related Jira tickets.
- Users can see the issue status and manage issues via drag-and-drop.
-
Notifications:
- Users receive notifications when:
- New tickets are created.
- Tickets are updated (comments added, fields changed, etc.).
- New comment are created.
- Comment is updated.
- Notifications are handled through Jira Webhooks, so real-time updates are reflected in the app.
- Users receive notifications when:
-
Admin Panel:
- Admin users can manage the system, including:
- Adding/updating/removing users.
- Adding/removing projects.
- Assigning users to projects.
- Viewing and filtering logs.
- Managing settings and configurations.
The application supports real-time notifications from Jira using webhooks.
You can follow the detailed setup instructions in documentation/deployment.md
to integrate the webhook functionality and start receiving updates from Jira.
This project is licensed under the MIT License. See the LICENSE file for details.
- Symfony — MIT License
- FrankenPHP — MIT License
- php-JiraCloud-RESTAPI — Apache 2.0 License