{"id":43822649,"url":"https://github.com/HangarMC/Hangar","last_synced_at":"2026-02-17T15:00:58.252Z","repository":{"id":37002767,"uuid":"278124917","full_name":"HangarMC/Hangar","owner":"HangarMC","description":"A plugin repository used for paper plugins","archived":false,"fork":false,"pushed_at":"2026-02-16T15:01:26.000Z","size":20171,"stargazers_count":278,"open_issues_count":98,"forks_count":71,"subscribers_count":8,"default_branch":"staging","last_synced_at":"2026-02-16T19:46:27.431Z","etag":null,"topics":["hacktoberfest","java","jdbi","minecraft","nuxt","plugin-repository","spring","vue","vuetify"],"latest_commit_sha":null,"homepage":"https://hangar.papermc.io/","language":"Java","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/HangarMC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-08T15:21:05.000Z","updated_at":"2026-02-05T20:45:27.000Z","dependencies_parsed_at":"2025-12-07T10:02:32.248Z","dependency_job_id":null,"html_url":"https://github.com/HangarMC/Hangar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HangarMC/Hangar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HangarMC%2FHangar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HangarMC%2FHangar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HangarMC%2FHangar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HangarMC%2FHangar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HangarMC","download_url":"https://codeload.github.com/HangarMC/Hangar/tar.gz/refs/heads/staging","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HangarMC%2FHangar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29548201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T14:33:00.708Z","status":"ssl_error","status_checked_at":"2026-02-17T14:32:58.657Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["hacktoberfest","java","jdbi","minecraft","nuxt","plugin-repository","spring","vue","vuetify"],"created_at":"2026-02-06T02:00:29.837Z","updated_at":"2026-02-17T15:00:58.246Z","avatar_url":"https://github.com/HangarMC.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# Hangar - Paper's Plugin Repository\n[![Crowdin](https://badges.crowdin.net/e/b13e6a1c05002365ee9031712112bd63/localized.svg)](https://hangar.crowdin.com/hangar)\n[![Discord](https://img.shields.io/discord/855123416889163777?)](https://discord.gg/zvrAEbvJ4a)\n![GitHub License](https://img.shields.io/github/license/hangarmc/hangar)\n[![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fhangar.papermc.io%2Fv3%2Fapi-docs%2Fpublic)](https://hangar.papermc.io/api-docs)\n[![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=OHFacEE0WmlHRldDajYrZFdsZUtDOFZBcmUyR1VWdWlUaStlQWJYS0xZVT0tLWRKODJVblZQblczRXMvejNQTGhEZ1E9PQ==--54e7c90dad3680579c945ff532d63909156aa024)](https://automate.browserstack.com/public-build/OHFacEE0WmlHRldDajYrZFdsZUtDOFZBcmUyR1VWdWlUaStlQWJYS0xZVT0tLWRKODJVblZQblczRXMvejNQTGhEZ1E9PQ==--54e7c90dad3680579c945ff532d63909156aa024)\n\nThis is the repository for Hangar, a plugin repository used for Paper, Velocity, and Waterfall plugins and similar software.\n\nHangar is loosely based off of [Ore](https://github.com/SpongePowered/Ore), created by the Sponge project, but rebuilt from the ground up using the Spring Boot\nFramework in Java for the backend and Nuxt (with UnoCSS) for the frontend. We would like to thank all Ore contributors. Without them, this project would never\nhave been possible.\n\nOn top of our production instance at https://hangar.papermc.io/, we have a staging instance for testing purposes: https://hangar.papermc.dev/.\n\n## Contributing\n\nThe project consists of 3 main parts\n\n* Frontend (Vue.js under Nuxt with UnoCSS)\n* Backend (Spring Boot)\n* Database (PostgreSQL)\n\nAdditionally, we use the following services:\n* Search Engine (MeiliSearch)\n* Storage (rustfs locally, b2 bucket in production)\n* Email (mailslurper locally, MailGun in production)\n\n## Development Setup\n\nFork the project and pull it in your IDE.\n\n### Prerequisites\n\n* Docker is required in order to run the PostgreSQL database, the MeiliSearch engine and the dummy email server\n* Java 21 or higher\n* [pnpm](https://pnpm.io/installation) and [node](https://nodejs.org) (v22 or higher)\n* mvn\n* git\n* we strongly recommend using IntelliJ IDEA (Ultimate) as your IDE\n\n### Setting up\n\nTo get the project running locally, you need to follow a few steps:\n\n#### Frontend only\n\n1. Install the frontend deps:  \n   **Using IntelliJ**: Right-click the package.json file in the frontend directory and click `Run 'pnpm install'` (or click the button in the `Update dependencies` toast)  \n   **Manually**: Move to the frontend directory: `cd frontend` then run `pnpm install`.\n2. Start the frontend.  \n   **Using IntelliJ**: Run the `frontend without backend` run config (or click the green arrow in the gutter on this line)  \n   **Manually**: Move to the frontend directory: `cd frontend` then run `pnpm run devStaging`.\n3. After that, open http://localhost:3333, and if all went well, Hangar should be up and running.\n4. You can open http://localhost:3333/onboarding and create an admin account, or once you logged in, generate fake data.\n\n#### Frontend and Backend\n\n1. Get the dummy database, storage, search engine and email server up and running.  \n   **Using Intellij**: Run the `docker` run config (or click the green arrow in the gutter on this line)  \n   **Manually**: Move to the docker folder `cd docker` then run `docker-compose -f dev.yml up -d` (`-d` as an optional parameter to run the containers in the background).\n2. Start the backend.  \n   **Using IntelliJ Ultimate**: Run the `backend` run config (or click the green arrow in the gutter on this line)  \n   **Using IntelliJ Community**: Run the `backend-community` run config (or click the green arrow in the gutter on this line)  \n   **Manually**: Move to the backend directory: `cd backend` then run `mvn spring-boot:run`. Alternatively you can start the `HangarApplication` class via your IDE.\n3. Install the frontend deps:  \n   **Using IntelliJ**: Right-click the package.json file in the frontend directory and click `Run 'pnpm install'` (or click the button in the `Update dependencies` toast)  \n   **Manually**: Move to the frontend directory: `cd frontend` then run `pnpm install`.\n4. Start the frontend.  \n   **Using Intellij**: Run the `frontend` run config (or click the green arrow in the gutter on this line)  \n   **Manually**: Move to the frontend directory: `cd frontend` then run `pnpm run dev`.\n5. After that, open http://localhost:3333, and if all went well, Hangar should be up and running.\n6. You can open http://localhost:3333/onboarding and create an admin account, or once you logged in, generate fake data.\n\n### Notes\n\n* The Spring Boot configuration file that is used by this environment is located at `backend/src/main/resources/application.yml`.\n* You can view the emails hangar sends on http://localhost:4436/\n* On staging/prod Hangar uses object storage, if you want to test that you can install rustfs (provided in the docker dev.yml) and change the storage type to `object` in the `application.yml`\n\n## Deployment\n\nDeployment happens via a helm chart in the `/chart` folder. The Spring Boot configuration file used for deployment can be found at\n`chart/templates/secret-hangar-backend.yaml` (however it will be overridden with the actual values via helm).\n\n## Translations [![Crowdin](https://badges.crowdin.net/e/b13e6a1c05002365ee9031712112bd63/localized.svg)](https://hangar.crowdin.com/hangar)\n\nHangar uses Crowdin for translations. If you want to contribute to translations, create a Crowdin account at https://hangar.crowdin.com/hangar and simply add\nnew translations or comment/vote on existing translations. You can learn more about navigating the Crowdin UI here: https://support.crowdin.com/online-editor/.\n\n#### Getting translations locally (mostly for developers, requires Crowdin CLI, ran in root folder):\n\n`crowdin pull -b master -T \u003cPAT\u003e`\n\nYou might want to set the env var `TRANSLATION_MODE` to true in order to get warnings about untranslated strings.\n\n## Contributing\n\nMost of our current and future plans can be found in the [**Hangar Roadmap Project**](https://github.com/PaperMC/Hangar/projects/1). Your best bet is joining\nthe #development channel on the [Hangar Discord](https://discord.gg/zvrAEbvJ4a) to start discussing potential contributions and ideas. With Hangar being such a\nmassive project, any contributions are welcome!\n\nUpdating the frontend dependencies can be done best by running `npx npm-check -u` and going through the changelogs. Note that package.json might contain hints\nto which dependencies are broken.\n\n## License\n\nHangar is licensed under the permissive [MIT License](LICENSE).\n\nA large part of the backend is based on [Ore](https://github.com/SpongePowered/Ore/), also licensed under MIT:\n\n```\nCopyright (c) SpongePowered \u003chttps://www.spongepowered.org\u003e\nCopyright (c) contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHangarMC%2FHangar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHangarMC%2FHangar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHangarMC%2FHangar/lists"}