{"id":13401965,"url":"https://github.com/canove/whaticket-community","last_synced_at":"2025-05-14T02:06:37.816Z","repository":{"id":37423647,"uuid":"273333566","full_name":"canove/whaticket-community","owner":"canove","description":"A very simple Ticket System based on WhatsApp messages, that allow multi-users in same WhatsApp account.","archived":false,"fork":false,"pushed_at":"2024-10-14T21:35:25.000Z","size":123102,"stargazers_count":1834,"open_issues_count":29,"forks_count":930,"subscribers_count":127,"default_branch":"master","last_synced_at":"2025-05-13T10:14:51.012Z","etag":null,"topics":["bot","chat","javascript","tickets","whatsapp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/canove.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-18T20:26:58.000Z","updated_at":"2025-05-13T06:18:42.000Z","dependencies_parsed_at":"2024-01-14T03:48:48.755Z","dependency_job_id":"ce6abedf-4f57-43b0-b845-ae2d9bc06d08","html_url":"https://github.com/canove/whaticket-community","commit_stats":{"total_commits":647,"total_committers":38,"mean_commits":"17.026315789473685","dds":0.231839258114374,"last_synced_commit":"aef1a8727bae445067ee01e7845c9c48ba36e809"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canove%2Fwhaticket-community","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canove%2Fwhaticket-community/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canove%2Fwhaticket-community/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canove%2Fwhaticket-community/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canove","download_url":"https://codeload.github.com/canove/whaticket-community/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052711,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","chat","javascript","tickets","whatsapp"],"created_at":"2024-07-30T19:01:09.860Z","updated_at":"2025-05-14T02:06:32.795Z","avatar_url":"https://github.com/canove.png","language":"JavaScript","funding_links":["https://www.paypal.com/donate?business=VWW3BHW4AWHUY\u0026item_name=Desenvolvimento+de+Software\u0026currency_code=BRL","https://www.buymeacoffee.com/canove"],"categories":["JavaScript"],"sub_categories":[],"readme":"[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/donate?business=VWW3BHW4AWHUY\u0026item_name=Desenvolvimento+de+Software\u0026currency_code=BRL)\n[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B21084%2Fgithub.com%2Fcanove%2Fwhaticket.svg?type=shield)](https://app.fossa.com/projects/custom%2B21084%2Fgithub.com%2Fcanove%2Fwhaticket?ref=badge_shield)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=canove_whaticket\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=canove_whaticket)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=canove_whaticket\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=canove_whaticket)\n[![Discord Chat](https://img.shields.io/discord/784109818247774249.svg?logo=discord)](https://discord.gg/Dp2tTZRYHg)\n[![Forum](https://img.shields.io/badge/forum-online-blue.svg?logo=discourse)](https://whaticket.online/)\n\n# WhaTicket!\n\n**NOTE**: The new version of whatsapp-web.js required Node 14. Upgrade your installations to keep using it.\n\nA _very simple_ Ticket System based on WhatsApp messages.\n\nBackend uses [whatsapp-web.js](https://github.com/pedroslopez/whatsapp-web.js) to receive and send WhatsApp messages, create tickets from them and store all in a MySQL database.\n\nFrontend is a full-featured multi-user _chat app_ bootstrapped with react-create-app and Material UI, that comunicates with backend using REST API and Websockets. It allows you to interact with contacts, tickets, send and receive WhatsApp messages.\n\n**NOTE**: I can't guarantee you will not be blocked by using this method, although it has worked for me. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.\n\n## How it works?\n\nOn every new message received in an associated WhatsApp, a new Ticket is created. Then, this ticket can be reached in a _queue_ on _Tickets_ page, where you can assign ticket to your yourself by _aceppting_ it, respond ticket message and eventually _resolve_ it.\n\nSubsequent messages from same contact will be related to first **open/pending** ticket found.\n\nIf a contact sent a new message in less than 2 hours interval, and there is no ticket from this contact with **pending/open** status, the newest **closed** ticket will be reopen, instead of creating a new one.\n\n## Screenshots\n\n![](https://github.com/canove/whaticket/raw/master/images/whaticket-queues.gif)\n\u003cimg src=\"https://raw.githubusercontent.com/canove/whaticket/master/images/chat2.png\" width=\"350\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/canove/whaticket/master/images/chat3.png\" width=\"350\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/canove/whaticket/master/images/multiple-whatsapps2.png\" width=\"350\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/canove/whaticket/master/images/contacts1.png\" width=\"350\"\u003e\n\n## Features\n\n- Have multiple users chating in same WhatsApp Number ✅\n- Connect to multiple WhatsApp accounts and receive all messages in one place ✅ 🆕\n- Create and chat with new contacts without touching cellphone ✅\n- Send and receive message ✅\n- Send media (images/audio/documents) ✅\n- Receive media (images/audio/video/documents) ✅\n\n## Installation and Usage (Linux Ubuntu - Development)\n\nCreate Mysql Database using docker:\n_Note_: change MYSQL_DATABASE, MYSQL_PASSWORD, MYSQL_USER and MYSQL_ROOT_PASSWORD.\n\n```bash\ndocker run --name whaticketdb -e MYSQL_ROOT_PASSWORD=strongpassword -e MYSQL_DATABASE=whaticket -e MYSQL_USER=whaticket -e MYSQL_PASSWORD=whaticket --restart always -p 3306:3306 -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_bin\n\n# Or run using `docker-compose` as below\n# Before copy .env.example to .env first and set the variables in the file.\ndocker-compose up -d mysql\n\n# To administer this mysql database easily using phpmyadmin. \n# It will run by default on port 9000, but can be changed in .env using `PMA_PORT`\ndocker-compose -f docker-compose.phpmyadmin.yaml up -d\n```\n\nInstall puppeteer dependencies:\n\n```bash\nsudo apt-get install -y libxshmfence-dev libgbm-dev wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils\n```\n\nClone this repo\n\n```bash\ngit clone https://github.com/canove/whaticket/ whaticket\n```\n\nGo to backend folder and create .env file:\n\n```bash\ncp .env.example .env\nnano .env\n```\n\nFill `.env` file with environment variables:\n\n```bash\nNODE_ENV=DEVELOPMENT      #it helps on debugging\nBACKEND_URL=http://localhost\nFRONTEND_URL=https://localhost:3000\nPROXY_PORT=8080\nPORT=8080\n\nDB_HOST=                  #DB host IP, usually localhost\nDB_DIALECT=\nDB_USER=\nDB_PASS=\nDB_NAME=\n\nJWT_SECRET=3123123213123\nJWT_REFRESH_SECRET=75756756756\n```\n\nInstall backend dependencies, build app, run migrations and seeds:\n\n```bash\nnpm install\nnpm run build\nnpx sequelize db:migrate\nnpx sequelize db:seed:all\n```\n\nStart backend:\n\n```bash\nnpm start\n```\n\nOpen a second terminal, go to frontend folder and create .env file:\n\n```bash\nnano .env\nREACT_APP_BACKEND_URL = http://localhost:8080/ # Your previous configured backend app URL.\n```\n\nStart frontend app:\n\n```bash\nnpm start\n```\n\n- Go to http://your_server_ip:3000/signup\n- Create an user and login with it.\n- On the sidebard, go to _Connections_ page and create your first WhatsApp connection.\n- Wait for QR CODE button to appear, click it and read qr code.\n- Done. Every message received by your synced WhatsApp number will appear in Tickets List.\n\n## Basic production deployment\n\n### Using Ubuntu 20.04 VPS\n\nAll instructions below assumes you are NOT running as root, since it will give an error in puppeteer. So let's start creating a new user and granting sudo privileges to it:\n\n```bash\nadduser deploy\nusermod -aG sudo deploy\n```\n\nNow we can login with this new user:\n\n```bash\nsu deploy\n```\n\nYou'll need two subdomains forwarding to yours VPS ip to follow these instructions. We'll use `myapp.mydomain.com` to frontend and `api.mydomain.com` to backend in the following example.\n\nUpdate all system packages:\n\n```bash\nsudo apt update \u0026\u0026 sudo apt upgrade\n```\n\nInstall node, and confirm node command is available:\n\n```bash\ncurl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -\nsudo apt-get install -y nodejs\nnode -v\nnpm -v\n```\n\nInstall docker and add you user to docker group:\n\n```bash\nsudo apt install apt-transport-https ca-certificates curl software-properties-common\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -\nsudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable\"\nsudo apt update\nsudo apt install docker-ce\nsudo systemctl status docker\nsudo usermod -aG docker ${USER}\nsu - ${USER}\n```\n\nCreate Mysql Database using docker:\n_Note_: change MYSQL_DATABASE, MYSQL_PASSWORD, MYSQL_USER and MYSQL_ROOT_PASSWORD.\n\n```bash\ndocker run --name whaticketdb -e MYSQL_ROOT_PASSWORD=strongpassword -e MYSQL_DATABASE=whaticket -e MYSQL_USER=whaticket -e MYSQL_PASSWORD=whaticket --restart always -p 3306:3306 -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_bin\n\n# Or run using `docker-compose` as below\n# Before copy .env.example to .env first and set the variables in the file.\ndocker-compose up -d mysql\n\n# To administer this mysql database easily using phpmyadmin. \n# It will run by default on port 9000, but can be changed in .env using `PMA_PORT`\ndocker-compose -f docker-compose.phpmyadmin.yaml up -d\n```\n\nClone this repository:\n\n```bash\ncd ~\ngit clone https://github.com/canove/whaticket whaticket\n```\n\nCreate backend .env file and fill with details:\n\n```bash\ncp whaticket/backend/.env.example whaticket/backend/.env\nnano whaticket/backend/.env\n```\n\n```bash\nNODE_ENV=\nBACKEND_URL=https://api.mydomain.com      #USE HTTPS HERE, WE WILL ADD SSL LATTER\nFRONTEND_URL=https://myapp.mydomain.com   #USE HTTPS HERE, WE WILL ADD SSL LATTER, CORS RELATED!\nPROXY_PORT=443                            #USE NGINX REVERSE PROXY PORT HERE, WE WILL CONFIGURE IT LATTER\nPORT=8080\n\nDB_HOST=localhost\nDB_DIALECT=\nDB_USER=\nDB_PASS=\nDB_NAME=\n\nJWT_SECRET=3123123213123\nJWT_REFRESH_SECRET=75756756756\n```\n\nInstall puppeteer dependencies:\n\n```bash\nsudo apt-get install -y libxshmfence-dev libgbm-dev wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils\n```\n\nInstall backend dependencies, build app, run migrations and seeds:\n\n```bash\ncd whaticket/backend\nnpm install\nnpm run build\nnpx sequelize db:migrate\nnpx sequelize db:seed:all\n```\n\nStart it with `npm start`, you should see: `Server started on port...` on console. Hit `CTRL + C` to exit.\n\nInstall pm2 **with sudo**, and start backend with it:\n\n```bash\nsudo npm install -g pm2\npm2 start dist/server.js --name whaticket-backend\n```\n\nMake pm2 auto start after reboot:\n\n```bash\npm2 startup ubuntu -u `YOUR_USERNAME`\n```\n\nCopy the last line outputed from previus command and run it, its something like:\n\n```bash\nsudo env PATH=\\$PATH:/usr/bin pm2 startup ubuntu -u YOUR_USERNAME --hp /home/YOUR_USERNAM\n```\n\nGo to frontend folder and install dependencies:\n\n```bash\ncd ../frontend\nnpm install\n```\n\nCreate frontend .env file and fill it ONLY with your backend address, it should look like this:\n\n```bash\nREACT_APP_BACKEND_URL = https://api.mydomain.com/\n```\n\nBuild frontend app:\n\n```bash\nnpm run build\n```\n\nStart frontend with pm2, and save pm2 process list to start automatically after reboot:\n\n```bash\npm2 start server.js --name whaticket-frontend\npm2 save\n```\n\nTo check if it's running, run `pm2 list`, it should look like:\n\n```bash\ndeploy@ubuntu-whats:~$ pm2 list\n┌─────┬─────────────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐\n│ id  │ name                    │ namespace   │ version │ mode    │ pid      │ uptime │ .    │ status    │ cpu      │ mem      │ user     │ watching │\n├─────┼─────────────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤\n│ 1   │ whaticket-frontend      │ default     │ 0.1.0   │ fork    │ 179249   │ 12D    │ 0    │ online    │ 0.3%     │ 50.2mb   │ deploy   │ disabled │\n│ 6   │ whaticket-backend       │ default     │ 1.0.0   │ fork    │ 179253   │ 12D    │ 15   │ online    │ 0.3%     │ 118.5mb  │ deploy   │ disabled │\n└─────┴─────────────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘\n\n```\n\nInstall nginx:\n\n```bash\nsudo apt install nginx\n```\n\nRemove nginx default site:\n\n```bash\nsudo rm /etc/nginx/sites-enabled/default\n```\n\nCreate a new nginx site to frontend app:\n\n```bash\nsudo nano /etc/nginx/sites-available/whaticket-frontend\n```\n\nEdit and fill it with this information, changing `server_name` to yours equivalent to `myapp.mydomain.com`:\n\n```bash\nserver {\n  server_name myapp.mydomain.com;\n\n  location / {\n    proxy_pass http://127.0.0.1:3333;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection 'upgrade';\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_cache_bypass $http_upgrade;\n  }\n}\n```\n\nCreate another one to backend api, changing `server_name` to yours equivalent to `api.mydomain.com`, and `proxy_pass` to your localhost backend node server URL:\n\n```bash\nsudo cp /etc/nginx/sites-available/whaticket-frontend /etc/nginx/sites-available/whaticket-backend\nsudo nano /etc/nginx/sites-available/whaticket-backend\n```\n\n```bash\nserver {\n  server_name api.mydomain.com;\n\n  location / {\n    proxy_pass http://127.0.0.1:8080;\n    ......\n}\n```\n\nCreate a symbolic links to enable nginx sites:\n\n```bash\nsudo ln -s /etc/nginx/sites-available/whaticket-frontend /etc/nginx/sites-enabled\nsudo ln -s /etc/nginx/sites-available/whaticket-backend /etc/nginx/sites-enabled\n```\n\nBy default, nginx limit body size to 1MB, which isn't enough for some media uploads. Lets change it to 20MB, adding a new line to config file:\n\n```bash\nsudo nano /etc/nginx/nginx.conf\n...\nhttp {\n    ...\n    client_max_body_size 20M; # HANDLE BIGGER UPLOADS\n}\n```\n\nTest nginx configuration and restart server:\n\n```bash\nsudo nginx -t\nsudo service nginx restart\n```\n\nNow, enable SSL (https) on your sites to use all app features like notifications and sending audio messages. An easy way to this is using Certbot:\n\nInstall certbot:\n\n```bash\nsudo snap install --classic certbot\nsudo apt update\n```\n\nEnable SSL on nginx (Fill / Accept all information required):\n\n```bash\nsudo certbot --nginx\n```\n\n### Using docker and docker-compose\n\nTo run WhaTicket using docker you must perform the following steps:\n\n```bash\ncp .env.example .env\n```\n\nNow it will be necessary to configure the .env using its information, the variables are the same as those mentioned in the deployment using ubuntu, with the exception of mysql settings that were not in the .env. \n\n```bash\n# MYSQL\nMYSQL_ENGINE=                           # default: mariadb\nMYSQL_VERSION=                          # default: 10.6\nMYSQL_ROOT_PASSWORD=strongpassword      # change it please\nMYSQL_DATABASE=whaticket\nMYSQL_PORT=3306                         # default: 3306; Use this port to expose mysql server\nTZ=America/Fortaleza                    # default: America/Fortaleza; Timezone for mysql\n\n# BACKEND\nBACKEND_PORT=                           # default: 8080; but access by host not use this port\nBACKEND_SERVER_NAME=api.mydomain.com\nBACKEND_URL=https://api.mydomain.com\nPROXY_PORT=443\nJWT_SECRET=3123123213123                # change it please\nJWT_REFRESH_SECRET=75756756756          # change it please\n\n# FRONTEND\nFRONTEND_PORT=80                        # default: 3000; Use port 80 to expose in production\nFRONTEND_SSL_PORT=443                   # default: 3001; Use port 443 to expose in production\nFRONTEND_SERVER_NAME=myapp.mydomain.com\nFRONTEND_URL=https://myapp.mydomain.com\n\n# BROWSERLESS\nMAX_CONCURRENT_SESSIONS=                # default: 1; Use only if using browserless\n```\n\nAfter defining the variables, run the following command:\n\n```bash\ndocker-compose up -d --build\n```\n\nOn the `first` run it will be necessary to seed the database tables using the following command:\n\n```bash\ndocker-compose exec backend npx sequelize db:seed:all\n```\n\n#### SSL Certificate\n\nTo deploy the ssl certificate, add it to the `ssl/certs` folder. Inside it there should be a `backend` and a `frontend` folder, and each of them should contain the files `fullchain.pem` and `privkey.pem`, as in the structure below:\n\n```bash\n.\n├── certs\n│   ├── backend\n│   │   ├── fullchain.pem\n│   │   └── privkey.pem\n│   └── frontend\n│       ├── fullchain.pem\n│       └── privkey.pem\n└── www\n```\n\nTo generate the certificate files use `certbot` which can be installed using snap, I used the following command:\n\nNote: The frontend container that runs nginx is already prepared to receive the request made by certboot to validate the certificate.\n\n```bash\n# BACKEND\ncertbot certonly --cert-name backend --webroot --webroot-path ./ssl/www/ -d api.mydomain.com\n\n# FRONTEND\ncertbot certonly --cert-name frontend --webroot --webroot-path ./ssl/www/ -d myapp.mydomain.com\n```\n\n## Access Data\n\nUser: admin@whaticket.com\nPassword: admin\n\n## Upgrading\n\nWhaTicket is a working in progress and we are adding new features frequently. To update your old installation and get all the new features, you can use a bash script like this:\n\n**Note**: Always check the .env.example and adjust your .env file before upgrading, since some new variable may be added.\n\n```bash\nnano updateWhaticket\n```\n\n```bash\n#!/bin/bash\necho \"Updating Whaticket, please wait.\"\n\ncd ~\ncd whaticket\ngit pull\ncd backend\nnpm install\nrm -rf dist\nnpm run build\nnpx sequelize db:migrate\nnpx sequelize db:seed\ncd ../frontend\nnpm install\nrm -rf build\nnpm run build\npm2 restart all\n\necho \"Update finished. Enjoy!\"\n```\n\nMake it executable and run it:\n\n```bash\nchmod +x updateWhaticket\n./updateWhaticket\n```\n\n## Contributing\n\nThis project helps you and you want to help keep it going? Buy me a coffee:\n\n\u003ca href=\"https://www.buymeacoffee.com/canove\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 61px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\nPara doações em BRL, utilize o Paypal:\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/donate?business=VWW3BHW4AWHUY\u0026item_name=Desenvolvimento+de+Software\u0026currency_code=BRL)\n\nAny help and suggestions will be apreciated.\n\n## Disclaimer\n\nI just started leaning Javascript a few months ago and this is my first project. It may have security issues and many bugs. I recommend using it only on local network.\n\nThis project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at https://whatsapp.com. \"WhatsApp\" as well as related names, marks, emblems and images are registered trademarks of their respective owners.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanove%2Fwhaticket-community","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanove%2Fwhaticket-community","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanove%2Fwhaticket-community/lists"}