From b8ef337625510b0d278c153c8f80bd74d31f9f4f Mon Sep 17 00:00:00 2001 From: DrMxrcy <58747968+DrMxrcy@users.noreply.github.com> Date: Tue, 4 Apr 2023 02:11:09 -0400 Subject: [PATCH] Add Peppermint (#305) * Add Peppermint * Update docker-compose.yml * Update Config * Update docker-compose.yml * Update docker-compose.yml --- README.md | 1 + apps/peppermint/config.json | 23 ++++++++++++++ apps/peppermint/docker-compose.yml | 40 ++++++++++++++++++++++++ apps/peppermint/metadata/description.md | 39 +++++++++++++++++++++++ apps/peppermint/metadata/logo.jpg | Bin 0 -> 7368 bytes 5 files changed, 103 insertions(+) create mode 100644 apps/peppermint/config.json create mode 100644 apps/peppermint/docker-compose.yml create mode 100644 apps/peppermint/metadata/description.md create mode 100644 apps/peppermint/metadata/logo.jpg diff --git a/README.md b/README.md index 37123c3b..c0e4574a 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Openbooks](https://github.com/evan-buss/openbooks) - Search and Download eBooks - [Overseerr](https://github.com/sct/overseerr) - Request management and media discovery tool for the Plex ecosystem - [Owncloud](https://github.com/owncloud/core) - A personal cloud which runs on your own server. +- [Peppermint](https://github.com/Peppermint-Lab/peppermint) - An open source ticket management & help desk solution. - [Photoprism](https://github.com/photoprism/photoprism) - AI-Powered Photos App for the Decentralized Web. We are on a mission to protect your freedom and privacy. - [Pihole](https://github.com/pi-hole/pi-hole) - A black hole for Internet advertisements - [Plex](https://github.com/plexinc/pms-docker) - Stream Movies & TV Shows diff --git a/apps/peppermint/config.json b/apps/peppermint/config.json new file mode 100644 index 00000000..65f43e53 --- /dev/null +++ b/apps/peppermint/config.json @@ -0,0 +1,23 @@ +{ + "$schema": "../schema.json", + "name": "Peppermint", + "port": 8176, + "available": true, + "exposable": true, + "id": "peppermint", + "tipi_version": 1, + "version": "latest", + "categories": ["utilities"], + "description": "An open source ticket management & help desk solution.", + "short_desc": "An open source ticket management & help desk solution.", + "author": "Peppermint-Lab", + "source": "https://github.com/Peppermint-Lab/peppermint", + "form_fields": [ + { + "type": "random", + "label": "Peppermint DB Password", + "min": 32, + "env_variable": "PEPPERMINT_DB_PASSWORD" + } + ] +} \ No newline at end of file diff --git a/apps/peppermint/docker-compose.yml b/apps/peppermint/docker-compose.yml new file mode 100644 index 00000000..081c29b6 --- /dev/null +++ b/apps/peppermint/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.7" + +services: + peppermint: + image: pepperlabs/peppermint:latest + container_name: peppermint + environment: + - PORT=5000 + - DB_USERNAME=tipi + - DB_PASSWORD=${PEPPERMINT_DB_PASSWORD} + - DB_HOST=peppermint-db + - BASE_URL=https://${APP_DOMAIN} + restart: unless-stopped + ports: + - ${APP_PORT}:5000 + depends_on: + - peppermint-db + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.peppermint.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.peppermint.entrypoints: websecure + traefik.http.routers.peppermint.service: peppermint + traefik.http.routers.peppermint.tls.certresolver: myresolver + traefik.http.services.peppermint.loadbalancer.server.port: 5000 + + peppermint-db: + container_name: peppermint-db + image: postgres:latest + restart: unless-stopped + environment: + - POSTGRES_USER=tipi + - POSTGRES_PASSWORD=${PEPPERMINT_DB_PASSWORD} + - POSTGRES_DB=peppermint + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + networks: + - tipi_main_network + diff --git a/apps/peppermint/metadata/description.md b/apps/peppermint/metadata/description.md new file mode 100644 index 00000000..ae1d8192 --- /dev/null +++ b/apps/peppermint/metadata/description.md @@ -0,0 +1,39 @@ +Ticket Management System in order to help helpdesks & service desks manage internal staff & customer requests + +The default login credentials are + +``` +User: admin@admin.com +Password: 1234 +``` + +## [](https://github.com/Peppermint-Lab/peppermint#introduction)Introduction + +It's a self hosted alternative to popular services such as zendesk + +[![](https://github.com/Peppermint-Lab/peppermint/raw/master/static/homepage.png)](https://github.com/Peppermint-Lab/peppermint/blob/master/static/homepage.png) + +## [](https://github.com/Peppermint-Lab/peppermint#-features)✨ Features + +- **Ticket Creation**: Bog standard ticket creation with a markdown editor and file uploads +- **A log of client history** +- **Markdown based Notebook with todo lists** +- **Responsive**: Designed for variable screen sizes from mobile up to 4k +- **Multi-deployment**: Quickly deploy using docker & pm2 +- **Simple to Use**: Designed to be easy to use with a simple logical workflow + +## [](https://github.com/Peppermint-Lab/peppermint#documentation)Documentation + +We have started working on creating documentation for peppermint which covers development to general usage. Click [here](https://docs.peppermint.sh) to be taken directly there. + +## [](https://github.com/Peppermint-Lab/peppermint#motivation)Motivation + +- This was initially a project to tie together my react and nodeJS skills and show something for my portfolio +- It looked terrible! But it worked and showed functionaility, which got me a job. +- Learn and deploy with docker +- Redo the UI, completly from the ground up. Which has now been completed and for me looks great. +- Build on this foundation and create a fully fledged product which offers what the big boys offer, but, at a much better ROI than signing up for zendesk etc. + +## [](https://github.com/Peppermint-Lab/peppermint#screenshots)Screenshots + +[![Logo](https://github.com/Peppermint-Lab/peppermint/raw/master/static/homepage.png)](https://github.com/Peppermint-Lab/peppermint/blob/master/static/homepage.png) [![Logo](https://github.com/Peppermint-Lab/peppermint/raw/master/static/create_a_ticket.png)](https://github.com/Peppermint-Lab/peppermint/blob/master/static/create_a_ticket.png) [![Logo](https://github.com/Peppermint-Lab/peppermint/raw/master/static/tickets.png)](https://github.com/Peppermint-Lab/peppermint/blob/master/static/tickets.png) [![Logo](https://github.com/Peppermint-Lab/peppermint/raw/master/static/detail.png)](https://github.com/Peppermint-Lab/peppermint/blob/master/static/detail.png) \ No newline at end of file diff --git a/apps/peppermint/metadata/logo.jpg b/apps/peppermint/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..419ac25d918bcaae72eeee2880fa586fe1d9c76f GIT binary patch literal 7368 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 literal 0 HcmV?d00001