{"id":13608013,"url":"https://github.com/mattermost/mattermost-developer-documentation","last_synced_at":"2025-08-10T21:18:06.398Z","repository":{"id":38238662,"uuid":"98680191","full_name":"mattermost/mattermost-developer-documentation","owner":"mattermost","description":"Mattermost developer documentation.","archived":false,"fork":false,"pushed_at":"2025-08-06T14:51:47.000Z","size":61220,"stargazers_count":84,"open_issues_count":36,"forks_count":426,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-08-06T15:41:16.493Z","etag":null,"topics":["developer","documentation","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://developers.mattermost.com","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattermost.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2017-07-28T19:12:28.000Z","updated_at":"2025-08-06T14:51:52.000Z","dependencies_parsed_at":"2023-02-16T09:31:20.634Z","dependency_job_id":"4cb22a84-6dee-4f85-86b4-ffcb456a4506","html_url":"https://github.com/mattermost/mattermost-developer-documentation","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mattermost/mattermost-developer-documentation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fmattermost-developer-documentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fmattermost-developer-documentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fmattermost-developer-documentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fmattermost-developer-documentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattermost","download_url":"https://codeload.github.com/mattermost/mattermost-developer-documentation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fmattermost-developer-documentation/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269790038,"owners_count":24476191,"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","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["developer","documentation","hacktoberfest"],"created_at":"2024-08-01T19:01:23.561Z","updated_at":"2025-08-10T21:18:06.389Z","avatar_url":"https://github.com/mattermost.png","language":"CSS","readme":"# Mattermost developer documentation ![Mattermost dev docs status badge](https://github.com/mattermost/mattermost-developer-documentation/actions/workflows/build.yml/badge.svg)\n\nWebsite for Mattermost developer documentation, built using [Hugo](https://gohugo.io/). The `master` branch is continuously deployed to [developers.mattermost.com](https://developers.mattermost.com/).\n\n## Contribute\n\n### Prerequisites\n\n- Golang v1.19+ [(_download_)](https://go.dev/dl)\n- NodeJS v14+ [(_download_)](https://nodejs.org/en/download/)\n- cURL [(_download_)](https://curl.se/download.html)\n  - (_optional_) Used to update Compass Icons\n\n### Set up your environment\n\n1. Follow the [Hugo documentation](https://gohugo.io/getting-started/installing/) to install Hugo. This repo uses Hugo v0.101.0 to build the docs.\n\n    ```shell\n    # For example, on macOS:\n    brew install hugo\n    \n    # Snapcraft on Linux:\n    snap install hugo\n   \n    # or using golang directly:\n    go install github.com/gohugoio/hugo@v0.101.0\n    ```\n\n2. Fork the repository and clone the fork to your machine. Change directories to the cloned repo when it has finished.\n\n    ```shell\n    git clone git@github.com:\u003cyourgithubname\u003e/mattermost-developer-documentation.git\n    cd mattermost-developer-documentation\n    ```\n\n3. Generate JSON plugin docs; this must be done at least once.\n\n    ```shell\n    make plugin-data\n    ```\n\n4. Start the Hugo development server.\n\n    ```shell\n    make run\n    ```\n\n5. Open [http://localhost:1313](http://localhost:1313) in a new browser tab to see the docs\n\nYou're all set! You can start making changes as desired; the development server will automatically re-render affected docs pages.\n\n**Note:** Before pushing changes to your fork, run a full build of the docs using `make dist` to make sure there are no build errors. \n\n## Best practices\n\n- The Mattermost developer documentation uses several custom Hugo [shortcodes](https://gohugo.io/content-management/shortcodes/) to control its presentation. Shortcodes are preferred over using raw HTML and should be used where possible.\n- Links that navigate away from `developers.mattermost.com` should use the [newtabref shortcode](#open-links-in-a-new-tab).\n\n### Hugo shortcodes\n\n#### Collapse\n\nThe `collapse` shortcode creates a collapsible text box.\n\n```gotemplate\n{{\u003ccollapse id=\"client_bindings_request\" title=\"Client requests bindings from server\"\u003e}}\n`GET /plugins/com.mattermost.apps/api/v1/bindings?user_id=ws4o4macctyn5ko8uhkkxmgfur\u0026channel_id=qphz13bzbf8c7j778tdnaw3huc\u0026scope=webapp`\n{{\u003c/collapse\u003e}}\n```\n\n![Example of collapse shortcode](readme_assets/shortcode-collapse.png)\n\nNote that the `id` attribute of the shortcode must be unique on the page.\n\n#### Compass icon\n\nThe `compass-icon` shortcode displays an icon from the [Compass Icon](https://mattermost.github.io/compass-icons/) set. The shortcode takes 2 arguments: the ID of the icon and an optional icon description which is used as alt text.\n\n```gotemplate\n{{\u003ccompass-icon icon-star \"Mandatory Value\"\u003e}}\n```\n\n![Example of compass-icon shortcode](readme_assets/shortcode-compass-icon.png)\n\n#### Mermaid\n\nThe `mermaid` shortcode allows embedding [Mermaid](https://mermaid-js.github.io/mermaid/#/) diagram syntax into the page.\nEach page that uses a Mermaid diagram must also have a `mermaid: true` property set in the page's frontmatter.\n\n```gotemplate\n{{\u003cmermaid\u003e}}\nsequenceDiagram\n    actor System Admin\n    System Admin-\u003e\u003eMattermost server: install app\n    Mattermost server-\u003e\u003eApps framework: install app\n    Apps framework-\u003e\u003eApp: request manifest\n    App-\u003e\u003eApps framework: send manifest\n    Apps framework-\u003e\u003eSystem Admin: request permissions\n    System Admin-\u003e\u003eApps framework: grant permissions\n    Apps framework-\u003e\u003eMattermost server: create bot\n    Apps framework-\u003e\u003eMattermost server: create OAuth app\n    Apps framework-\u003e\u003eApps framework: enable app\n    Apps framework-\u003e\u003eApp: call OnInstall if defined\n{{\u003c/mermaid\u003e}}\n```\n\n![Example of Mermaid shortcode](readme_assets/shortcode-mermaid.png)\n\n#### Open links in a new tab\n\nThe `newtabref` shortcode creates a link that opens in a new browser tab. The link text is followed by a Compass Icon which indicates the link will open in a new tab.\n\n```gotemplate\nAll Apps should define a manifest ({{\u003cnewtabref title=\"godoc\" href=\"https://pkg.go.dev/github.com/mattermost/mattermost-plugin-apps/apps#Manifest\"\u003e}}) as a JSON object.\n```\n\n![Example of newtabref shortcode](readme_assets/shortcode-newtabref.png)\n\n#### Note\n\nThe `note` shortcode displays a styled message box suitable for a note. The shortcode accepts 3 arguments: the title of the node, an optional Compass Icon ID, and an optional description for the Compass Icon.\n\n```gotemplate\n{{\u003cnote \"Mandatory values\" \"icon-star\" \"Mandatory Value\"\u003e}} \n- The `app_id` and `homepage_url` values must be specified.\n- At least one deployment method - `aws_lambda`, `open_faas`, or `http` - must be specified.\n{{\u003c/note\u003e}}\n```\n\n![Example of note shortcode](readme_assets/shortcode-note.png)\n\n#### Tabbed content\n\nA combination of the `tabs` and `tab` shortcodes create a section of tabbed content.\nThe `tabs` shortcode defines the list of available tabs in the tab \"selection bar\", each with a unique ID and name.\nThe `tab` shortcode defines the content for an individual tab.\n\nExample of using tabbed content shortcodes: \n\n```gotemplate\n{{\u003ctabs \"tab_group_name\" \"tabid1,tabname1;tabid2,tabname2;...\" \"initial_tab_id\"\u003e}}\n{{\u003ctab \"tabid1\" \"display: block;\"\u003e}}\n- Content for tab #1\n{{\u003c/tab\u003e}}\n{{\u003ctab \"tabid2\"\u003e}}\n- Content for tab #2\n{{\u003c/tab\u003e}}\n```\n\n##### `tabs` shortcode\n\nThe `tabs` shortcode creates the top portion of tabbed content: a list of available tabs, each with a click handler.\n\nThe general format of the shortcode is:\n\n```gotemplate\n{{\u003ctabs \"tab_group_name\" \"list_of_available_tabs\" \"initial_tab_id\"\u003e}}\n```\n\nTo ensure tabs in one group don't affect another group, a unique `tab_group_name` is required.\nThe available tabs in the group are defined in a single string of the format:\n\n`tab1_id,tab1_name;tab2_id,tab2_name;...`\n\nThe following example defines a group of two tabs named `Android` and `iOS`:\n\n```gotemplate\n{{\u003ctabs \"mobile\" \"mobile-droid,Android;mobile-ios,iOS\" \"mobile-droid\"\u003e}}\n```\n\nThe `initial_tab_id` specifies the ID of the tab that should be active when the page loads.\n\n##### `tab` shortcode\n\nThe `tab` shortcode defines a section of content for a specific tab.\n\nThe general format of the shortcode is:\n\n```gotemplate\n{{\u003ctab \"tab_id\" \"initial_tab_style\"\u003e}}\n...tab content defined here...\n{{\u003c/tab\u003e}}\n```\n\nThe `tab_id` must correspond to a tab ID defined in a `tabs` shortcode.\nThe `initial_tab_style` is used to display the initial active tab's content by specifying a value of `display: block;`.\n\nThe following example defines content for two tabs with IDs `tab1_id` and `tab2_id`:\n\n```gotemplate\n{{\u003ctab \"tab1_id\" \"display: block;\"\u003e}}\n- Content for tab #1\n{{\u003c/tab\u003e}}\n{{\u003ctab \"tab2_id\"\u003e}}\n- Content for tab #2\n{{\u003c/tab\u003e}}\n```\n\n##### Limitations of tabbed content\n\nDue to the implementation of the `tab` shortcode, there are some limitations on what information can be rendered:\n\n- `note` shortcodes cannot contain bulleted lists\n","funding_links":[],"categories":["CSS","HTML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattermost%2Fmattermost-developer-documentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattermost%2Fmattermost-developer-documentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattermost%2Fmattermost-developer-documentation/lists"}