{"id":15295979,"url":"https://github.com/girish17/op-mattermost","last_synced_at":"2025-10-18T13:50:20.282Z","repository":{"id":36562448,"uuid":"200087051","full_name":"girish17/op-mattermost","owner":"girish17","description":"OpenProject and Mattermost integration","archived":false,"fork":false,"pushed_at":"2025-04-10T10:51:46.000Z","size":17219,"stargazers_count":32,"open_issues_count":10,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T11:45:13.295Z","etag":null,"topics":["expressjs","mattermost","node-js","op-mattermost","openproject","slash-commands"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/girish17.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","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},"funding":{"custom":["https://www.paypal.me/girishm17"]}},"created_at":"2019-08-01T16:46:36.000Z","updated_at":"2025-04-10T11:03:06.000Z","dependencies_parsed_at":"2025-04-10T11:32:42.204Z","dependency_job_id":"20ff7c44-2646-43ae-971e-39d0bd24b309","html_url":"https://github.com/girish17/op-mattermost","commit_stats":{"total_commits":199,"total_committers":7,"mean_commits":"28.428571428571427","dds":0.6783919597989949,"last_synced_commit":"94b5582e0459527e5eadfdb60a541d4f274140af"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/girish17%2Fop-mattermost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/girish17%2Fop-mattermost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/girish17%2Fop-mattermost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/girish17%2Fop-mattermost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/girish17","download_url":"https://codeload.github.com/girish17/op-mattermost/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248217079,"owners_count":21066633,"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":["expressjs","mattermost","node-js","op-mattermost","openproject","slash-commands"],"created_at":"2024-09-30T18:08:49.725Z","updated_at":"2025-10-18T13:50:20.209Z","avatar_url":"https://github.com/girish17.png","language":"JavaScript","funding_links":["https://www.paypal.me/girishm17"],"categories":[],"sub_categories":[],"readme":"# op-mattermost      ![Node.js CI](https://github.com/girish17/op-mattermost/workflows/Node.js%20CI/badge.svg)\n\n[OpenProject](https://www.openproject.org/) integration for [Mattermost](https://mattermost.com/). Currently, supports following operations using a slash command -\n- Create time entry for a work package\n- Create work package for a project\n- Delete work package\n- View time logs\n- Delete time log\n- Subscribe to OpenProject notifications in Mattermost channel\n\n## Demo\n\n![Demo video](resource/op-mattermost-demo-v0.7.gif) recorded using [Peek](https://github.com/phw/peek).\n\n## Dependencies\n\n- OpenProject community edition\n- Mattermost preview\n- docker\n- Node js and [npm modules](package.json)\n\n## Installing dependencies\n\n- Docker\n  - [Download and install](https://docs.docker.com/install/) instructions\n- OpenProject\n  - Quick install\n    - `docker run -it -p 8080:80 -e SECRET_KEY_BASE=secret openproject/community:11` or\n  - Recommended install\n    - `sudo mkdir -p /var/lib/openproject/{pgdata, static}`\n    - `docker run -d -p 8080:80 --name openproject -e SECRET_KEY_BASE=secret \n       -v /var/lib/openproject/pgdata:/var/openproject/pgdata \n       -v /var/lib/openproject/static:/var/openproject/assets\n       openproject/community:11`\n    - `docker stop openproject`\n    - `docker start openproject`\n  - For up to date info on OpenProject installation refer their [official docs](https://docs.openproject.org/installation-and-operations/installation/docker).\n- Mattermost\n  - `docker run --name mattermost-preview -d --publish 8065:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview`\n- Node js\n  - [Download and install](https://nodejs.org/en/download/)\n  - Run `npm install` to install npm dependencies\n\n## Setup\n\n- Fork and `git clone` the repo using HTTPS\n- Install and launch all the dependencies as mentioned above and open the cloned directory in an editor or IDE of your choice\n- Run `sh configure.sh` to create `.env` using bash command line. Alternatively, create a `.env` file using a text editor with the following entries:\n    - `OP_URL=http://\u003cyour host or ip address\u003e:8080/api/v3/`   (needed for pointing to OpenProject installation)\n    - `INT_URL=http://\u003cyour host or ip address\u003e:3000/`         (needed for exposing the integration running on port 3000)\n    - `MM_URL=http://\u003cyour host or ip address\u003e:8065/api/v4/`   (needed for pointing to Mattermost installation)\n    - `MATTERMOST_SLASH_TOKEN=\u003cuse the mattermost slash command token for logtime\u003e`\n      - To obtain this token create a custom Mattermost slash command `/op` as described [here](https://developers.mattermost.com/integrate/slash-commands/custom/) and provide localhost or IP address (with port 3000) as the request URL and method as `POST`\n    - `MATTERMOST_BOT_TOKEN=\u003cuse the mattermost bot access token\u003e`  (needed for validation for posting messages as bot)\n      - To obtain this token create a bot account with *System Admin* access as described [here](https://developers.mattermost.com/integrate/reference/bot-accounts/#bot-account-creation) \n    - `OP_ACCESS_TOKEN=\u003copenproject access token (a.k.a apikey) obtained from user account page\u003e`\n- In the project root directory do `npm init` to generate (or update existing) `package.json` file\n- Then run `npm install` to download and install the node modules from npm\n- Run op-mattermost in the console using `npm start` (usually launches on port 3000)\n- In OpenProject, create a custom field `billable hours` for all work packages in a project\n- Test the integration by trying `/op` in the message bar.\n- In case of error while invoking `/op` command:\n  - Check the Developer console for errors\n  - If the error is related `AllowedUntrustedInternalConnections` for the integration then\n    - Go to `System Console` of Mattermost\n    - Provide the integration URL in `Allow untrusted internal connections to`\n    - Save it and retry. \n\n## Slash Command list\n\n- `/op` - Displays the general menu\n- `/op lt` - Log time for a work package\n- `/op cwp` - Create a work package for a project\n- `/op tl` - View time logs of the current user\n- `/op dwp` - Delete work package\n- `/op dtl` - Delete time log entry\n- `/op sub` - Subscribe to OpenProject notifications in Mattermost channel\n\n## Wiki\n\nDevelopment wiki is available [here](https://github.com/girish17/op-mattermost/wiki). It contains the workflows, file description and miscellaneous information necessary for development.\n\n## Plugin\nA Mattermost plugin with limited features mentioned in this project is available [here](https://github.com/girish17/op-mm-plugin).\n\n## Mirror repositories\n\nThis project is also available on following repositories (as an alternative to GitHub) on:\n- Notabug.org at https://notabug.org/girishm/op-mattermost\n- SourceHut at https://sr.ht/~girishm/op-mattermost/\n\n## Sponsors\nThis project was sponsored by [OpenProject Foundation (OPF)](https://github.com/opf) and mentioned in [OpenProject integrations](https://www.openproject.org/docs/system-admin-guide/integrations/#mattermost).\n\n## COPYING\n\n![GPLv3 or later](resource/gplv3-or-later.png)\n\nCopyright (C) 2019 to present, Girish M\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgirish17%2Fop-mattermost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgirish17%2Fop-mattermost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgirish17%2Fop-mattermost/lists"}