This is the repository for Hangar, a plugin repository used for Paper, Velocity, and Waterfall plugins and similar software.
Hangar is loosely based off of Ore, created by the Sponge project, but rebuilt from the ground up using the Spring Boot Framework 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 have been possible.
On top of our production instance at https://hangar.papermc.io/, we have a staging instance for testing purposes: https://hangar.papermc.dev/.
The project consists of 3 main parts
Fork the project and pull it in your IDE.
To get the project running locally, you need to follow a few steps:
docker
run config (or click the green arrow in the gutter on this line)cd docker
then run docker-compose -f dev.yml up -d
(-d
as an optional parameter to run the containers in the background).backend
run config (or click the green arrow in the gutter on this line)backend-community
run config (or click the green arrow in the gutter on this line)cd backend
then run mvn spring-boot:run
. Alternatively you can start the HangarApplication
class via your IDE.Run 'pnpm install'
(or click the button in the Update dependencies
toast)cd frontend
then run pnpm install
.frontend
run config (or click the green arrow in the gutter on this line)cd frontend
then run pnpm run dev
.backend/src/main/resources/application.yml
.object
in the application.yml
Deployment happens via a helm chart in the /chart
folder. The Spring Boot configuration file used for deployment can be found at
chart/templates/secret-hangar-backend.yaml
(however it will be overridden with the actual values via helm).
Hangar uses Crowdin for translations. If you want to contribute to translations, create a Crowdin account at https://hangar.crowdin.com/hangar and simply add new translations or comment/vote on existing translations. You can learn more about navigating the Crowdin UI here: https://support.crowdin.com/online-editor/.
crowdin pull -b master -T <PAT>
You might want to set the env var TRANSLATION_MODE
to true in order to get warnings about untranslated strings.
Most of our current and future plans can be found in the Hangar Roadmap Project. Your best bet is joining the #development channel on the Hangar Discord to start discussing potential contributions and ideas. With Hangar being such a massive project, any contributions are welcome!
Updating 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
to which dependencies are broken.
Hangar is licensed under the permissive MIT License.
A large part of the backend is based on Ore, also licensed under MIT:
Copyright (c) SpongePowered <https://www.spongepowered.org>
Copyright (c) contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.