{"id":26367642,"url":"https://github.com/jwizard-bot/jwizard-api","last_synced_at":"2026-01-03T06:36:13.399Z","repository":{"id":217867230,"uuid":"744983606","full_name":"jwizard-bot/jwizard-api","owner":"jwizard-bot","description":"Manage guilds, playlists and remotely Discord commands invoker API. Works with JWizard Web.","archived":false,"fork":false,"pushed_at":"2024-10-29T23:14:07.000Z","size":425,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-10-30T01:49:47.496Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://jwizard.pl","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwizard-bot.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":"2024-01-18T12:06:01.000Z","updated_at":"2024-10-26T15:38:37.000Z","dependencies_parsed_at":"2024-05-12T23:26:01.794Z","dependency_job_id":"57cadbea-f8f8-4b65-8dcc-98a487a73042","html_url":"https://github.com/jwizard-bot/jwizard-api","commit_stats":null,"previous_names":["jwizard-bot/jwizard-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwizard-bot%2Fjwizard-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwizard-bot%2Fjwizard-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwizard-bot%2Fjwizard-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwizard-bot%2Fjwizard-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwizard-bot","download_url":"https://codeload.github.com/jwizard-bot/jwizard-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243933443,"owners_count":20370988,"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":[],"created_at":"2025-03-16T21:18:08.325Z","updated_at":"2026-01-03T06:36:13.393Z","avatar_url":"https://github.com/jwizard-bot.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](.github/banner.png)\n\n[[About project](https://jwizard.pl/about)]\n| [[Docker image](https://hub.docker.com/r/milosz08/jwizard-api)]\n| [[Docker installation](./docker/README.md)]\n\nJWizard is an open-source Discord music bot handling audio content from various multimedia sources\nwith innovative web player. This repository contains an API used by the web client to manage guilds,\nplaylists, and remotely invoke Discord commands using its own protocol based on WebSocket and\nRabbitMQ message queue.\n\n## Table of content\n\n* [Architecture concepts](#architecture-concepts)\n* [Project modules](#project-modules)\n* [Clone and install](#clone-and-install)\n* [Contributing](#contributing)\n* [License](#license)\n\n## Architecture concepts\n\n* This project is based on a REST API, utilizing a lightweight built-in Jetty server and the Javalin\n  library.\n* Spring Boot was omitted in favor of implementing only the IoC container provided by Spring\n  Context.\n* Configuration is shared with the JWizard Lib project to eliminate code redundancy and ensure\n  consistency in changes across different project modules.\n* This project is divided into several loosely coupled modules connected through the SPI pattern and\n  auto-injected beans by IoC container.\n\n## Project modules\n\n| Name            | Description                                                                         |\n|-----------------|-------------------------------------------------------------------------------------|\n| jwa-app         | Application entrypoint, configuration files and i18n local content.                 |\n| jwa-core        | Server loader, exception handlers and session management.                           |\n| jwa-persistence | Communication via RDBMS (SQL) with loosely coupled binding beans (provided by SPI). |\n| jwa-gateway     | Rest API endpoints, HTTP API interfaces, WS and AMQP gateway.                       |\n| jwa-service     | Services as loosely coupled binding beans for different handlers (HTTP, WS etc.).   |\n\n## Clone and install\n\n1. Make sure you have at least JDK 21 and Kotlin 2.2.\n2. Clone **JWizard Lib** and **JWizard Tools** from organization repository via:\n\n```bash\n$ git clone https://github.com/jwizard-bot/jwizard-lib\n$ git clone https://github.com/jwizard-bot/jwizard-tools\n```\n\n3. Configure and run all necessary containers defined in `README.md` file in this repository. You\n   must have up these containers:\n\n| Name             | Port(s)    | Description                           |\n|------------------|------------|---------------------------------------|\n| jwizard-vault    | 8761       | Secret keys storage service.          |\n| jwizard-mysql-db | 8762       | MySQL database.                       |\n| jwizard-rabbitmq | 8771, 8772 | RabbitMQ server and management panel. |\n\n\u003e [!IMPORTANT]\n\u003e Don't forget to perform database migration after start DB (see\n\u003e [jwizard-lib](https://github.com/jwizard-bot/jwizard-lib) repository).\n\n4. Build library and package to Maven Local artifacts' storage:\n\n```bash\n$ ./gradlew clean publishToMavenLocal\n```\n\n5. Clone this repository via:\n\n```bash\n$ git clone https://github.com/jwizard-bot/jwizard-api\n```\n\n6. Create `.env` file in root of the project path (based on `example.env`) and insert Vault token:\n\n```properties\nJWIZARD_VAULT_TOKEN=\u003cvault token\u003e\n```\n\nwhere `\u003cvalue token\u003e` property is the Vault token stored in configured `.env` file\nin [jwizard-lib](https://github.com/jwizard-bot/jwizard-lib) repository.\n\n7. That's it. Now you can run via Intellij IDEA. Make sure, you have set JVM parameters:\n\n```\n-Druntime.profiles=dev -Denv.enabled=true -Xms128m -Xmx128m\n```\n\nwhere `Xmx` and `Xms` parameters are optional and can be modified.\n\n\u003e [!NOTE]\n\u003e For servers running on HotSpot JVM, Oracle recommended same Xms and Xmx parameter, ex. `-Xms128m`\n\u003e and `-Xmx128m`. More information you will find\n\u003e [here](https://docs.oracle.com/cd/E74363_01/ohi_vbp_-_installation_guide--20160224-094432-html-chunked/s66.html).\n\n## Contributing\n\nWe welcome contributions from the community! Please read our [CONTRIBUTING](./CONTRIBUTING.md) file\nfor guidelines on how to get involved.\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwizard-bot%2Fjwizard-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwizard-bot%2Fjwizard-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwizard-bot%2Fjwizard-api/lists"}