From ba8f231962060526cde11f7dc5ef5fbfc05e9671 Mon Sep 17 00:00:00 2001 From: Neeptossss Date: Sat, 13 Jan 2024 14:14:59 +0100 Subject: [PATCH] ci(actions): update portfolio --- portfolio/images/qraft-architecture.png | Bin 0 -> 57189 bytes portfolio/qraft.md | 23 ++++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 portfolio/images/qraft-architecture.png diff --git a/portfolio/images/qraft-architecture.png b/portfolio/images/qraft-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9238de51c47c2d81e31920d9a1d7c6a4ad1e3771 GIT binary patch literal 57189 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 literal 0 HcmV?d00001 diff --git a/portfolio/qraft.md b/portfolio/qraft.md index 1247681..e43fbc0 100644 --- a/portfolio/qraft.md +++ b/portfolio/qraft.md @@ -13,5 +13,26 @@ alt: Qraft :: # Qraft +Qraft is a platform for creating and managing minecraft servers in a simple and scalable way. -Coucou darius voila la review \ No newline at end of file +## Architecture +Qraft is a dashboard built on top of the [Shulker](https://github.com/jeremylvln/Shulker) system. Shulker is a system that allow to deploy and manage minecraft server, minecraft proxies and servers clusters. For more information about Shulker, please refer to the [Shulker documentation](https://shulker.jeremylvln.fr/). +Thanks to Nuxt 3 and the server capabilities, Qraft is able to communicate with the Kubernetes API to manage the Shulker system. + +The figure below shows the architecture of Qraft which pretty simple. + +![Qraft architecture](/images/qraft-architecture.png) + +## Features +From the dashboard, you can: +- Create a server cluster +- Create a proxy fleet (BungeeCord / Velocity) +- Create a minecraft server (Paper / Spigot) +- Manage your instances (start, stop, restart, delete) +- View the logs of your instances + +## Deployment +### Helm chart +Qraft is deployed on a Kubernetes cluster. The deployment is done with the help of Helm. The Helm chart is available on the [Qraft repository](https://github.com/Tux-Inc/Qraft). +### Ansible +The deployment of the Kubernetes cluster is done with the help of Ansible. The Ansible playbook is available on the [Qraft repository](https://github.com/Tux-Inc/Qraft). \ No newline at end of file