# paw - Ticket System
[](LICENSE)
[](https://www.python.org/downloads/release/python-3120/)
🚀 paw is a comprehensive and open source ticket management system designed to streamline issue tracking and resolution processes for organizations. It provides a centralized platform for users to submit, track, and manage tickets or requests, facilitating efficient communication and collaboration among team members.
## Features
- **Ticket Creation and Submission:** Users can create and submit tickets with detailed information about the issue, including title, description, priority, and category and file attachments.
- **Ticket Assignment and Ownership:** Tickets can be assigned to specific individuals or teams responsible for resolution, allowing for clear ownership and accountability.
- **Communication and Collaboration:** Threaded communication enables seamless collaboration among team members, with the ability to add (internal) comments, attachments, and updates to tickets.
- **Security and Access Control:** Secure user authentication, access controls, and audit trails ensure data privacy and compliance with organizational policies and regulations. You can create teams and restrict access of ticket categories to them.
## Installation
### As a Developer
1. Clone the repository:
```bash
git clone https://github.com/aottr/paw.git
```
2. Install dependencies:
```bash
poetry install
```
3. Configure settings:
Copy `example.env` to `.env` and update the configuration variables as needed.
4. Run migrations:
```bash
poetry run python manage.py migrate
```
5. Start the development server:
```bash
poetry run python manage.py runserver
```
### Docker / OCI Container
The Project contains a [Dockerfile](Dockerfile) that can be built locally or in a pipeline. I also provide the latest state of the `main` branch as an image
#### Compose
1. Create a compose file, e.g. `docker-compose.yml`
```bash
version: '3.8'
services:
paw:
image: ghcr.io/aottr/paw:latest
container_name: paw-ticket-system
command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
restart: unless-stopped
ports:
- "127.0.0.1:8000:8000"
env_file:
- .env
```
2. Run the container with compose
```bash
docker compose up -d
```
3. Migrate the database (optional, recommended)
```bash
docker compose exec paw python manage.py migrate
```
4. Collect static files (optional, recommended)
```bash
docker compose exec paw python manage.py collectstatic --no-input
```
## Usage
- Access the application through `http://localhost:8000`.
- Register an account or log in with existing credentials.
- Start creating and managing tickets based on your role and permissions.
### Sending Mails
If not configured, mails get sent to the console stdout. This is (mainly) for use in dev environments.
SMTP can be used by setting the `MAIL_SERVER` variable to `smtp`.
To also assign a display name when sending mails, adjust the `EMAIL_FROM` variable in the following format:
```
EMAIL_FROM='Don't Reply '
```
## Contributing
🙌 Contributions are welcome! Please follow the [guidelines](CONTRIBUTING.md).
## License
This project is licensed under the [MIT License](LICENSE).