diff --git a/apps/docs-v2/.gitignore b/apps/docs-v2/.gitignore new file mode 100644 index 0000000..55a12ae --- /dev/null +++ b/apps/docs-v2/.gitignore @@ -0,0 +1,28 @@ +# deps +/node_modules + +# generated content +.contentlayer +.content-collections +.source + +# test & build +/coverage +/.next/ +/out/ +/build +*.tsbuildinfo + +# misc +.DS_Store +*.pem +/.pnp +.pnp.js +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# others +.env*.local +.vercel +next-env.d.ts \ No newline at end of file diff --git a/apps/docs-v2/README.md b/apps/docs-v2/README.md new file mode 100644 index 0000000..a923f4d --- /dev/null +++ b/apps/docs-v2/README.md @@ -0,0 +1,26 @@ +# docs-v2 + +This is a Next.js application generated with +[Create Fumadocs](https://github.com/fuma-nama/fumadocs). + +Run development server: + +```bash +npm run dev +# or +pnpm dev +# or +yarn dev +``` + +Open http://localhost:3000 with your browser to see the result. + +## Learn More + +To learn more about Next.js and Fumadocs, take a look at the following +resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js + features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs diff --git a/apps/docs-v2/api.json b/apps/docs-v2/api.json new file mode 100644 index 0000000..62e798a --- /dev/null +++ b/apps/docs-v2/api.json @@ -0,0 +1,12690 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Dokploy API", + "description": "Endpoints for dokploy", + "version": "1.0.0" + }, + "servers": [ + { + "url": "http://your-dokploy-instance.com/api" + } + ], + "paths": { + "/admin.one": { + "get": { + "operationId": "admin-one", + "tags": ["admin"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/admin.createUserInvitation": { + "post": { + "operationId": "admin-createUserInvitation", + "tags": ["admin"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email" + } + }, + "required": ["email"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/admin.removeUser": { + "post": { + "operationId": "admin-removeUser", + "tags": ["admin"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "authId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["authId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/admin.getUserByToken": { + "get": { + "operationId": "admin-getUserByToken", + "tags": ["admin"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "token", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/admin.assignPermissions": { + "post": { + "operationId": "admin-assignPermissions", + "tags": ["admin"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "userId": { + "type": "string", + "minLength": 1 + }, + "canCreateProjects": { + "type": "boolean" + }, + "canCreateServices": { + "type": "boolean" + }, + "canDeleteProjects": { + "type": "boolean" + }, + "canDeleteServices": { + "type": "boolean" + }, + "accesedProjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "accesedServices": { + "type": "array", + "items": { + "type": "string" + } + }, + "canAccessToTraefikFiles": { + "type": "boolean" + }, + "canAccessToDocker": { + "type": "boolean" + }, + "canAccessToAPI": { + "type": "boolean" + }, + "canAccessToSSHKeys": { + "type": "boolean" + }, + "canAccessToGitProviders": { + "type": "boolean" + } + }, + "required": [ + "userId", + "canCreateProjects", + "canCreateServices", + "canDeleteProjects", + "canDeleteServices", + "accesedProjects", + "accesedServices", + "canAccessToTraefikFiles", + "canAccessToDocker", + "canAccessToAPI", + "canAccessToSSHKeys", + "canAccessToGitProviders" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getContainers": { + "get": { + "operationId": "docker-getContainers", + "tags": ["docker"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.restartContainer": { + "post": { + "operationId": "docker-restartContainer", + "tags": ["docker"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "containerId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["containerId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getConfig": { + "get": { + "operationId": "docker-getConfig", + "tags": ["docker"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "containerId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getContainersByAppNameMatch": { + "get": { + "operationId": "docker-getContainersByAppNameMatch", + "tags": ["docker"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "appType", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "enum": ["stack"] + }, + { + "type": "string", + "enum": ["docker-compose"] + } + ] + } + }, + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getContainersByAppLabel": { + "get": { + "operationId": "docker-getContainersByAppLabel", + "tags": ["docker"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.createAdmin": { + "post": { + "operationId": "auth-createAdmin", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email" + }, + "password": { + "type": "string", + "minLength": 8 + } + }, + "required": ["email", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.createUser": { + "post": { + "operationId": "auth-createUser", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "password": { + "type": "string", + "minLength": 8 + }, + "id": { + "type": "string" + }, + "token": { + "type": "string", + "minLength": 1 + } + }, + "required": ["password", "id", "token"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.login": { + "post": { + "operationId": "auth-login", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email" + }, + "password": { + "type": "string", + "minLength": 8 + } + }, + "required": ["email", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.get": { + "get": { + "operationId": "auth-get", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.logout": { + "post": { + "operationId": "auth-logout", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.update": { + "post": { + "operationId": "auth-update", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "email": { + "type": "string", + "nullable": true + }, + "password": { + "type": "string", + "nullable": true + }, + "rol": { + "type": "string", + "enum": ["admin", "user"] + }, + "image": { + "type": "string" + }, + "secret": { + "type": "string", + "nullable": true + }, + "token": { + "type": "string", + "nullable": true + }, + "is2FAEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + }, + "resetPasswordToken": { + "type": "string", + "nullable": true + }, + "resetPasswordExpiresAt": { + "type": "string", + "nullable": true + }, + "confirmationToken": { + "type": "string", + "nullable": true + }, + "confirmationExpiresAt": { + "type": "string", + "nullable": true + } + }, + "required": ["email", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.generateToken": { + "post": { + "operationId": "auth-generateToken", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.one": { + "get": { + "operationId": "auth-one", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.generate2FASecret": { + "get": { + "operationId": "auth-generate2FASecret", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.verify2FASetup": { + "post": { + "operationId": "auth-verify2FASetup", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pin": { + "type": "string", + "minLength": 6 + }, + "secret": { + "type": "string", + "minLength": 1 + } + }, + "required": ["pin", "secret"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.verifyLogin2FA": { + "post": { + "operationId": "auth-verifyLogin2FA", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pin": { + "type": "string", + "minLength": 6 + }, + "id": { + "type": "string" + } + }, + "required": ["pin", "id"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.disable2FA": { + "post": { + "operationId": "auth-disable2FA", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.sendResetPasswordEmail": { + "post": { + "operationId": "auth-sendResetPasswordEmail", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "minLength": 1, + "format": "email" + } + }, + "required": ["email"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.resetPassword": { + "post": { + "operationId": "auth-resetPassword", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "resetPasswordToken": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + } + }, + "required": ["resetPasswordToken", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/auth.confirmEmail": { + "post": { + "operationId": "auth-confirmEmail", + "tags": ["auth"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "confirmationToken": { + "type": "string", + "minLength": 1 + } + }, + "required": ["confirmationToken"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.create": { + "post": { + "operationId": "project-create", + "tags": ["project"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + } + }, + "required": ["name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.one": { + "get": { + "operationId": "project-one", + "tags": ["project"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "projectId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.all": { + "get": { + "operationId": "project-all", + "tags": ["project"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.remove": { + "post": { + "operationId": "project-remove", + "tags": ["project"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "projectId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["projectId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.update": { + "post": { + "operationId": "project-update", + "tags": ["project"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "projectId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["name", "projectId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.create": { + "post": { + "operationId": "application-create", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "projectId": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": ["name", "projectId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.one": { + "get": { + "operationId": "application-one", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.reload": { + "post": { + "operationId": "application-reload", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appName": { + "type": "string" + }, + "applicationId": { + "type": "string" + } + }, + "required": ["appName", "applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.delete": { + "post": { + "operationId": "application-delete", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.stop": { + "post": { + "operationId": "application-stop", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.start": { + "post": { + "operationId": "application-start", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.redeploy": { + "post": { + "operationId": "application-redeploy", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveEnvironment": { + "post": { + "operationId": "application-saveEnvironment", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + }, + "buildArgs": { + "type": "string", + "nullable": true + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveBuildType": { + "post": { + "operationId": "application-saveBuildType", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "buildType": { + "type": "string", + "enum": [ + "dockerfile", + "heroku_buildpacks", + "paketo_buildpacks", + "nixpacks", + "static" + ] + }, + "dockerfile": { + "type": "string", + "nullable": true + }, + "dockerContextPath": { + "type": "string", + "nullable": true + }, + "dockerBuildStage": { + "type": "string", + "nullable": true + }, + "publishDirectory": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId", + "buildType", + "dockerContextPath", + "dockerBuildStage" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveGithubProvider": { + "post": { + "operationId": "application-saveGithubProvider", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "repository": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "owner": { + "type": "string", + "nullable": true + }, + "buildPath": { + "type": "string", + "nullable": true + }, + "githubId": { + "type": "string", + "nullable": true + } + }, + "required": ["applicationId", "owner", "githubId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveGitlabProvider": { + "post": { + "operationId": "application-saveGitlabProvider", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "gitlabBranch": { + "type": "string", + "nullable": true + }, + "gitlabBuildPath": { + "type": "string", + "nullable": true + }, + "gitlabOwner": { + "type": "string", + "nullable": true + }, + "gitlabRepository": { + "type": "string", + "nullable": true + }, + "gitlabId": { + "type": "string", + "nullable": true + }, + "gitlabProjectId": { + "type": "number", + "nullable": true + }, + "gitlabPathNamespace": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId", + "gitlabBranch", + "gitlabBuildPath", + "gitlabOwner", + "gitlabRepository", + "gitlabId", + "gitlabProjectId", + "gitlabPathNamespace" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveBitbucketProvider": { + "post": { + "operationId": "application-saveBitbucketProvider", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bitbucketBranch": { + "type": "string", + "nullable": true + }, + "bitbucketBuildPath": { + "type": "string", + "nullable": true + }, + "bitbucketOwner": { + "type": "string", + "nullable": true + }, + "bitbucketRepository": { + "type": "string", + "nullable": true + }, + "bitbucketId": { + "type": "string", + "nullable": true + }, + "applicationId": { + "type": "string" + } + }, + "required": [ + "bitbucketBranch", + "bitbucketBuildPath", + "bitbucketOwner", + "bitbucketRepository", + "bitbucketId", + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveDockerProvider": { + "post": { + "operationId": "application-saveDockerProvider", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "dockerImage": { + "type": "string", + "nullable": true + }, + "applicationId": { + "type": "string" + }, + "username": { + "type": "string", + "nullable": true + }, + "password": { + "type": "string", + "nullable": true + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveGitProdiver": { + "post": { + "operationId": "application-saveGitProdiver", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "customGitBranch": { + "type": "string", + "nullable": true + }, + "applicationId": { + "type": "string" + }, + "customGitBuildPath": { + "type": "string", + "nullable": true + }, + "customGitUrl": { + "type": "string", + "nullable": true + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.markRunning": { + "post": { + "operationId": "application-markRunning", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.update": { + "post": { + "operationId": "application-update", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "buildArgs": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "command": { + "type": "string", + "nullable": true + }, + "refreshToken": { + "type": "string", + "nullable": true + }, + "sourceType": { + "type": "string", + "enum": ["github", "docker", "git"] + }, + "repository": { + "type": "string", + "nullable": true + }, + "owner": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "buildPath": { + "type": "string", + "nullable": true + }, + "autoDeploy": { + "type": "boolean", + "nullable": true + }, + "gitlabProjectId": { + "type": "number", + "nullable": true + }, + "gitlabRepository": { + "type": "string", + "nullable": true + }, + "gitlabOwner": { + "type": "string", + "nullable": true + }, + "gitlabBranch": { + "type": "string", + "nullable": true + }, + "gitlabBuildPath": { + "type": "string", + "nullable": true + }, + "gitlabPathNamespace": { + "type": "string", + "nullable": true + }, + "bitbucketRepository": { + "type": "string", + "nullable": true + }, + "bitbucketOwner": { + "type": "string", + "nullable": true + }, + "bitbucketBranch": { + "type": "string", + "nullable": true + }, + "bitbucketBuildPath": { + "type": "string", + "nullable": true + }, + "username": { + "type": "string", + "nullable": true + }, + "password": { + "type": "string", + "nullable": true + }, + "dockerImage": { + "type": "string", + "nullable": true + }, + "customGitUrl": { + "type": "string", + "nullable": true + }, + "customGitBranch": { + "type": "string", + "nullable": true + }, + "customGitBuildPath": { + "type": "string", + "nullable": true + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + }, + "dockerfile": { + "type": "string", + "nullable": true + }, + "dockerContextPath": { + "type": "string", + "nullable": true + }, + "dockerBuildStage": { + "type": "string", + "nullable": true + }, + "dropBuildPath": { + "type": "string", + "nullable": true + }, + "healthCheckSwarm": { + "type": "object", + "properties": { + "Test": { + "type": "array", + "items": { + "type": "string" + } + }, + "Interval": { + "type": "number" + }, + "Timeout": { + "type": "number" + }, + "StartPeriod": { + "type": "number" + }, + "Retries": { + "type": "number" + } + }, + "additionalProperties": false, + "nullable": true + }, + "restartPolicySwarm": { + "type": "object", + "properties": { + "Condition": { + "type": "string" + }, + "Delay": { + "type": "number" + }, + "MaxAttempts": { + "type": "number" + }, + "Window": { + "type": "number" + } + }, + "additionalProperties": false, + "nullable": true + }, + "placementSwarm": { + "type": "object", + "properties": { + "Constraints": { + "type": "array", + "items": { + "type": "string" + } + }, + "Preferences": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Spread": { + "type": "object", + "properties": { + "SpreadDescriptor": { + "type": "string" + } + }, + "required": ["SpreadDescriptor"], + "additionalProperties": false + } + }, + "required": ["Spread"], + "additionalProperties": false + } + }, + "MaxReplicas": { + "type": "number" + }, + "Platforms": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Architecture": { + "type": "string" + }, + "OS": { + "type": "string" + } + }, + "required": ["Architecture", "OS"], + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "updateConfigSwarm": { + "type": "object", + "properties": { + "Parallelism": { + "type": "number" + }, + "Delay": { + "type": "number" + }, + "FailureAction": { + "type": "string" + }, + "Monitor": { + "type": "number" + }, + "MaxFailureRatio": { + "type": "number" + }, + "Order": { + "type": "string" + } + }, + "required": ["Parallelism", "Order"], + "additionalProperties": false, + "nullable": true + }, + "rollbackConfigSwarm": { + "type": "object", + "properties": { + "Parallelism": { + "type": "number" + }, + "Delay": { + "type": "number" + }, + "FailureAction": { + "type": "string" + }, + "Monitor": { + "type": "number" + }, + "MaxFailureRatio": { + "type": "number" + }, + "Order": { + "type": "string" + } + }, + "required": ["Parallelism", "Order"], + "additionalProperties": false, + "nullable": true + }, + "modeSwarm": { + "type": "object", + "properties": { + "Replicated": { + "type": "object", + "properties": { + "Replicas": { + "type": "number" + } + }, + "additionalProperties": false + }, + "Global": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "ReplicatedJob": { + "type": "object", + "properties": { + "MaxConcurrent": { + "type": "number" + }, + "TotalCompletions": { + "type": "number" + } + }, + "additionalProperties": false + }, + "GlobalJob": { + "type": "object", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "nullable": true + }, + "labelsSwarm": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "networkSwarm": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Target": { + "type": "string" + }, + "Aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "DriverOpts": { + "type": "object", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "buildType": { + "type": "string", + "enum": [ + "dockerfile", + "heroku_buildpacks", + "paketo_buildpacks", + "nixpacks", + "static" + ] + }, + "publishDirectory": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "registryId": { + "type": "string", + "nullable": true + }, + "projectId": { + "type": "string" + }, + "githubId": { + "type": "string", + "nullable": true + }, + "gitlabId": { + "type": "string", + "nullable": true + }, + "bitbucketId": { + "type": "string", + "nullable": true + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.refreshToken": { + "post": { + "operationId": "application-refreshToken", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.deploy": { + "post": { + "operationId": "application-deploy", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.cleanQueues": { + "post": { + "operationId": "application-cleanQueues", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + } + }, + "required": ["applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.readTraefikConfig": { + "get": { + "operationId": "application-readTraefikConfig", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.updateTraefikConfig": { + "post": { + "operationId": "application-updateTraefikConfig", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "traefikConfig": { + "type": "string" + } + }, + "required": ["applicationId", "traefikConfig"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.readAppMonitoring": { + "get": { + "operationId": "application-readAppMonitoring", + "tags": ["application"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.create": { + "post": { + "operationId": "mysql-create", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "dockerImage": { + "type": "string", + "default": "mysql:8" + }, + "projectId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "databaseRootPassword": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "projectId", + "databaseName", + "databaseUser", + "databasePassword", + "databaseRootPassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.one": { + "get": { + "operationId": "mysql-one", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "mysqlId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.start": { + "post": { + "operationId": "mysql-start", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.stop": { + "post": { + "operationId": "mysql-stop", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.saveExternalPort": { + "post": { + "operationId": "mysql-saveExternalPort", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + }, + "externalPort": { + "type": "number", + "nullable": true + } + }, + "required": ["mysqlId", "externalPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.deploy": { + "post": { + "operationId": "mysql-deploy", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.changeStatus": { + "post": { + "operationId": "mysql-changeStatus", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + } + }, + "required": ["mysqlId", "applicationStatus"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.reload": { + "post": { + "operationId": "mysql-reload", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + }, + "appName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["mysqlId", "appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.remove": { + "post": { + "operationId": "mysql-remove", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.saveEnvironment": { + "post": { + "operationId": "mysql-saveEnvironment", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.update": { + "post": { + "operationId": "mysql-update", + "tags": ["mysql"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "databaseRootPassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "mysql:8" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "createdAt": { + "type": "string" + }, + "projectId": { + "type": "string" + } + }, + "required": ["mysqlId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.create": { + "post": { + "operationId": "postgres-create", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string" + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "postgres:15" + }, + "projectId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databaseName", + "databaseUser", + "databasePassword", + "projectId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.one": { + "get": { + "operationId": "postgres-one", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "postgresId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.start": { + "post": { + "operationId": "postgres-start", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.stop": { + "post": { + "operationId": "postgres-stop", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.saveExternalPort": { + "post": { + "operationId": "postgres-saveExternalPort", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + }, + "externalPort": { + "type": "number", + "nullable": true + } + }, + "required": ["postgresId", "externalPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.deploy": { + "post": { + "operationId": "postgres-deploy", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.changeStatus": { + "post": { + "operationId": "postgres-changeStatus", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + } + }, + "required": ["postgresId", "applicationStatus"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.remove": { + "post": { + "operationId": "postgres-remove", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.saveEnvironment": { + "post": { + "operationId": "postgres-saveEnvironment", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.reload": { + "post": { + "operationId": "postgres-reload", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + }, + "appName": { + "type": "string" + } + }, + "required": ["postgresId", "appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.update": { + "post": { + "operationId": "postgres-update", + "tags": ["postgres"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string" + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "dockerImage": { + "type": "string", + "default": "postgres:15" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "createdAt": { + "type": "string" + }, + "projectId": { + "type": "string" + } + }, + "required": ["postgresId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.create": { + "post": { + "operationId": "redis-create", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "redis:8" + }, + "projectId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databasePassword", + "projectId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.one": { + "get": { + "operationId": "redis-one", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "redisId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.start": { + "post": { + "operationId": "redis-start", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.reload": { + "post": { + "operationId": "redis-reload", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + }, + "appName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["redisId", "appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.stop": { + "post": { + "operationId": "redis-stop", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.saveExternalPort": { + "post": { + "operationId": "redis-saveExternalPort", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + }, + "externalPort": { + "type": "number", + "nullable": true + } + }, + "required": ["redisId", "externalPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.deploy": { + "post": { + "operationId": "redis-deploy", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.changeStatus": { + "post": { + "operationId": "redis-changeStatus", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + } + }, + "required": ["redisId", "applicationStatus"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.remove": { + "post": { + "operationId": "redis-remove", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.saveEnvironment": { + "post": { + "operationId": "redis-saveEnvironment", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.update": { + "post": { + "operationId": "redis-update", + "tags": ["redis"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "databasePassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "redis:8" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["redisId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.create": { + "post": { + "operationId": "mongo-create", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "dockerImage": { + "type": "string", + "default": "mongo:15" + }, + "projectId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "projectId", + "databaseUser", + "databasePassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.one": { + "get": { + "operationId": "mongo-one", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "mongoId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.start": { + "post": { + "operationId": "mongo-start", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.stop": { + "post": { + "operationId": "mongo-stop", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.saveExternalPort": { + "post": { + "operationId": "mongo-saveExternalPort", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + }, + "externalPort": { + "type": "number", + "nullable": true + } + }, + "required": ["mongoId", "externalPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.deploy": { + "post": { + "operationId": "mongo-deploy", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.changeStatus": { + "post": { + "operationId": "mongo-changeStatus", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + } + }, + "required": ["mongoId", "applicationStatus"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.reload": { + "post": { + "operationId": "mongo-reload", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + }, + "appName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["mongoId", "appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.remove": { + "post": { + "operationId": "mongo-remove", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.saveEnvironment": { + "post": { + "operationId": "mongo-saveEnvironment", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.update": { + "post": { + "operationId": "mongo-update", + "tags": ["mongo"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "mongo:15" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "createdAt": { + "type": "string" + }, + "projectId": { + "type": "string" + } + }, + "required": ["mongoId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.create": { + "post": { + "operationId": "mariadb-create", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "dockerImage": { + "type": "string", + "default": "mariadb:6" + }, + "databaseRootPassword": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databaseRootPassword", + "projectId", + "databaseName", + "databaseUser", + "databasePassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.one": { + "get": { + "operationId": "mariadb-one", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "mariadbId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.start": { + "post": { + "operationId": "mariadb-start", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.stop": { + "post": { + "operationId": "mariadb-stop", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.saveExternalPort": { + "post": { + "operationId": "mariadb-saveExternalPort", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + }, + "externalPort": { + "type": "number", + "nullable": true + } + }, + "required": ["mariadbId", "externalPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.deploy": { + "post": { + "operationId": "mariadb-deploy", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.changeStatus": { + "post": { + "operationId": "mariadb-changeStatus", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + } + }, + "required": ["mariadbId", "applicationStatus"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.remove": { + "post": { + "operationId": "mariadb-remove", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.saveEnvironment": { + "post": { + "operationId": "mariadb-saveEnvironment", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + }, + "env": { + "type": "string", + "nullable": true + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.reload": { + "post": { + "operationId": "mariadb-reload", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + }, + "appName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["mariadbId", "appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.update": { + "post": { + "operationId": "mariadb-update", + "tags": ["mariadb"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string" + }, + "databaseRootPassword": { + "type": "string" + }, + "dockerImage": { + "type": "string", + "default": "mariadb:6" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "number", + "nullable": true + }, + "cpuReservation": { + "type": "number", + "nullable": true + }, + "cpuLimit": { + "type": "number", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "createdAt": { + "type": "string" + }, + "projectId": { + "type": "string" + } + }, + "required": ["mariadbId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.create": { + "post": { + "operationId": "compose-create", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "projectId": { + "type": "string" + }, + "composeType": { + "type": "string", + "enum": ["docker-compose", "stack"] + }, + "appName": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": ["name", "projectId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.one": { + "get": { + "operationId": "compose-one", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.update": { + "post": { + "operationId": "compose-update", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "appName": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "composeFile": { + "type": "string" + }, + "refreshToken": { + "type": "string", + "nullable": true + }, + "sourceType": { + "type": "string", + "enum": ["git", "github", "gitlab", "bitbucket", "raw"] + }, + "composeType": { + "type": "string", + "enum": ["docker-compose", "stack"] + }, + "repository": { + "type": "string", + "nullable": true + }, + "owner": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "autoDeploy": { + "type": "boolean", + "nullable": true + }, + "gitlabProjectId": { + "type": "number", + "nullable": true + }, + "gitlabRepository": { + "type": "string", + "nullable": true + }, + "gitlabOwner": { + "type": "string", + "nullable": true + }, + "gitlabBranch": { + "type": "string", + "nullable": true + }, + "gitlabPathNamespace": { + "type": "string", + "nullable": true + }, + "bitbucketRepository": { + "type": "string", + "nullable": true + }, + "bitbucketOwner": { + "type": "string", + "nullable": true + }, + "bitbucketBranch": { + "type": "string", + "nullable": true + }, + "customGitUrl": { + "type": "string", + "nullable": true + }, + "customGitBranch": { + "type": "string", + "nullable": true + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + }, + "command": { + "type": "string" + }, + "composePath": { + "type": "string", + "minLength": 1 + }, + "suffix": { + "type": "string" + }, + "randomize": { + "type": "boolean" + }, + "composeStatus": { + "type": "string", + "enum": ["idle", "running", "done", "error"] + }, + "projectId": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "githubId": { + "type": "string", + "nullable": true + }, + "gitlabId": { + "type": "string", + "nullable": true + }, + "bitbucketId": { + "type": "string", + "nullable": true + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.delete": { + "post": { + "operationId": "compose-delete", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.cleanQueues": { + "post": { + "operationId": "compose-cleanQueues", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.loadServices": { + "get": { + "operationId": "compose-loadServices", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "type", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "not": {} + }, + { + "type": "string", + "enum": ["fetch", "cache"] + } + ], + "default": "cache" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.fetchSourceType": { + "post": { + "operationId": "compose-fetchSourceType", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.randomizeCompose": { + "post": { + "operationId": "compose-randomizeCompose", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + }, + "suffix": { + "type": "string" + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.getConvertedCompose": { + "get": { + "operationId": "compose-getConvertedCompose", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.deploy": { + "post": { + "operationId": "compose-deploy", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.redeploy": { + "post": { + "operationId": "compose-redeploy", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.stop": { + "post": { + "operationId": "compose-stop", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.getDefaultCommand": { + "get": { + "operationId": "compose-getDefaultCommand", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.refreshToken": { + "post": { + "operationId": "compose-refreshToken", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["composeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.deployTemplate": { + "post": { + "operationId": "compose-deployTemplate", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "projectId": { + "type": "string" + }, + "id": { + "type": "string", + "minLength": 1 + }, + "serverId": { + "type": "string" + } + }, + "required": ["projectId", "id"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.templates": { + "get": { + "operationId": "compose-templates", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.getTags": { + "get": { + "operationId": "compose-getTags", + "tags": ["compose"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.all": { + "get": { + "operationId": "user-all", + "tags": ["user"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.byAuthId": { + "get": { + "operationId": "user-byAuthId", + "tags": ["user"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "authId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.byUserId": { + "get": { + "operationId": "user-byUserId", + "tags": ["user"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.create": { + "post": { + "operationId": "domain-create", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "port": { + "type": "number", + "minimum": 1, + "maximum": 65535, + "nullable": true + }, + "https": { + "type": "boolean" + }, + "applicationId": { + "type": "string", + "nullable": true + }, + "certificateType": { + "type": "string", + "enum": ["letsencrypt", "none"] + }, + "composeId": { + "type": "string", + "nullable": true + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "domainType": { + "type": "string", + "enum": ["compose", "application"], + "nullable": true + } + }, + "required": ["host"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.byApplicationId": { + "get": { + "operationId": "domain-byApplicationId", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.byComposeId": { + "get": { + "operationId": "domain-byComposeId", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.generateDomain": { + "post": { + "operationId": "domain-generateDomain", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appName": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": ["appName"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.update": { + "post": { + "operationId": "domain-update", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "port": { + "type": "number", + "minimum": 1, + "maximum": 65535, + "nullable": true + }, + "https": { + "type": "boolean" + }, + "certificateType": { + "type": "string", + "enum": ["letsencrypt", "none"] + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "domainType": { + "type": "string", + "enum": ["compose", "application"], + "nullable": true + }, + "domainId": { + "type": "string" + } + }, + "required": ["host", "domainId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.one": { + "get": { + "operationId": "domain-one", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "domainId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.delete": { + "post": { + "operationId": "domain-delete", + "tags": ["domain"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + } + }, + "required": ["domainId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.create": { + "post": { + "operationId": "destination-create", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "secretAccessKey": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.testConnection": { + "post": { + "operationId": "destination-testConnection", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "secretAccessKey": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.one": { + "get": { + "operationId": "destination-one", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "destinationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.all": { + "get": { + "operationId": "destination-all", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.remove": { + "post": { + "operationId": "destination-remove", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "destinationId": { + "type": "string" + } + }, + "required": ["destinationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.update": { + "post": { + "operationId": "destination-update", + "tags": ["destination"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "secretAccessKey": { + "type": "string" + }, + "destinationId": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey", + "destinationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.create": { + "post": { + "operationId": "backup-create", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schedule": { + "type": "string" + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "prefix": { + "type": "string", + "minLength": 1 + }, + "destinationId": { + "type": "string" + }, + "database": { + "type": "string", + "minLength": 1 + }, + "mariadbId": { + "type": "string", + "nullable": true + }, + "mysqlId": { + "type": "string", + "nullable": true + }, + "postgresId": { + "type": "string", + "nullable": true + }, + "mongoId": { + "type": "string", + "nullable": true + }, + "databaseType": { + "type": "string", + "enum": ["postgres", "mariadb", "mysql", "mongo"] + } + }, + "required": [ + "schedule", + "prefix", + "destinationId", + "database", + "databaseType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.one": { + "get": { + "operationId": "backup-one", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "backupId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.update": { + "post": { + "operationId": "backup-update", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schedule": { + "type": "string" + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "prefix": { + "type": "string", + "minLength": 1 + }, + "backupId": { + "type": "string" + }, + "destinationId": { + "type": "string" + }, + "database": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "schedule", + "prefix", + "backupId", + "destinationId", + "database" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.remove": { + "post": { + "operationId": "backup-remove", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backupId": { + "type": "string" + } + }, + "required": ["backupId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupPostgres": { + "post": { + "operationId": "backup-manualBackupPostgres", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backupId": { + "type": "string" + } + }, + "required": ["backupId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupMySql": { + "post": { + "operationId": "backup-manualBackupMySql", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backupId": { + "type": "string" + } + }, + "required": ["backupId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupMariadb": { + "post": { + "operationId": "backup-manualBackupMariadb", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backupId": { + "type": "string" + } + }, + "required": ["backupId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupMongo": { + "post": { + "operationId": "backup-manualBackupMongo", + "tags": ["backup"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "backupId": { + "type": "string" + } + }, + "required": ["backupId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.all": { + "get": { + "operationId": "deployment-all", + "tags": ["deployment"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.allByCompose": { + "get": { + "operationId": "deployment-allByCompose", + "tags": ["deployment"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.allByServer": { + "get": { + "operationId": "deployment-allByServer", + "tags": ["deployment"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mounts.create": { + "post": { + "operationId": "mounts-create", + "tags": ["mounts"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["bind", "volume", "file"] + }, + "hostPath": { + "type": "string", + "nullable": true + }, + "volumeName": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "mountPath": { + "type": "string", + "minLength": 1 + }, + "serviceType": { + "type": "string", + "enum": [ + "application", + "postgres", + "mysql", + "mariadb", + "mongo", + "redis", + "compose" + ], + "default": "application" + }, + "filePath": { + "type": "string", + "nullable": true + }, + "serviceId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["type", "mountPath", "serviceId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mounts.remove": { + "post": { + "operationId": "mounts-remove", + "tags": ["mounts"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mountId": { + "type": "string" + } + }, + "required": ["mountId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mounts.one": { + "get": { + "operationId": "mounts-one", + "tags": ["mounts"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "mountId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mounts.update": { + "post": { + "operationId": "mounts-update", + "tags": ["mounts"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mountId": { + "type": "string", + "minLength": 1 + }, + "type": { + "type": "string", + "enum": ["bind", "volume", "file"] + }, + "hostPath": { + "type": "string", + "nullable": true + }, + "volumeName": { + "type": "string", + "nullable": true + }, + "filePath": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "serviceType": { + "type": "string", + "enum": [ + "application", + "postgres", + "mysql", + "mariadb", + "mongo", + "redis", + "compose" + ], + "default": "application" + }, + "mountPath": { + "type": "string", + "minLength": 1 + }, + "applicationId": { + "type": "string", + "nullable": true + }, + "postgresId": { + "type": "string", + "nullable": true + }, + "mariadbId": { + "type": "string", + "nullable": true + }, + "mongoId": { + "type": "string", + "nullable": true + }, + "mysqlId": { + "type": "string", + "nullable": true + }, + "redisId": { + "type": "string", + "nullable": true + }, + "composeId": { + "type": "string", + "nullable": true + } + }, + "required": ["mountId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/certificates.create": { + "post": { + "operationId": "certificates-create", + "tags": ["certificates"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "certificateId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "certificateData": { + "type": "string", + "minLength": 1 + }, + "privateKey": { + "type": "string", + "minLength": 1 + }, + "certificatePath": { + "type": "string" + }, + "autoRenew": { + "type": "boolean", + "nullable": true + }, + "adminId": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": ["name", "certificateData", "privateKey"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/certificates.one": { + "get": { + "operationId": "certificates-one", + "tags": ["certificates"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "certificateId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/certificates.remove": { + "post": { + "operationId": "certificates-remove", + "tags": ["certificates"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "certificateId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["certificateId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/certificates.all": { + "get": { + "operationId": "certificates-all", + "tags": ["certificates"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.reloadServer": { + "post": { + "operationId": "settings-reloadServer", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.reloadTraefik": { + "post": { + "operationId": "settings-reloadTraefik", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.toggleDashboard": { + "post": { + "operationId": "settings-toggleDashboard", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enableDashboard": { + "type": "boolean" + }, + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanUnusedImages": { + "post": { + "operationId": "settings-cleanUnusedImages", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanUnusedVolumes": { + "post": { + "operationId": "settings-cleanUnusedVolumes", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanStoppedContainers": { + "post": { + "operationId": "settings-cleanStoppedContainers", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanDockerBuilder": { + "post": { + "operationId": "settings-cleanDockerBuilder", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanDockerPrune": { + "post": { + "operationId": "settings-cleanDockerPrune", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanAll": { + "post": { + "operationId": "settings-cleanAll", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanMonitoring": { + "post": { + "operationId": "settings-cleanMonitoring", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.saveSSHPrivateKey": { + "post": { + "operationId": "settings-saveSSHPrivateKey", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "sshPrivateKey": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.assignDomainServer": { + "post": { + "operationId": "settings-assignDomainServer", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "host": { + "type": "string", + "nullable": true + }, + "certificateType": { + "type": "string", + "enum": ["letsencrypt", "none"], + "default": "none" + }, + "letsEncryptEmail": { + "type": "string", + "nullable": true + } + }, + "required": ["host"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanSSHPrivateKey": { + "post": { + "operationId": "settings-cleanSSHPrivateKey", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateDockerCleanup": { + "post": { + "operationId": "settings-updateDockerCleanup", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enableDockerCleanup": { + "type": "boolean" + }, + "serverId": { + "type": "string" + } + }, + "required": ["enableDockerCleanup"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readTraefikConfig": { + "get": { + "operationId": "settings-readTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateTraefikConfig": { + "post": { + "operationId": "settings-updateTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "traefikConfig": { + "type": "string", + "minLength": 1 + } + }, + "required": ["traefikConfig"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readWebServerTraefikConfig": { + "get": { + "operationId": "settings-readWebServerTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateWebServerTraefikConfig": { + "post": { + "operationId": "settings-updateWebServerTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "traefikConfig": { + "type": "string", + "minLength": 1 + } + }, + "required": ["traefikConfig"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readMiddlewareTraefikConfig": { + "get": { + "operationId": "settings-readMiddlewareTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateMiddlewareTraefikConfig": { + "post": { + "operationId": "settings-updateMiddlewareTraefikConfig", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "traefikConfig": { + "type": "string", + "minLength": 1 + } + }, + "required": ["traefikConfig"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.checkAndUpdateImage": { + "post": { + "operationId": "settings-checkAndUpdateImage", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateServer": { + "post": { + "operationId": "settings-updateServer", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getDokployVersion": { + "get": { + "operationId": "settings-getDokployVersion", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readDirectories": { + "get": { + "operationId": "settings-readDirectories", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateTraefikFile": { + "post": { + "operationId": "settings-updateTraefikFile", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "minLength": 1 + }, + "traefikConfig": { + "type": "string", + "minLength": 1 + }, + "serverId": { + "type": "string" + } + }, + "required": ["path", "traefikConfig"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readTraefikFile": { + "get": { + "operationId": "settings-readTraefikFile", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "path", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getIp": { + "get": { + "operationId": "settings-getIp", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getOpenApiDocument": { + "get": { + "operationId": "settings-getOpenApiDocument", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readTraefikEnv": { + "get": { + "operationId": "settings-readTraefikEnv", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.writeTraefikEnv": { + "post": { + "operationId": "settings-writeTraefikEnv", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "env": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": ["env"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.haveTraefikDashboardPortEnabled": { + "get": { + "operationId": "settings-haveTraefikDashboardPortEnabled", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readStats": { + "get": { + "operationId": "settings-readStats", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getLogRotateStatus": { + "get": { + "operationId": "settings-getLogRotateStatus", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.toggleLogRotate": { + "post": { + "operationId": "settings-toggleLogRotate", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "required": ["enable"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.haveActivateRequests": { + "get": { + "operationId": "settings-haveActivateRequests", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.toggleRequests": { + "post": { + "operationId": "settings-toggleRequests", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "required": ["enable"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.isCloud": { + "get": { + "operationId": "settings-isCloud", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.health": { + "get": { + "operationId": "settings-health", + "tags": ["settings"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/security.create": { + "post": { + "operationId": "security-create", + "tags": ["security"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + } + }, + "required": ["applicationId", "username", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/security.one": { + "get": { + "operationId": "security-one", + "tags": ["security"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "securityId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/security.delete": { + "post": { + "operationId": "security-delete", + "tags": ["security"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "securityId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["securityId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/security.update": { + "post": { + "operationId": "security-update", + "tags": ["security"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "securityId": { + "type": "string", + "minLength": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + } + }, + "required": ["securityId", "username", "password"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redirects.create": { + "post": { + "operationId": "redirects-create", + "tags": ["redirects"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "regex": { + "type": "string", + "minLength": 1 + }, + "replacement": { + "type": "string", + "minLength": 1 + }, + "permanent": { + "type": "boolean" + }, + "applicationId": { + "type": "string" + } + }, + "required": [ + "regex", + "replacement", + "permanent", + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redirects.one": { + "get": { + "operationId": "redirects-one", + "tags": ["redirects"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "redirectId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redirects.delete": { + "post": { + "operationId": "redirects-delete", + "tags": ["redirects"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["redirectId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redirects.update": { + "post": { + "operationId": "redirects-update", + "tags": ["redirects"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectId": { + "type": "string", + "minLength": 1 + }, + "regex": { + "type": "string", + "minLength": 1 + }, + "replacement": { + "type": "string", + "minLength": 1 + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["redirectId", "regex", "replacement", "permanent"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/port.create": { + "post": { + "operationId": "port-create", + "tags": ["port"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "publishedPort": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "protocol": { + "type": "string", + "enum": ["tcp", "udp"], + "default": "tcp" + }, + "applicationId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["publishedPort", "targetPort", "applicationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/port.one": { + "get": { + "operationId": "port-one", + "tags": ["port"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "portId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/port.delete": { + "post": { + "operationId": "port-delete", + "tags": ["port"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "portId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["portId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/port.update": { + "post": { + "operationId": "port-update", + "tags": ["port"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "portId": { + "type": "string", + "minLength": 1 + }, + "publishedPort": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "protocol": { + "type": "string", + "enum": ["tcp", "udp"], + "default": "tcp" + } + }, + "required": ["portId", "publishedPort", "targetPort"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.create": { + "post": { + "operationId": "registry-create", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "registryName": { + "type": "string", + "minLength": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "registryUrl": { + "type": "string" + }, + "registryType": { + "type": "string", + "enum": ["cloud"] + }, + "imagePrefix": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "registryName", + "username", + "password", + "registryUrl", + "registryType", + "imagePrefix" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.remove": { + "post": { + "operationId": "registry-remove", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "registryId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["registryId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.update": { + "post": { + "operationId": "registry-update", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "registryId": { + "type": "string", + "minLength": 1 + }, + "registryName": { + "type": "string", + "minLength": 1 + }, + "imagePrefix": { + "type": "string", + "nullable": true + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "registryUrl": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "registryType": { + "type": "string", + "enum": ["cloud"] + }, + "adminId": { + "type": "string", + "minLength": 1 + }, + "serverId": { + "type": "string" + } + }, + "required": ["registryId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.all": { + "get": { + "operationId": "registry-all", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.one": { + "get": { + "operationId": "registry-one", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "registryId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.testRegistry": { + "post": { + "operationId": "registry-testRegistry", + "tags": ["registry"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "registryName": { + "type": "string", + "minLength": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "registryUrl": { + "type": "string" + }, + "registryType": { + "type": "string", + "enum": ["cloud"] + }, + "imagePrefix": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "registryName", + "username", + "password", + "registryUrl", + "registryType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.getNodes": { + "get": { + "operationId": "cluster-getNodes", + "tags": ["cluster"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.removeWorker": { + "post": { + "operationId": "cluster-removeWorker", + "tags": ["cluster"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nodeId": { + "type": "string" + } + }, + "required": ["nodeId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.addWorker": { + "get": { + "operationId": "cluster-addWorker", + "tags": ["cluster"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.addManager": { + "get": { + "operationId": "cluster-addManager", + "tags": ["cluster"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createSlack": { + "post": { + "operationId": "notification-createSlack", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "channel": { + "type": "string" + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "webhookUrl", + "channel" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateSlack": { + "post": { + "operationId": "notification-updateSlack", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "channel": { + "type": "string" + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "slackId": { + "type": "string" + }, + "adminId": { + "type": "string" + } + }, + "required": ["notificationId", "slackId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testSlackConnection": { + "post": { + "operationId": "notification-testSlackConnection", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "channel": { + "type": "string" + } + }, + "required": ["webhookUrl", "channel"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createTelegram": { + "post": { + "operationId": "notification-createTelegram", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "botToken": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "botToken", + "chatId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateTelegram": { + "post": { + "operationId": "notification-updateTelegram", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "botToken": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string", + "minLength": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "telegramId": { + "type": "string", + "minLength": 1 + }, + "adminId": { + "type": "string" + } + }, + "required": ["notificationId", "telegramId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testTelegramConnection": { + "post": { + "operationId": "notification-testTelegramConnection", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "botToken": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["botToken", "chatId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createDiscord": { + "post": { + "operationId": "notification-createDiscord", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "webhookUrl" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateDiscord": { + "post": { + "operationId": "notification-updateDiscord", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "discordId": { + "type": "string", + "minLength": 1 + }, + "adminId": { + "type": "string" + } + }, + "required": ["notificationId", "discordId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testDiscordConnection": { + "post": { + "operationId": "notification-testDiscordConnection", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "webhookUrl": { + "type": "string", + "minLength": 1 + } + }, + "required": ["webhookUrl"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createEmail": { + "post": { + "operationId": "notification-createEmail", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "smtpServer": { + "type": "string", + "minLength": 1 + }, + "smtpPort": { + "type": "number", + "minimum": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "fromAddress": { + "type": "string", + "minLength": 1 + }, + "toAddresses": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "smtpServer", + "smtpPort", + "username", + "password", + "fromAddress", + "toAddresses" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateEmail": { + "post": { + "operationId": "notification-updateEmail", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "smtpServer": { + "type": "string", + "minLength": 1 + }, + "smtpPort": { + "type": "number", + "minimum": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "fromAddress": { + "type": "string", + "minLength": 1 + }, + "toAddresses": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "emailId": { + "type": "string", + "minLength": 1 + }, + "adminId": { + "type": "string" + } + }, + "required": ["notificationId", "emailId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testEmailConnection": { + "post": { + "operationId": "notification-testEmailConnection", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "smtpServer": { + "type": "string", + "minLength": 1 + }, + "smtpPort": { + "type": "number", + "minimum": 1 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "toAddresses": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "fromAddress": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "smtpServer", + "smtpPort", + "username", + "password", + "toAddresses", + "fromAddress" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.remove": { + "post": { + "operationId": "notification-remove", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "notificationId": { + "type": "string" + } + }, + "required": ["notificationId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.one": { + "get": { + "operationId": "notification-one", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "notificationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.all": { + "get": { + "operationId": "notification-all", + "tags": ["notification"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.create": { + "post": { + "operationId": "sshKey-create", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "privateKey": { + "type": "string" + }, + "publicKey": { + "type": "string" + }, + "adminId": { + "type": "string", + "nullable": true + } + }, + "required": ["name", "privateKey", "publicKey"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.remove": { + "post": { + "operationId": "sshKey-remove", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "sshKeyId": { + "type": "string" + } + }, + "required": ["sshKeyId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.one": { + "get": { + "operationId": "sshKey-one", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "sshKeyId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.all": { + "get": { + "operationId": "sshKey-all", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.generate": { + "post": { + "operationId": "sshKey-generate", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["rsa", "ed25519"] + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.update": { + "post": { + "operationId": "sshKey-update", + "tags": ["sshKey"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "lastUsedAt": { + "type": "string", + "nullable": true + }, + "sshKeyId": { + "type": "string" + } + }, + "required": ["sshKeyId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitProvider.getAll": { + "get": { + "operationId": "gitProvider-getAll", + "tags": ["gitProvider"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitProvider.remove": { + "post": { + "operationId": "gitProvider-remove", + "tags": ["gitProvider"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "gitProviderId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["gitProviderId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.create": { + "post": { + "operationId": "bitbucket-create", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bitbucketId": { + "type": "string" + }, + "bitbucketUsername": { + "type": "string" + }, + "appPassword": { + "type": "string" + }, + "bitbucketWorkspaceName": { + "type": "string" + }, + "gitProviderId": { + "type": "string" + }, + "authId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + } + }, + "required": ["authId", "name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.one": { + "get": { + "operationId": "bitbucket-one", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "bitbucketId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.bitbucketProviders": { + "get": { + "operationId": "bitbucket-bitbucketProviders", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.getBitbucketRepositories": { + "get": { + "operationId": "bitbucket-getBitbucketRepositories", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "bitbucketId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.getBitbucketBranches": { + "get": { + "operationId": "bitbucket-getBitbucketBranches", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "owner", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bitbucketId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.testConnection": { + "post": { + "operationId": "bitbucket-testConnection", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bitbucketId": { + "type": "string", + "minLength": 1 + }, + "bitbucketUsername": { + "type": "string" + }, + "workspaceName": { + "type": "string" + } + }, + "required": ["bitbucketId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.update": { + "post": { + "operationId": "bitbucket-update", + "tags": ["bitbucket"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bitbucketId": { + "type": "string", + "minLength": 1 + }, + "bitbucketUsername": { + "type": "string" + }, + "appPassword": { + "type": "string", + "nullable": true + }, + "bitbucketWorkspaceName": { + "type": "string" + }, + "gitProviderId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "adminId": { + "type": "string" + } + }, + "required": ["bitbucketId", "gitProviderId", "name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.create": { + "post": { + "operationId": "gitlab-create", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "gitlabId": { + "type": "string" + }, + "applicationId": { + "type": "string" + }, + "redirectUri": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "accessToken": { + "type": "string", + "nullable": true + }, + "refreshToken": { + "type": "string", + "nullable": true + }, + "groupName": { + "type": "string" + }, + "expiresAt": { + "type": "number", + "nullable": true + }, + "gitProviderId": { + "type": "string" + }, + "authId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + } + }, + "required": ["authId", "name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.one": { + "get": { + "operationId": "gitlab-one", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "gitlabId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.gitlabProviders": { + "get": { + "operationId": "gitlab-gitlabProviders", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.getGitlabRepositories": { + "get": { + "operationId": "gitlab-getGitlabRepositories", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "gitlabId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.getGitlabBranches": { + "get": { + "operationId": "gitlab-getGitlabBranches", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "id", + "in": "query", + "required": false, + "schema": { + "type": "number" + } + }, + { + "name": "owner", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "gitlabId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.testConnection": { + "post": { + "operationId": "gitlab-testConnection", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "gitlabId": { + "type": "string" + }, + "groupName": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.update": { + "post": { + "operationId": "gitlab-update", + "tags": ["gitlab"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "gitlabId": { + "type": "string", + "minLength": 1 + }, + "applicationId": { + "type": "string" + }, + "redirectUri": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "accessToken": { + "type": "string", + "nullable": true + }, + "refreshToken": { + "type": "string", + "nullable": true + }, + "groupName": { + "type": "string" + }, + "expiresAt": { + "type": "number", + "nullable": true + }, + "gitProviderId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + } + }, + "required": ["gitlabId", "gitProviderId", "name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.one": { + "get": { + "operationId": "github-one", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "githubId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.getGithubRepositories": { + "get": { + "operationId": "github-getGithubRepositories", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "githubId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.getGithubBranches": { + "get": { + "operationId": "github-getGithubBranches", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "repo", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "owner", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "githubId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.githubProviders": { + "get": { + "operationId": "github-githubProviders", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.testConnection": { + "post": { + "operationId": "github-testConnection", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "githubId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["githubId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.update": { + "post": { + "operationId": "github-update", + "tags": ["github"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "githubId": { + "type": "string", + "minLength": 1 + }, + "githubAppName": { + "type": "string", + "nullable": true + }, + "githubAppId": { + "type": "number", + "nullable": true + }, + "githubClientId": { + "type": "string", + "nullable": true + }, + "githubClientSecret": { + "type": "string", + "nullable": true + }, + "githubInstallationId": { + "type": "string", + "nullable": true + }, + "githubPrivateKey": { + "type": "string", + "nullable": true + }, + "githubWebhookSecret": { + "type": "string", + "nullable": true + }, + "gitProviderId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + } + }, + "required": ["githubId", "gitProviderId", "name"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.create": { + "post": { + "operationId": "server-create", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "ipAddress": { + "type": "string" + }, + "port": { + "type": "number" + }, + "username": { + "type": "string" + }, + "sshKeyId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "ipAddress", + "port", + "username", + "sshKeyId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.one": { + "get": { + "operationId": "server-one", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.all": { + "get": { + "operationId": "server-all", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.withSSHKey": { + "get": { + "operationId": "server-withSSHKey", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.setup": { + "post": { + "operationId": "server-setup", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["serverId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.remove": { + "post": { + "operationId": "server-remove", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string", + "minLength": 1 + } + }, + "required": ["serverId"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.update": { + "post": { + "operationId": "server-update", + "tags": ["server"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "minLength": 1 + }, + "ipAddress": { + "type": "string" + }, + "port": { + "type": "number" + }, + "username": { + "type": "string" + }, + "sshKeyId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "serverId", + "ipAddress", + "port", + "username", + "sshKeyId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.getProducts": { + "get": { + "operationId": "stripe-getProducts", + "tags": ["stripe"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.createCheckoutSession": { + "post": { + "operationId": "stripe-createCheckoutSession", + "tags": ["stripe"], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "productId": { + "type": "string" + }, + "serverQuantity": { + "type": "number", + "minimum": 1 + }, + "isAnnual": { + "type": "boolean" + } + }, + "required": ["productId", "serverQuantity", "isAnnual"], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.createCustomerPortalSession": { + "post": { + "operationId": "stripe-createCustomerPortalSession", + "tags": ["stripe"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.canCreateMoreServers": { + "get": { + "operationId": "stripe-canCreateMoreServers", + "tags": ["stripe"], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + } + }, + "components": { + "securitySchemes": { + "Authorization": { + "type": "http", + "scheme": "bearer" + } + }, + "responses": { + "error": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "issues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"], + "additionalProperties": false + } + } + }, + "required": ["message", "code"], + "additionalProperties": false + } + } + } + } + } + }, + "tags": [ + { + "name": "admin" + }, + { + "name": "docker" + }, + { + "name": "compose" + }, + { + "name": "registry" + }, + { + "name": "cluster" + }, + { + "name": "user" + }, + { + "name": "domain" + }, + { + "name": "destination" + }, + { + "name": "backup" + }, + { + "name": "deployment" + }, + { + "name": "mounts" + }, + { + "name": "certificates" + }, + { + "name": "settings" + }, + { + "name": "security" + }, + { + "name": "redirects" + }, + { + "name": "port" + }, + { + "name": "project" + }, + { + "name": "application" + }, + { + "name": "mysql" + }, + { + "name": "postgres" + }, + { + "name": "redis" + }, + { + "name": "mongo" + }, + { + "name": "mariadb" + }, + { + "name": "sshRouter" + }, + { + "name": "gitProvider" + }, + { + "name": "bitbucket" + }, + { + "name": "github" + }, + { + "name": "gitlab" + } + ], + "externalDocs": { + "url": "http://app.dokploy.com/api/settings.getOpenApiDocument" + } +} diff --git a/apps/docs-v2/app/(home)/layout.tsx b/apps/docs-v2/app/(home)/layout.tsx new file mode 100644 index 0000000..bb730ef --- /dev/null +++ b/apps/docs-v2/app/(home)/layout.tsx @@ -0,0 +1,11 @@ +import { baseOptions } from "@/app/layout.config"; +import { HomeLayout } from "fumadocs-ui/layouts/home"; +import type { ReactNode } from "react"; + +export default function Layout({ + children, +}: { + children: ReactNode; +}): React.ReactElement { + return {children}; +} diff --git a/apps/docs-v2/app/(home)/page.tsx b/apps/docs-v2/app/(home)/page.tsx new file mode 100644 index 0000000..cfd55a6 --- /dev/null +++ b/apps/docs-v2/app/(home)/page.tsx @@ -0,0 +1,19 @@ +import Link from "next/link"; + +export default function HomePage() { + return ( +
+

Hello World

+

+ You can open{" "} + + /docs + {" "} + and see the documentation. +

+
+ ); +} diff --git a/apps/docs-v2/app/api/search/route.ts b/apps/docs-v2/app/api/search/route.ts new file mode 100644 index 0000000..d86bfc5 --- /dev/null +++ b/apps/docs-v2/app/api/search/route.ts @@ -0,0 +1,4 @@ +import { source } from "@/lib/source"; +import { createFromSource } from "fumadocs-core/search/server"; + +export const { GET } = createFromSource(source); diff --git a/apps/docs-v2/app/docs/[[...slug]]/page.tsx b/apps/docs-v2/app/docs/[[...slug]]/page.tsx new file mode 100644 index 0000000..7aa61f1 --- /dev/null +++ b/apps/docs-v2/app/docs/[[...slug]]/page.tsx @@ -0,0 +1,67 @@ +import { source } from "@/lib/source"; +import { openapi } from "@/lib/source"; +import { ImageZoom } from "fumadocs-ui/components/image-zoom"; +import defaultMdxComponents from "fumadocs-ui/mdx"; +import { + DocsBody, + DocsDescription, + DocsPage, + DocsTitle, +} from "fumadocs-ui/page"; +import { notFound } from "next/navigation"; + +export default async function Page(props: { + params: Promise<{ slug?: string[] }>; +}) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + const MDX = page.data.body; + + return ( + + {page.data.title} + {page.data.description} + + , + p: ({ children }) => ( +

+ {children} +

+ ), + li: ({ children, id }) => ( +
  • + {children} +
  • + ), + APIPage: openapi.APIPage, + }} + /> +
    +
    + ); +} + +export async function generateStaticParams() { + return source.generateParams(); +} + +export async function generateMetadata(props: { + params: Promise<{ slug?: string[] }>; +}) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + return { + title: page.data.title, + description: page.data.description, + }; +} diff --git a/apps/docs-v2/app/docs/layout.tsx b/apps/docs-v2/app/docs/layout.tsx new file mode 100644 index 0000000..68e424b --- /dev/null +++ b/apps/docs-v2/app/docs/layout.tsx @@ -0,0 +1,12 @@ +import { baseOptions } from "@/app/layout.config"; +import { source } from "@/lib/source"; +import { DocsLayout } from "fumadocs-ui/layouts/docs"; +import type { ReactNode } from "react"; + +export default function Layout({ children }: { children: ReactNode }) { + return ( + + {children} + + ); +} diff --git a/apps/docs-v2/app/global.css b/apps/docs-v2/app/global.css new file mode 100644 index 0000000..bb99b0e --- /dev/null +++ b/apps/docs-v2/app/global.css @@ -0,0 +1,18 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + + + + + :root { + --fd-background: 0 0% 0%; + --background: 0 0% 100%; + --card: 0 0% 97.6%; + } + + .dark{ + --fd-background: 0 0% 100%; + --background: 0 0% 0%; + --card: 0 0% 6.0%; + } diff --git a/apps/docs-v2/app/layout.config.tsx b/apps/docs-v2/app/layout.config.tsx new file mode 100644 index 0000000..bbc000d --- /dev/null +++ b/apps/docs-v2/app/layout.config.tsx @@ -0,0 +1,54 @@ +import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared"; +import Link from "next/link"; + +/** + * Shared layout configurations + * + * you can configure layouts individually from: + * Home Layout: app/(home)/layout.tsx + * Docs Layout: app/docs/layout.tsx + */ + +export const Logo = () => { + return ( + + + + + + + + ); +}; + +export const baseOptions: BaseLayoutProps = { + nav: { + // title: "Dokploy", + children: ( + + + Dokploy + + ), + }, + links: [ + { + text: "Documentation", + url: "/docs", + active: "nested-url", + }, + ], +}; diff --git a/apps/docs-v2/app/layout.tsx b/apps/docs-v2/app/layout.tsx new file mode 100644 index 0000000..f667761 --- /dev/null +++ b/apps/docs-v2/app/layout.tsx @@ -0,0 +1,18 @@ +import "./global.css"; +import { RootProvider } from "fumadocs-ui/provider"; +import { Inter } from "next/font/google"; +import type { ReactNode } from "react"; + +const inter = Inter({ + subsets: ["latin"], +}); + +export default function Layout({ children }: { children: ReactNode }) { + return ( + + + {children} + + + ); +} diff --git a/apps/docs-v2/app/robots.ts b/apps/docs-v2/app/robots.ts new file mode 100644 index 0000000..3b00704 --- /dev/null +++ b/apps/docs-v2/app/robots.ts @@ -0,0 +1,11 @@ +import type { MetadataRoute } from "next"; + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: "*", + allow: "/", + }, + sitemap: "https://docs.dokploy.com/sitemap.xml", + }; +} diff --git a/apps/docs-v2/app/sitemap.ts b/apps/docs-v2/app/sitemap.ts new file mode 100644 index 0000000..cd5055a --- /dev/null +++ b/apps/docs-v2/app/sitemap.ts @@ -0,0 +1,18 @@ +import { url } from "@/utils/metadata"; +import type { MetadataRoute } from "next"; +// import { getPages } from "./source.config"; + +export default async function sitemap(): Promise { + return [ + // ...docs().map((page) => { + // return { + // url: url(`/en${page.url}`), + // lastModified: page.data.exports.lastModified + // ? new Date(page.data.exports.lastModified) + // : undefined, + // changeFrequency: "weekly", + // priority: page.url === "/docs/core/get-started/introduction" ? 1 : 0.8, + // }; + // }), + ]; +} diff --git a/apps/docs-v2/content/docs/api/generated/reference-admin.mdx b/apps/docs-v2/content/docs/api/generated/reference-admin.mdx new file mode 100644 index 0000000..548d0bd --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-admin.mdx @@ -0,0 +1,36 @@ +--- +title: Admin +full: true +_openapi: + toc: + - depth: 2 + title: Admin one + url: '#admin-one' + - depth: 2 + title: Admin create User Invitation + url: '#admin-create-user-invitation' + - depth: 2 + title: Admin remove User + url: '#admin-remove-user' + - depth: 2 + title: Admin get User By Token + url: '#admin-get-user-by-token' + - depth: 2 + title: Admin assign Permissions + url: '#admin-assign-permissions' + structuredData: + headings: + - content: Admin one + id: admin-one + - content: Admin create User Invitation + id: admin-create-user-invitation + - content: Admin remove User + id: admin-remove-user + - content: Admin get User By Token + id: admin-get-user-by-token + - content: Admin assign Permissions + id: admin-assign-permissions + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-application.mdx b/apps/docs-v2/content/docs/api/generated/reference-application.mdx new file mode 100644 index 0000000..3860b11 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-application.mdx @@ -0,0 +1,121 @@ +--- +title: Application +full: true +_openapi: + toc: + - depth: 2 + title: Application create + url: '#application-create' + - depth: 2 + title: Application one + url: '#application-one' + - depth: 2 + title: Application reload + url: '#application-reload' + - depth: 2 + title: Application delete + url: '#application-delete' + - depth: 2 + title: Application stop + url: '#application-stop' + - depth: 2 + title: Application start + url: '#application-start' + - depth: 2 + title: Application redeploy + url: '#application-redeploy' + - depth: 2 + title: Application save Environment + url: '#application-save-environment' + - depth: 2 + title: Application save Build Type + url: '#application-save-build-type' + - depth: 2 + title: Application save Github Provider + url: '#application-save-github-provider' + - depth: 2 + title: Application save Gitlab Provider + url: '#application-save-gitlab-provider' + - depth: 2 + title: Application save Bitbucket Provider + url: '#application-save-bitbucket-provider' + - depth: 2 + title: Application save Docker Provider + url: '#application-save-docker-provider' + - depth: 2 + title: Application save Git Prodiver + url: '#application-save-git-prodiver' + - depth: 2 + title: Application mark Running + url: '#application-mark-running' + - depth: 2 + title: Application update + url: '#application-update' + - depth: 2 + title: Application refresh Token + url: '#application-refresh-token' + - depth: 2 + title: Application deploy + url: '#application-deploy' + - depth: 2 + title: Application clean Queues + url: '#application-clean-queues' + - depth: 2 + title: Application read Traefik Config + url: '#application-read-traefik-config' + - depth: 2 + title: Application update Traefik Config + url: '#application-update-traefik-config' + - depth: 2 + title: Application read App Monitoring + url: '#application-read-app-monitoring' + structuredData: + headings: + - content: Application create + id: application-create + - content: Application one + id: application-one + - content: Application reload + id: application-reload + - content: Application delete + id: application-delete + - content: Application stop + id: application-stop + - content: Application start + id: application-start + - content: Application redeploy + id: application-redeploy + - content: Application save Environment + id: application-save-environment + - content: Application save Build Type + id: application-save-build-type + - content: Application save Github Provider + id: application-save-github-provider + - content: Application save Gitlab Provider + id: application-save-gitlab-provider + - content: Application save Bitbucket Provider + id: application-save-bitbucket-provider + - content: Application save Docker Provider + id: application-save-docker-provider + - content: Application save Git Prodiver + id: application-save-git-prodiver + - content: Application mark Running + id: application-mark-running + - content: Application update + id: application-update + - content: Application refresh Token + id: application-refresh-token + - content: Application deploy + id: application-deploy + - content: Application clean Queues + id: application-clean-queues + - content: Application read Traefik Config + id: application-read-traefik-config + - content: Application update Traefik Config + id: application-update-traefik-config + - content: Application read App Monitoring + id: application-read-app-monitoring + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-auth.mdx b/apps/docs-v2/content/docs/api/generated/reference-auth.mdx new file mode 100644 index 0000000..ebf1cbb --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-auth.mdx @@ -0,0 +1,86 @@ +--- +title: Auth +full: true +_openapi: + toc: + - depth: 2 + title: Auth create Admin + url: '#auth-create-admin' + - depth: 2 + title: Auth create User + url: '#auth-create-user' + - depth: 2 + title: Auth login + url: '#auth-login' + - depth: 2 + title: Auth get + url: '#auth-get' + - depth: 2 + title: Auth logout + url: '#auth-logout' + - depth: 2 + title: Auth update + url: '#auth-update' + - depth: 2 + title: Auth generate Token + url: '#auth-generate-token' + - depth: 2 + title: Auth one + url: '#auth-one' + - depth: 2 + title: Auth generate2 F A Secret + url: '#auth-generate2-f-a-secret' + - depth: 2 + title: Auth verify2 F A Setup + url: '#auth-verify2-f-a-setup' + - depth: 2 + title: Auth verify Login2 F A + url: '#auth-verify-login2-f-a' + - depth: 2 + title: Auth disable2 F A + url: '#auth-disable2-f-a' + - depth: 2 + title: Auth send Reset Password Email + url: '#auth-send-reset-password-email' + - depth: 2 + title: Auth reset Password + url: '#auth-reset-password' + - depth: 2 + title: Auth confirm Email + url: '#auth-confirm-email' + structuredData: + headings: + - content: Auth create Admin + id: auth-create-admin + - content: Auth create User + id: auth-create-user + - content: Auth login + id: auth-login + - content: Auth get + id: auth-get + - content: Auth logout + id: auth-logout + - content: Auth update + id: auth-update + - content: Auth generate Token + id: auth-generate-token + - content: Auth one + id: auth-one + - content: Auth generate2 F A Secret + id: auth-generate2-f-a-secret + - content: Auth verify2 F A Setup + id: auth-verify2-f-a-setup + - content: Auth verify Login2 F A + id: auth-verify-login2-f-a + - content: Auth disable2 F A + id: auth-disable2-f-a + - content: Auth send Reset Password Email + id: auth-send-reset-password-email + - content: Auth reset Password + id: auth-reset-password + - content: Auth confirm Email + id: auth-confirm-email + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-backup.mdx b/apps/docs-v2/content/docs/api/generated/reference-backup.mdx new file mode 100644 index 0000000..5053281 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-backup.mdx @@ -0,0 +1,51 @@ +--- +title: Backup +full: true +_openapi: + toc: + - depth: 2 + title: Backup create + url: '#backup-create' + - depth: 2 + title: Backup one + url: '#backup-one' + - depth: 2 + title: Backup update + url: '#backup-update' + - depth: 2 + title: Backup remove + url: '#backup-remove' + - depth: 2 + title: Backup manual Backup Postgres + url: '#backup-manual-backup-postgres' + - depth: 2 + title: Backup manual Backup My Sql + url: '#backup-manual-backup-my-sql' + - depth: 2 + title: Backup manual Backup Mariadb + url: '#backup-manual-backup-mariadb' + - depth: 2 + title: Backup manual Backup Mongo + url: '#backup-manual-backup-mongo' + structuredData: + headings: + - content: Backup create + id: backup-create + - content: Backup one + id: backup-one + - content: Backup update + id: backup-update + - content: Backup remove + id: backup-remove + - content: Backup manual Backup Postgres + id: backup-manual-backup-postgres + - content: Backup manual Backup My Sql + id: backup-manual-backup-my-sql + - content: Backup manual Backup Mariadb + id: backup-manual-backup-mariadb + - content: Backup manual Backup Mongo + id: backup-manual-backup-mongo + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-bitbucket.mdx b/apps/docs-v2/content/docs/api/generated/reference-bitbucket.mdx new file mode 100644 index 0000000..b8ca554 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-bitbucket.mdx @@ -0,0 +1,46 @@ +--- +title: Bitbucket +full: true +_openapi: + toc: + - depth: 2 + title: Bitbucket create + url: '#bitbucket-create' + - depth: 2 + title: Bitbucket one + url: '#bitbucket-one' + - depth: 2 + title: Bitbucket bitbucket Providers + url: '#bitbucket-bitbucket-providers' + - depth: 2 + title: Bitbucket get Bitbucket Repositories + url: '#bitbucket-get-bitbucket-repositories' + - depth: 2 + title: Bitbucket get Bitbucket Branches + url: '#bitbucket-get-bitbucket-branches' + - depth: 2 + title: Bitbucket test Connection + url: '#bitbucket-test-connection' + - depth: 2 + title: Bitbucket update + url: '#bitbucket-update' + structuredData: + headings: + - content: Bitbucket create + id: bitbucket-create + - content: Bitbucket one + id: bitbucket-one + - content: Bitbucket bitbucket Providers + id: bitbucket-bitbucket-providers + - content: Bitbucket get Bitbucket Repositories + id: bitbucket-get-bitbucket-repositories + - content: Bitbucket get Bitbucket Branches + id: bitbucket-get-bitbucket-branches + - content: Bitbucket test Connection + id: bitbucket-test-connection + - content: Bitbucket update + id: bitbucket-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-certificates.mdx b/apps/docs-v2/content/docs/api/generated/reference-certificates.mdx new file mode 100644 index 0000000..86000d0 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-certificates.mdx @@ -0,0 +1,31 @@ +--- +title: Certificates +full: true +_openapi: + toc: + - depth: 2 + title: Certificates create + url: '#certificates-create' + - depth: 2 + title: Certificates one + url: '#certificates-one' + - depth: 2 + title: Certificates remove + url: '#certificates-remove' + - depth: 2 + title: Certificates all + url: '#certificates-all' + structuredData: + headings: + - content: Certificates create + id: certificates-create + - content: Certificates one + id: certificates-one + - content: Certificates remove + id: certificates-remove + - content: Certificates all + id: certificates-all + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-cluster.mdx b/apps/docs-v2/content/docs/api/generated/reference-cluster.mdx new file mode 100644 index 0000000..6a8f92d --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-cluster.mdx @@ -0,0 +1,31 @@ +--- +title: Cluster +full: true +_openapi: + toc: + - depth: 2 + title: Cluster get Nodes + url: '#cluster-get-nodes' + - depth: 2 + title: Cluster remove Worker + url: '#cluster-remove-worker' + - depth: 2 + title: Cluster add Worker + url: '#cluster-add-worker' + - depth: 2 + title: Cluster add Manager + url: '#cluster-add-manager' + structuredData: + headings: + - content: Cluster get Nodes + id: cluster-get-nodes + - content: Cluster remove Worker + id: cluster-remove-worker + - content: Cluster add Worker + id: cluster-add-worker + - content: Cluster add Manager + id: cluster-add-manager + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-compose.mdx b/apps/docs-v2/content/docs/api/generated/reference-compose.mdx new file mode 100644 index 0000000..0fb7849 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-compose.mdx @@ -0,0 +1,96 @@ +--- +title: Compose +full: true +_openapi: + toc: + - depth: 2 + title: Compose create + url: '#compose-create' + - depth: 2 + title: Compose one + url: '#compose-one' + - depth: 2 + title: Compose update + url: '#compose-update' + - depth: 2 + title: Compose delete + url: '#compose-delete' + - depth: 2 + title: Compose clean Queues + url: '#compose-clean-queues' + - depth: 2 + title: Compose load Services + url: '#compose-load-services' + - depth: 2 + title: Compose fetch Source Type + url: '#compose-fetch-source-type' + - depth: 2 + title: Compose randomize Compose + url: '#compose-randomize-compose' + - depth: 2 + title: Compose get Converted Compose + url: '#compose-get-converted-compose' + - depth: 2 + title: Compose deploy + url: '#compose-deploy' + - depth: 2 + title: Compose redeploy + url: '#compose-redeploy' + - depth: 2 + title: Compose stop + url: '#compose-stop' + - depth: 2 + title: Compose get Default Command + url: '#compose-get-default-command' + - depth: 2 + title: Compose refresh Token + url: '#compose-refresh-token' + - depth: 2 + title: Compose deploy Template + url: '#compose-deploy-template' + - depth: 2 + title: Compose templates + url: '#compose-templates' + - depth: 2 + title: Compose get Tags + url: '#compose-get-tags' + structuredData: + headings: + - content: Compose create + id: compose-create + - content: Compose one + id: compose-one + - content: Compose update + id: compose-update + - content: Compose delete + id: compose-delete + - content: Compose clean Queues + id: compose-clean-queues + - content: Compose load Services + id: compose-load-services + - content: Compose fetch Source Type + id: compose-fetch-source-type + - content: Compose randomize Compose + id: compose-randomize-compose + - content: Compose get Converted Compose + id: compose-get-converted-compose + - content: Compose deploy + id: compose-deploy + - content: Compose redeploy + id: compose-redeploy + - content: Compose stop + id: compose-stop + - content: Compose get Default Command + id: compose-get-default-command + - content: Compose refresh Token + id: compose-refresh-token + - content: Compose deploy Template + id: compose-deploy-template + - content: Compose templates + id: compose-templates + - content: Compose get Tags + id: compose-get-tags + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-deployment.mdx b/apps/docs-v2/content/docs/api/generated/reference-deployment.mdx new file mode 100644 index 0000000..3489956 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-deployment.mdx @@ -0,0 +1,26 @@ +--- +title: Deployment +full: true +_openapi: + toc: + - depth: 2 + title: Deployment all + url: '#deployment-all' + - depth: 2 + title: Deployment all By Compose + url: '#deployment-all-by-compose' + - depth: 2 + title: Deployment all By Server + url: '#deployment-all-by-server' + structuredData: + headings: + - content: Deployment all + id: deployment-all + - content: Deployment all By Compose + id: deployment-all-by-compose + - content: Deployment all By Server + id: deployment-all-by-server + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-destination.mdx b/apps/docs-v2/content/docs/api/generated/reference-destination.mdx new file mode 100644 index 0000000..1a1bc82 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-destination.mdx @@ -0,0 +1,41 @@ +--- +title: Destination +full: true +_openapi: + toc: + - depth: 2 + title: Destination create + url: '#destination-create' + - depth: 2 + title: Destination test Connection + url: '#destination-test-connection' + - depth: 2 + title: Destination one + url: '#destination-one' + - depth: 2 + title: Destination all + url: '#destination-all' + - depth: 2 + title: Destination remove + url: '#destination-remove' + - depth: 2 + title: Destination update + url: '#destination-update' + structuredData: + headings: + - content: Destination create + id: destination-create + - content: Destination test Connection + id: destination-test-connection + - content: Destination one + id: destination-one + - content: Destination all + id: destination-all + - content: Destination remove + id: destination-remove + - content: Destination update + id: destination-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-docker.mdx b/apps/docs-v2/content/docs/api/generated/reference-docker.mdx new file mode 100644 index 0000000..272c250 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-docker.mdx @@ -0,0 +1,36 @@ +--- +title: Docker +full: true +_openapi: + toc: + - depth: 2 + title: Docker get Containers + url: '#docker-get-containers' + - depth: 2 + title: Docker restart Container + url: '#docker-restart-container' + - depth: 2 + title: Docker get Config + url: '#docker-get-config' + - depth: 2 + title: Docker get Containers By App Name Match + url: '#docker-get-containers-by-app-name-match' + - depth: 2 + title: Docker get Containers By App Label + url: '#docker-get-containers-by-app-label' + structuredData: + headings: + - content: Docker get Containers + id: docker-get-containers + - content: Docker restart Container + id: docker-restart-container + - content: Docker get Config + id: docker-get-config + - content: Docker get Containers By App Name Match + id: docker-get-containers-by-app-name-match + - content: Docker get Containers By App Label + id: docker-get-containers-by-app-label + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-domain.mdx b/apps/docs-v2/content/docs/api/generated/reference-domain.mdx new file mode 100644 index 0000000..9fd844e --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-domain.mdx @@ -0,0 +1,46 @@ +--- +title: Domain +full: true +_openapi: + toc: + - depth: 2 + title: Domain create + url: '#domain-create' + - depth: 2 + title: Domain by Application Id + url: '#domain-by-application-id' + - depth: 2 + title: Domain by Compose Id + url: '#domain-by-compose-id' + - depth: 2 + title: Domain generate Domain + url: '#domain-generate-domain' + - depth: 2 + title: Domain update + url: '#domain-update' + - depth: 2 + title: Domain one + url: '#domain-one' + - depth: 2 + title: Domain delete + url: '#domain-delete' + structuredData: + headings: + - content: Domain create + id: domain-create + - content: Domain by Application Id + id: domain-by-application-id + - content: Domain by Compose Id + id: domain-by-compose-id + - content: Domain generate Domain + id: domain-generate-domain + - content: Domain update + id: domain-update + - content: Domain one + id: domain-one + - content: Domain delete + id: domain-delete + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-gitProvider.mdx b/apps/docs-v2/content/docs/api/generated/reference-gitProvider.mdx new file mode 100644 index 0000000..5e0266c --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-gitProvider.mdx @@ -0,0 +1,21 @@ +--- +title: Git Provider +full: true +_openapi: + toc: + - depth: 2 + title: Git Provider get All + url: '#git-provider-get-all' + - depth: 2 + title: Git Provider remove + url: '#git-provider-remove' + structuredData: + headings: + - content: Git Provider get All + id: git-provider-get-all + - content: Git Provider remove + id: git-provider-remove + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-github.mdx b/apps/docs-v2/content/docs/api/generated/reference-github.mdx new file mode 100644 index 0000000..850f594 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-github.mdx @@ -0,0 +1,41 @@ +--- +title: Github +full: true +_openapi: + toc: + - depth: 2 + title: Github one + url: '#github-one' + - depth: 2 + title: Github get Github Repositories + url: '#github-get-github-repositories' + - depth: 2 + title: Github get Github Branches + url: '#github-get-github-branches' + - depth: 2 + title: Github github Providers + url: '#github-github-providers' + - depth: 2 + title: Github test Connection + url: '#github-test-connection' + - depth: 2 + title: Github update + url: '#github-update' + structuredData: + headings: + - content: Github one + id: github-one + - content: Github get Github Repositories + id: github-get-github-repositories + - content: Github get Github Branches + id: github-get-github-branches + - content: Github github Providers + id: github-github-providers + - content: Github test Connection + id: github-test-connection + - content: Github update + id: github-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-gitlab.mdx b/apps/docs-v2/content/docs/api/generated/reference-gitlab.mdx new file mode 100644 index 0000000..4aac6a1 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-gitlab.mdx @@ -0,0 +1,46 @@ +--- +title: Gitlab +full: true +_openapi: + toc: + - depth: 2 + title: Gitlab create + url: '#gitlab-create' + - depth: 2 + title: Gitlab one + url: '#gitlab-one' + - depth: 2 + title: Gitlab gitlab Providers + url: '#gitlab-gitlab-providers' + - depth: 2 + title: Gitlab get Gitlab Repositories + url: '#gitlab-get-gitlab-repositories' + - depth: 2 + title: Gitlab get Gitlab Branches + url: '#gitlab-get-gitlab-branches' + - depth: 2 + title: Gitlab test Connection + url: '#gitlab-test-connection' + - depth: 2 + title: Gitlab update + url: '#gitlab-update' + structuredData: + headings: + - content: Gitlab create + id: gitlab-create + - content: Gitlab one + id: gitlab-one + - content: Gitlab gitlab Providers + id: gitlab-gitlab-providers + - content: Gitlab get Gitlab Repositories + id: gitlab-get-gitlab-repositories + - content: Gitlab get Gitlab Branches + id: gitlab-get-gitlab-branches + - content: Gitlab test Connection + id: gitlab-test-connection + - content: Gitlab update + id: gitlab-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-mariadb.mdx b/apps/docs-v2/content/docs/api/generated/reference-mariadb.mdx new file mode 100644 index 0000000..f656f00 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-mariadb.mdx @@ -0,0 +1,66 @@ +--- +title: Mariadb +full: true +_openapi: + toc: + - depth: 2 + title: Mariadb create + url: '#mariadb-create' + - depth: 2 + title: Mariadb one + url: '#mariadb-one' + - depth: 2 + title: Mariadb start + url: '#mariadb-start' + - depth: 2 + title: Mariadb stop + url: '#mariadb-stop' + - depth: 2 + title: Mariadb save External Port + url: '#mariadb-save-external-port' + - depth: 2 + title: Mariadb deploy + url: '#mariadb-deploy' + - depth: 2 + title: Mariadb change Status + url: '#mariadb-change-status' + - depth: 2 + title: Mariadb remove + url: '#mariadb-remove' + - depth: 2 + title: Mariadb save Environment + url: '#mariadb-save-environment' + - depth: 2 + title: Mariadb reload + url: '#mariadb-reload' + - depth: 2 + title: Mariadb update + url: '#mariadb-update' + structuredData: + headings: + - content: Mariadb create + id: mariadb-create + - content: Mariadb one + id: mariadb-one + - content: Mariadb start + id: mariadb-start + - content: Mariadb stop + id: mariadb-stop + - content: Mariadb save External Port + id: mariadb-save-external-port + - content: Mariadb deploy + id: mariadb-deploy + - content: Mariadb change Status + id: mariadb-change-status + - content: Mariadb remove + id: mariadb-remove + - content: Mariadb save Environment + id: mariadb-save-environment + - content: Mariadb reload + id: mariadb-reload + - content: Mariadb update + id: mariadb-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-mongo.mdx b/apps/docs-v2/content/docs/api/generated/reference-mongo.mdx new file mode 100644 index 0000000..418362e --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-mongo.mdx @@ -0,0 +1,66 @@ +--- +title: Mongo +full: true +_openapi: + toc: + - depth: 2 + title: Mongo create + url: '#mongo-create' + - depth: 2 + title: Mongo one + url: '#mongo-one' + - depth: 2 + title: Mongo start + url: '#mongo-start' + - depth: 2 + title: Mongo stop + url: '#mongo-stop' + - depth: 2 + title: Mongo save External Port + url: '#mongo-save-external-port' + - depth: 2 + title: Mongo deploy + url: '#mongo-deploy' + - depth: 2 + title: Mongo change Status + url: '#mongo-change-status' + - depth: 2 + title: Mongo reload + url: '#mongo-reload' + - depth: 2 + title: Mongo remove + url: '#mongo-remove' + - depth: 2 + title: Mongo save Environment + url: '#mongo-save-environment' + - depth: 2 + title: Mongo update + url: '#mongo-update' + structuredData: + headings: + - content: Mongo create + id: mongo-create + - content: Mongo one + id: mongo-one + - content: Mongo start + id: mongo-start + - content: Mongo stop + id: mongo-stop + - content: Mongo save External Port + id: mongo-save-external-port + - content: Mongo deploy + id: mongo-deploy + - content: Mongo change Status + id: mongo-change-status + - content: Mongo reload + id: mongo-reload + - content: Mongo remove + id: mongo-remove + - content: Mongo save Environment + id: mongo-save-environment + - content: Mongo update + id: mongo-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-mounts.mdx b/apps/docs-v2/content/docs/api/generated/reference-mounts.mdx new file mode 100644 index 0000000..f014d77 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-mounts.mdx @@ -0,0 +1,31 @@ +--- +title: Mounts +full: true +_openapi: + toc: + - depth: 2 + title: Mounts create + url: '#mounts-create' + - depth: 2 + title: Mounts remove + url: '#mounts-remove' + - depth: 2 + title: Mounts one + url: '#mounts-one' + - depth: 2 + title: Mounts update + url: '#mounts-update' + structuredData: + headings: + - content: Mounts create + id: mounts-create + - content: Mounts remove + id: mounts-remove + - content: Mounts one + id: mounts-one + - content: Mounts update + id: mounts-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-mysql.mdx b/apps/docs-v2/content/docs/api/generated/reference-mysql.mdx new file mode 100644 index 0000000..8a0df9e --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-mysql.mdx @@ -0,0 +1,66 @@ +--- +title: Mysql +full: true +_openapi: + toc: + - depth: 2 + title: Mysql create + url: '#mysql-create' + - depth: 2 + title: Mysql one + url: '#mysql-one' + - depth: 2 + title: Mysql start + url: '#mysql-start' + - depth: 2 + title: Mysql stop + url: '#mysql-stop' + - depth: 2 + title: Mysql save External Port + url: '#mysql-save-external-port' + - depth: 2 + title: Mysql deploy + url: '#mysql-deploy' + - depth: 2 + title: Mysql change Status + url: '#mysql-change-status' + - depth: 2 + title: Mysql reload + url: '#mysql-reload' + - depth: 2 + title: Mysql remove + url: '#mysql-remove' + - depth: 2 + title: Mysql save Environment + url: '#mysql-save-environment' + - depth: 2 + title: Mysql update + url: '#mysql-update' + structuredData: + headings: + - content: Mysql create + id: mysql-create + - content: Mysql one + id: mysql-one + - content: Mysql start + id: mysql-start + - content: Mysql stop + id: mysql-stop + - content: Mysql save External Port + id: mysql-save-external-port + - content: Mysql deploy + id: mysql-deploy + - content: Mysql change Status + id: mysql-change-status + - content: Mysql reload + id: mysql-reload + - content: Mysql remove + id: mysql-remove + - content: Mysql save Environment + id: mysql-save-environment + - content: Mysql update + id: mysql-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-notification.mdx b/apps/docs-v2/content/docs/api/generated/reference-notification.mdx new file mode 100644 index 0000000..ef65dad --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-notification.mdx @@ -0,0 +1,86 @@ +--- +title: Notification +full: true +_openapi: + toc: + - depth: 2 + title: Notification create Slack + url: '#notification-create-slack' + - depth: 2 + title: Notification update Slack + url: '#notification-update-slack' + - depth: 2 + title: Notification test Slack Connection + url: '#notification-test-slack-connection' + - depth: 2 + title: Notification create Telegram + url: '#notification-create-telegram' + - depth: 2 + title: Notification update Telegram + url: '#notification-update-telegram' + - depth: 2 + title: Notification test Telegram Connection + url: '#notification-test-telegram-connection' + - depth: 2 + title: Notification create Discord + url: '#notification-create-discord' + - depth: 2 + title: Notification update Discord + url: '#notification-update-discord' + - depth: 2 + title: Notification test Discord Connection + url: '#notification-test-discord-connection' + - depth: 2 + title: Notification create Email + url: '#notification-create-email' + - depth: 2 + title: Notification update Email + url: '#notification-update-email' + - depth: 2 + title: Notification test Email Connection + url: '#notification-test-email-connection' + - depth: 2 + title: Notification remove + url: '#notification-remove' + - depth: 2 + title: Notification one + url: '#notification-one' + - depth: 2 + title: Notification all + url: '#notification-all' + structuredData: + headings: + - content: Notification create Slack + id: notification-create-slack + - content: Notification update Slack + id: notification-update-slack + - content: Notification test Slack Connection + id: notification-test-slack-connection + - content: Notification create Telegram + id: notification-create-telegram + - content: Notification update Telegram + id: notification-update-telegram + - content: Notification test Telegram Connection + id: notification-test-telegram-connection + - content: Notification create Discord + id: notification-create-discord + - content: Notification update Discord + id: notification-update-discord + - content: Notification test Discord Connection + id: notification-test-discord-connection + - content: Notification create Email + id: notification-create-email + - content: Notification update Email + id: notification-update-email + - content: Notification test Email Connection + id: notification-test-email-connection + - content: Notification remove + id: notification-remove + - content: Notification one + id: notification-one + - content: Notification all + id: notification-all + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-port.mdx b/apps/docs-v2/content/docs/api/generated/reference-port.mdx new file mode 100644 index 0000000..cf6f2e0 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-port.mdx @@ -0,0 +1,31 @@ +--- +title: Port +full: true +_openapi: + toc: + - depth: 2 + title: Port create + url: '#port-create' + - depth: 2 + title: Port one + url: '#port-one' + - depth: 2 + title: Port delete + url: '#port-delete' + - depth: 2 + title: Port update + url: '#port-update' + structuredData: + headings: + - content: Port create + id: port-create + - content: Port one + id: port-one + - content: Port delete + id: port-delete + - content: Port update + id: port-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-postgres.mdx b/apps/docs-v2/content/docs/api/generated/reference-postgres.mdx new file mode 100644 index 0000000..c1e6e1c --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-postgres.mdx @@ -0,0 +1,66 @@ +--- +title: Postgres +full: true +_openapi: + toc: + - depth: 2 + title: Postgres create + url: '#postgres-create' + - depth: 2 + title: Postgres one + url: '#postgres-one' + - depth: 2 + title: Postgres start + url: '#postgres-start' + - depth: 2 + title: Postgres stop + url: '#postgres-stop' + - depth: 2 + title: Postgres save External Port + url: '#postgres-save-external-port' + - depth: 2 + title: Postgres deploy + url: '#postgres-deploy' + - depth: 2 + title: Postgres change Status + url: '#postgres-change-status' + - depth: 2 + title: Postgres remove + url: '#postgres-remove' + - depth: 2 + title: Postgres save Environment + url: '#postgres-save-environment' + - depth: 2 + title: Postgres reload + url: '#postgres-reload' + - depth: 2 + title: Postgres update + url: '#postgres-update' + structuredData: + headings: + - content: Postgres create + id: postgres-create + - content: Postgres one + id: postgres-one + - content: Postgres start + id: postgres-start + - content: Postgres stop + id: postgres-stop + - content: Postgres save External Port + id: postgres-save-external-port + - content: Postgres deploy + id: postgres-deploy + - content: Postgres change Status + id: postgres-change-status + - content: Postgres remove + id: postgres-remove + - content: Postgres save Environment + id: postgres-save-environment + - content: Postgres reload + id: postgres-reload + - content: Postgres update + id: postgres-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-project.mdx b/apps/docs-v2/content/docs/api/generated/reference-project.mdx new file mode 100644 index 0000000..afde77f --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-project.mdx @@ -0,0 +1,36 @@ +--- +title: Project +full: true +_openapi: + toc: + - depth: 2 + title: Project create + url: '#project-create' + - depth: 2 + title: Project one + url: '#project-one' + - depth: 2 + title: Project all + url: '#project-all' + - depth: 2 + title: Project remove + url: '#project-remove' + - depth: 2 + title: Project update + url: '#project-update' + structuredData: + headings: + - content: Project create + id: project-create + - content: Project one + id: project-one + - content: Project all + id: project-all + - content: Project remove + id: project-remove + - content: Project update + id: project-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-redirects.mdx b/apps/docs-v2/content/docs/api/generated/reference-redirects.mdx new file mode 100644 index 0000000..fac4dad --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-redirects.mdx @@ -0,0 +1,31 @@ +--- +title: Redirects +full: true +_openapi: + toc: + - depth: 2 + title: Redirects create + url: '#redirects-create' + - depth: 2 + title: Redirects one + url: '#redirects-one' + - depth: 2 + title: Redirects delete + url: '#redirects-delete' + - depth: 2 + title: Redirects update + url: '#redirects-update' + structuredData: + headings: + - content: Redirects create + id: redirects-create + - content: Redirects one + id: redirects-one + - content: Redirects delete + id: redirects-delete + - content: Redirects update + id: redirects-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-redis.mdx b/apps/docs-v2/content/docs/api/generated/reference-redis.mdx new file mode 100644 index 0000000..1ad55a5 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-redis.mdx @@ -0,0 +1,66 @@ +--- +title: Redis +full: true +_openapi: + toc: + - depth: 2 + title: Redis create + url: '#redis-create' + - depth: 2 + title: Redis one + url: '#redis-one' + - depth: 2 + title: Redis start + url: '#redis-start' + - depth: 2 + title: Redis reload + url: '#redis-reload' + - depth: 2 + title: Redis stop + url: '#redis-stop' + - depth: 2 + title: Redis save External Port + url: '#redis-save-external-port' + - depth: 2 + title: Redis deploy + url: '#redis-deploy' + - depth: 2 + title: Redis change Status + url: '#redis-change-status' + - depth: 2 + title: Redis remove + url: '#redis-remove' + - depth: 2 + title: Redis save Environment + url: '#redis-save-environment' + - depth: 2 + title: Redis update + url: '#redis-update' + structuredData: + headings: + - content: Redis create + id: redis-create + - content: Redis one + id: redis-one + - content: Redis start + id: redis-start + - content: Redis reload + id: redis-reload + - content: Redis stop + id: redis-stop + - content: Redis save External Port + id: redis-save-external-port + - content: Redis deploy + id: redis-deploy + - content: Redis change Status + id: redis-change-status + - content: Redis remove + id: redis-remove + - content: Redis save Environment + id: redis-save-environment + - content: Redis update + id: redis-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-registry.mdx b/apps/docs-v2/content/docs/api/generated/reference-registry.mdx new file mode 100644 index 0000000..1b15d67 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-registry.mdx @@ -0,0 +1,41 @@ +--- +title: Registry +full: true +_openapi: + toc: + - depth: 2 + title: Registry create + url: '#registry-create' + - depth: 2 + title: Registry remove + url: '#registry-remove' + - depth: 2 + title: Registry update + url: '#registry-update' + - depth: 2 + title: Registry all + url: '#registry-all' + - depth: 2 + title: Registry one + url: '#registry-one' + - depth: 2 + title: Registry test Registry + url: '#registry-test-registry' + structuredData: + headings: + - content: Registry create + id: registry-create + - content: Registry remove + id: registry-remove + - content: Registry update + id: registry-update + - content: Registry all + id: registry-all + - content: Registry one + id: registry-one + - content: Registry test Registry + id: registry-test-registry + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-security.mdx b/apps/docs-v2/content/docs/api/generated/reference-security.mdx new file mode 100644 index 0000000..9ddf724 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-security.mdx @@ -0,0 +1,31 @@ +--- +title: Security +full: true +_openapi: + toc: + - depth: 2 + title: Security create + url: '#security-create' + - depth: 2 + title: Security one + url: '#security-one' + - depth: 2 + title: Security delete + url: '#security-delete' + - depth: 2 + title: Security update + url: '#security-update' + structuredData: + headings: + - content: Security create + id: security-create + - content: Security one + id: security-one + - content: Security delete + id: security-delete + - content: Security update + id: security-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-server.mdx b/apps/docs-v2/content/docs/api/generated/reference-server.mdx new file mode 100644 index 0000000..7914637 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-server.mdx @@ -0,0 +1,46 @@ +--- +title: Server +full: true +_openapi: + toc: + - depth: 2 + title: Server create + url: '#server-create' + - depth: 2 + title: Server one + url: '#server-one' + - depth: 2 + title: Server all + url: '#server-all' + - depth: 2 + title: Server with S S H Key + url: '#server-with-s-s-h-key' + - depth: 2 + title: Server setup + url: '#server-setup' + - depth: 2 + title: Server remove + url: '#server-remove' + - depth: 2 + title: Server update + url: '#server-update' + structuredData: + headings: + - content: Server create + id: server-create + - content: Server one + id: server-one + - content: Server all + id: server-all + - content: Server with S S H Key + id: server-with-s-s-h-key + - content: Server setup + id: server-setup + - content: Server remove + id: server-remove + - content: Server update + id: server-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-settings.mdx b/apps/docs-v2/content/docs/api/generated/reference-settings.mdx new file mode 100644 index 0000000..b66f4b4 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-settings.mdx @@ -0,0 +1,201 @@ +--- +title: Settings +full: true +_openapi: + toc: + - depth: 2 + title: Settings reload Server + url: '#settings-reload-server' + - depth: 2 + title: Settings reload Traefik + url: '#settings-reload-traefik' + - depth: 2 + title: Settings toggle Dashboard + url: '#settings-toggle-dashboard' + - depth: 2 + title: Settings clean Unused Images + url: '#settings-clean-unused-images' + - depth: 2 + title: Settings clean Unused Volumes + url: '#settings-clean-unused-volumes' + - depth: 2 + title: Settings clean Stopped Containers + url: '#settings-clean-stopped-containers' + - depth: 2 + title: Settings clean Docker Builder + url: '#settings-clean-docker-builder' + - depth: 2 + title: Settings clean Docker Prune + url: '#settings-clean-docker-prune' + - depth: 2 + title: Settings clean All + url: '#settings-clean-all' + - depth: 2 + title: Settings clean Monitoring + url: '#settings-clean-monitoring' + - depth: 2 + title: Settings save S S H Private Key + url: '#settings-save-s-s-h-private-key' + - depth: 2 + title: Settings assign Domain Server + url: '#settings-assign-domain-server' + - depth: 2 + title: Settings clean S S H Private Key + url: '#settings-clean-s-s-h-private-key' + - depth: 2 + title: Settings update Docker Cleanup + url: '#settings-update-docker-cleanup' + - depth: 2 + title: Settings read Traefik Config + url: '#settings-read-traefik-config' + - depth: 2 + title: Settings update Traefik Config + url: '#settings-update-traefik-config' + - depth: 2 + title: Settings read Web Server Traefik Config + url: '#settings-read-web-server-traefik-config' + - depth: 2 + title: Settings update Web Server Traefik Config + url: '#settings-update-web-server-traefik-config' + - depth: 2 + title: Settings read Middleware Traefik Config + url: '#settings-read-middleware-traefik-config' + - depth: 2 + title: Settings update Middleware Traefik Config + url: '#settings-update-middleware-traefik-config' + - depth: 2 + title: Settings check And Update Image + url: '#settings-check-and-update-image' + - depth: 2 + title: Settings update Server + url: '#settings-update-server' + - depth: 2 + title: Settings get Dokploy Version + url: '#settings-get-dokploy-version' + - depth: 2 + title: Settings read Directories + url: '#settings-read-directories' + - depth: 2 + title: Settings update Traefik File + url: '#settings-update-traefik-file' + - depth: 2 + title: Settings read Traefik File + url: '#settings-read-traefik-file' + - depth: 2 + title: Settings get Ip + url: '#settings-get-ip' + - depth: 2 + title: Settings get Open Api Document + url: '#settings-get-open-api-document' + - depth: 2 + title: Settings read Traefik Env + url: '#settings-read-traefik-env' + - depth: 2 + title: Settings write Traefik Env + url: '#settings-write-traefik-env' + - depth: 2 + title: Settings have Traefik Dashboard Port Enabled + url: '#settings-have-traefik-dashboard-port-enabled' + - depth: 2 + title: Settings read Stats + url: '#settings-read-stats' + - depth: 2 + title: Settings get Log Rotate Status + url: '#settings-get-log-rotate-status' + - depth: 2 + title: Settings toggle Log Rotate + url: '#settings-toggle-log-rotate' + - depth: 2 + title: Settings have Activate Requests + url: '#settings-have-activate-requests' + - depth: 2 + title: Settings toggle Requests + url: '#settings-toggle-requests' + - depth: 2 + title: Settings is Cloud + url: '#settings-is-cloud' + - depth: 2 + title: Settings health + url: '#settings-health' + structuredData: + headings: + - content: Settings reload Server + id: settings-reload-server + - content: Settings reload Traefik + id: settings-reload-traefik + - content: Settings toggle Dashboard + id: settings-toggle-dashboard + - content: Settings clean Unused Images + id: settings-clean-unused-images + - content: Settings clean Unused Volumes + id: settings-clean-unused-volumes + - content: Settings clean Stopped Containers + id: settings-clean-stopped-containers + - content: Settings clean Docker Builder + id: settings-clean-docker-builder + - content: Settings clean Docker Prune + id: settings-clean-docker-prune + - content: Settings clean All + id: settings-clean-all + - content: Settings clean Monitoring + id: settings-clean-monitoring + - content: Settings save S S H Private Key + id: settings-save-s-s-h-private-key + - content: Settings assign Domain Server + id: settings-assign-domain-server + - content: Settings clean S S H Private Key + id: settings-clean-s-s-h-private-key + - content: Settings update Docker Cleanup + id: settings-update-docker-cleanup + - content: Settings read Traefik Config + id: settings-read-traefik-config + - content: Settings update Traefik Config + id: settings-update-traefik-config + - content: Settings read Web Server Traefik Config + id: settings-read-web-server-traefik-config + - content: Settings update Web Server Traefik Config + id: settings-update-web-server-traefik-config + - content: Settings read Middleware Traefik Config + id: settings-read-middleware-traefik-config + - content: Settings update Middleware Traefik Config + id: settings-update-middleware-traefik-config + - content: Settings check And Update Image + id: settings-check-and-update-image + - content: Settings update Server + id: settings-update-server + - content: Settings get Dokploy Version + id: settings-get-dokploy-version + - content: Settings read Directories + id: settings-read-directories + - content: Settings update Traefik File + id: settings-update-traefik-file + - content: Settings read Traefik File + id: settings-read-traefik-file + - content: Settings get Ip + id: settings-get-ip + - content: Settings get Open Api Document + id: settings-get-open-api-document + - content: Settings read Traefik Env + id: settings-read-traefik-env + - content: Settings write Traefik Env + id: settings-write-traefik-env + - content: Settings have Traefik Dashboard Port Enabled + id: settings-have-traefik-dashboard-port-enabled + - content: Settings read Stats + id: settings-read-stats + - content: Settings get Log Rotate Status + id: settings-get-log-rotate-status + - content: Settings toggle Log Rotate + id: settings-toggle-log-rotate + - content: Settings have Activate Requests + id: settings-have-activate-requests + - content: Settings toggle Requests + id: settings-toggle-requests + - content: Settings is Cloud + id: settings-is-cloud + - content: Settings health + id: settings-health + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-sshKey.mdx b/apps/docs-v2/content/docs/api/generated/reference-sshKey.mdx new file mode 100644 index 0000000..c8a8bde --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-sshKey.mdx @@ -0,0 +1,41 @@ +--- +title: Ssh Key +full: true +_openapi: + toc: + - depth: 2 + title: Ssh Key create + url: '#ssh-key-create' + - depth: 2 + title: Ssh Key remove + url: '#ssh-key-remove' + - depth: 2 + title: Ssh Key one + url: '#ssh-key-one' + - depth: 2 + title: Ssh Key all + url: '#ssh-key-all' + - depth: 2 + title: Ssh Key generate + url: '#ssh-key-generate' + - depth: 2 + title: Ssh Key update + url: '#ssh-key-update' + structuredData: + headings: + - content: Ssh Key create + id: ssh-key-create + - content: Ssh Key remove + id: ssh-key-remove + - content: Ssh Key one + id: ssh-key-one + - content: Ssh Key all + id: ssh-key-all + - content: Ssh Key generate + id: ssh-key-generate + - content: Ssh Key update + id: ssh-key-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-stripe.mdx b/apps/docs-v2/content/docs/api/generated/reference-stripe.mdx new file mode 100644 index 0000000..e530c0a --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-stripe.mdx @@ -0,0 +1,31 @@ +--- +title: Stripe +full: true +_openapi: + toc: + - depth: 2 + title: Stripe get Products + url: '#stripe-get-products' + - depth: 2 + title: Stripe create Checkout Session + url: '#stripe-create-checkout-session' + - depth: 2 + title: Stripe create Customer Portal Session + url: '#stripe-create-customer-portal-session' + - depth: 2 + title: Stripe can Create More Servers + url: '#stripe-can-create-more-servers' + structuredData: + headings: + - content: Stripe get Products + id: stripe-get-products + - content: Stripe create Checkout Session + id: stripe-create-checkout-session + - content: Stripe create Customer Portal Session + id: stripe-create-customer-portal-session + - content: Stripe can Create More Servers + id: stripe-can-create-more-servers + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/generated/reference-user.mdx b/apps/docs-v2/content/docs/api/generated/reference-user.mdx new file mode 100644 index 0000000..2984521 --- /dev/null +++ b/apps/docs-v2/content/docs/api/generated/reference-user.mdx @@ -0,0 +1,26 @@ +--- +title: User +full: true +_openapi: + toc: + - depth: 2 + title: User all + url: '#user-all' + - depth: 2 + title: User by Auth Id + url: '#user-by-auth-id' + - depth: 2 + title: User by User Id + url: '#user-by-user-id' + structuredData: + headings: + - content: User all + id: user-all + - content: User by Auth Id + id: user-by-auth-id + - content: User by User Id + id: user-by-user-id + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/index.mdx b/apps/docs-v2/content/docs/api/index.mdx new file mode 100644 index 0000000..2303d3a --- /dev/null +++ b/apps/docs-v2/content/docs/api/index.mdx @@ -0,0 +1,99 @@ +--- +title: Dokploy API +description: How to interact with the dokploy API for administrators and users +--- + +In some cases, you may need to interact directly with the dokploy API. Here's how both administrators and users can do this. + +## For Administrators + +1. Access the Swagger UI by navigating to `your-vps-ip:3000/swagger`. +2. Use the Swagger interface to interact with the API. +3. By default, access to the Swagger UI is restricted, and only authenticated administrators can access the API. + +## For Users + +1. By default, users do not have direct access to the API. +2. Administrators can grant users access to: + - Generate access tokens + - Access the Swagger UI +3. If you need access, contact your administrator. + +Note: The API provides advanced functionalities. Make sure you understand the operations you're performing to avoid unintended changes to the system. + +## Usage + +By default the OpenApi base url is `http://localhost:3000/api`, you need to replace with the ip of your dokploy instance or the domain name. + +### Authentication + +The API uses JWT tokens for authentication. You can generate a token by going to the `/settings/profile` page and go to API/CLI Section and generate the token. + +Let's take a example of authenticated request: +```bash +curl -X 'GET' \ + 'https://dokploy.com/api/project.all' \ + -H 'accept: application/json' + -H 'Authorization: Bearer YOUR-TOKEN' +``` +then you will get the something like this: + +```json +[ + { + "projectId": "klZKsyw5g-QT_jrWJ5T-w", + "name": "Random", + "description": "", + "createdAt": "2024-06-19T15:05:58.785Z", + "adminId": "_WrKZbs7iJAA3p4N2Yfyu", + "applications": [], + "mariadb": [], + "mongo": [], + "mysql": [ + { + "mysqlId": "N3cudwO46TiDXzBm4SaQ1", + "name": "mysql", + "appName": "random-mysql-924715", + "description": "", + "databaseName": "mysql", + "databaseUser": "mysql", + "databasePassword": "h13BzO6y3KYSHaQg", + "databaseRootPassword": "mM1b7JeoPA7jArxj", + "dockerImage": "mysql:8", + "command": null, + "env": null, + "memoryReservation": null, + "memoryLimit": null, + "cpuReservation": null, + "cpuLimit": null, + "externalPort": null, + "applicationStatus": "done", + "createdAt": "2024-06-24T01:55:40.378Z", + "projectId": "klZKsyw5g-QT_jrWJ5T-w" + } + ], + "postgres": [], + "redis": [ + { + "redisId": "TtFK5S4QFaIjaNGOb8Ku-", + "name": "redis", + "appName": "random-redis-7eec62", + "description": "", + "databasePassword": "Yvb8gqClfomjcue8", + "dockerImage": "redis:7", + "command": null, + "env": null, + "memoryReservation": null, + "memoryLimit": null, + "cpuReservation": null, + "cpuLimit": null, + "externalPort": 6379, + "createdAt": "2024-06-26T06:43:20.570Z", + "applicationStatus": "done", + "projectId": "klZKsyw5g-QT_jrWJ5T-w" + } + ], + "compose": [] + }, +] +``` \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/meta.json b/apps/docs-v2/content/docs/api/meta.json new file mode 100644 index 0000000..7fd17a1 --- /dev/null +++ b/apps/docs-v2/content/docs/api/meta.json @@ -0,0 +1,7 @@ +{ + "title": "API", + "description": "API Documentation", + "icon": "Building2", + "root": true, + "pages": ["---Get Started---", "index", "---API---", "...", "---Reference---"] +} diff --git a/apps/docs-v2/content/docs/api/reference-admin.mdx b/apps/docs-v2/content/docs/api/reference-admin.mdx new file mode 100644 index 0000000..548d0bd --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-admin.mdx @@ -0,0 +1,36 @@ +--- +title: Admin +full: true +_openapi: + toc: + - depth: 2 + title: Admin one + url: '#admin-one' + - depth: 2 + title: Admin create User Invitation + url: '#admin-create-user-invitation' + - depth: 2 + title: Admin remove User + url: '#admin-remove-user' + - depth: 2 + title: Admin get User By Token + url: '#admin-get-user-by-token' + - depth: 2 + title: Admin assign Permissions + url: '#admin-assign-permissions' + structuredData: + headings: + - content: Admin one + id: admin-one + - content: Admin create User Invitation + id: admin-create-user-invitation + - content: Admin remove User + id: admin-remove-user + - content: Admin get User By Token + id: admin-get-user-by-token + - content: Admin assign Permissions + id: admin-assign-permissions + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-application.mdx b/apps/docs-v2/content/docs/api/reference-application.mdx new file mode 100644 index 0000000..3860b11 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-application.mdx @@ -0,0 +1,121 @@ +--- +title: Application +full: true +_openapi: + toc: + - depth: 2 + title: Application create + url: '#application-create' + - depth: 2 + title: Application one + url: '#application-one' + - depth: 2 + title: Application reload + url: '#application-reload' + - depth: 2 + title: Application delete + url: '#application-delete' + - depth: 2 + title: Application stop + url: '#application-stop' + - depth: 2 + title: Application start + url: '#application-start' + - depth: 2 + title: Application redeploy + url: '#application-redeploy' + - depth: 2 + title: Application save Environment + url: '#application-save-environment' + - depth: 2 + title: Application save Build Type + url: '#application-save-build-type' + - depth: 2 + title: Application save Github Provider + url: '#application-save-github-provider' + - depth: 2 + title: Application save Gitlab Provider + url: '#application-save-gitlab-provider' + - depth: 2 + title: Application save Bitbucket Provider + url: '#application-save-bitbucket-provider' + - depth: 2 + title: Application save Docker Provider + url: '#application-save-docker-provider' + - depth: 2 + title: Application save Git Prodiver + url: '#application-save-git-prodiver' + - depth: 2 + title: Application mark Running + url: '#application-mark-running' + - depth: 2 + title: Application update + url: '#application-update' + - depth: 2 + title: Application refresh Token + url: '#application-refresh-token' + - depth: 2 + title: Application deploy + url: '#application-deploy' + - depth: 2 + title: Application clean Queues + url: '#application-clean-queues' + - depth: 2 + title: Application read Traefik Config + url: '#application-read-traefik-config' + - depth: 2 + title: Application update Traefik Config + url: '#application-update-traefik-config' + - depth: 2 + title: Application read App Monitoring + url: '#application-read-app-monitoring' + structuredData: + headings: + - content: Application create + id: application-create + - content: Application one + id: application-one + - content: Application reload + id: application-reload + - content: Application delete + id: application-delete + - content: Application stop + id: application-stop + - content: Application start + id: application-start + - content: Application redeploy + id: application-redeploy + - content: Application save Environment + id: application-save-environment + - content: Application save Build Type + id: application-save-build-type + - content: Application save Github Provider + id: application-save-github-provider + - content: Application save Gitlab Provider + id: application-save-gitlab-provider + - content: Application save Bitbucket Provider + id: application-save-bitbucket-provider + - content: Application save Docker Provider + id: application-save-docker-provider + - content: Application save Git Prodiver + id: application-save-git-prodiver + - content: Application mark Running + id: application-mark-running + - content: Application update + id: application-update + - content: Application refresh Token + id: application-refresh-token + - content: Application deploy + id: application-deploy + - content: Application clean Queues + id: application-clean-queues + - content: Application read Traefik Config + id: application-read-traefik-config + - content: Application update Traefik Config + id: application-update-traefik-config + - content: Application read App Monitoring + id: application-read-app-monitoring + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-auth.mdx b/apps/docs-v2/content/docs/api/reference-auth.mdx new file mode 100644 index 0000000..ebf1cbb --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-auth.mdx @@ -0,0 +1,86 @@ +--- +title: Auth +full: true +_openapi: + toc: + - depth: 2 + title: Auth create Admin + url: '#auth-create-admin' + - depth: 2 + title: Auth create User + url: '#auth-create-user' + - depth: 2 + title: Auth login + url: '#auth-login' + - depth: 2 + title: Auth get + url: '#auth-get' + - depth: 2 + title: Auth logout + url: '#auth-logout' + - depth: 2 + title: Auth update + url: '#auth-update' + - depth: 2 + title: Auth generate Token + url: '#auth-generate-token' + - depth: 2 + title: Auth one + url: '#auth-one' + - depth: 2 + title: Auth generate2 F A Secret + url: '#auth-generate2-f-a-secret' + - depth: 2 + title: Auth verify2 F A Setup + url: '#auth-verify2-f-a-setup' + - depth: 2 + title: Auth verify Login2 F A + url: '#auth-verify-login2-f-a' + - depth: 2 + title: Auth disable2 F A + url: '#auth-disable2-f-a' + - depth: 2 + title: Auth send Reset Password Email + url: '#auth-send-reset-password-email' + - depth: 2 + title: Auth reset Password + url: '#auth-reset-password' + - depth: 2 + title: Auth confirm Email + url: '#auth-confirm-email' + structuredData: + headings: + - content: Auth create Admin + id: auth-create-admin + - content: Auth create User + id: auth-create-user + - content: Auth login + id: auth-login + - content: Auth get + id: auth-get + - content: Auth logout + id: auth-logout + - content: Auth update + id: auth-update + - content: Auth generate Token + id: auth-generate-token + - content: Auth one + id: auth-one + - content: Auth generate2 F A Secret + id: auth-generate2-f-a-secret + - content: Auth verify2 F A Setup + id: auth-verify2-f-a-setup + - content: Auth verify Login2 F A + id: auth-verify-login2-f-a + - content: Auth disable2 F A + id: auth-disable2-f-a + - content: Auth send Reset Password Email + id: auth-send-reset-password-email + - content: Auth reset Password + id: auth-reset-password + - content: Auth confirm Email + id: auth-confirm-email + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-backup.mdx b/apps/docs-v2/content/docs/api/reference-backup.mdx new file mode 100644 index 0000000..5053281 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-backup.mdx @@ -0,0 +1,51 @@ +--- +title: Backup +full: true +_openapi: + toc: + - depth: 2 + title: Backup create + url: '#backup-create' + - depth: 2 + title: Backup one + url: '#backup-one' + - depth: 2 + title: Backup update + url: '#backup-update' + - depth: 2 + title: Backup remove + url: '#backup-remove' + - depth: 2 + title: Backup manual Backup Postgres + url: '#backup-manual-backup-postgres' + - depth: 2 + title: Backup manual Backup My Sql + url: '#backup-manual-backup-my-sql' + - depth: 2 + title: Backup manual Backup Mariadb + url: '#backup-manual-backup-mariadb' + - depth: 2 + title: Backup manual Backup Mongo + url: '#backup-manual-backup-mongo' + structuredData: + headings: + - content: Backup create + id: backup-create + - content: Backup one + id: backup-one + - content: Backup update + id: backup-update + - content: Backup remove + id: backup-remove + - content: Backup manual Backup Postgres + id: backup-manual-backup-postgres + - content: Backup manual Backup My Sql + id: backup-manual-backup-my-sql + - content: Backup manual Backup Mariadb + id: backup-manual-backup-mariadb + - content: Backup manual Backup Mongo + id: backup-manual-backup-mongo + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-bitbucket.mdx b/apps/docs-v2/content/docs/api/reference-bitbucket.mdx new file mode 100644 index 0000000..b8ca554 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-bitbucket.mdx @@ -0,0 +1,46 @@ +--- +title: Bitbucket +full: true +_openapi: + toc: + - depth: 2 + title: Bitbucket create + url: '#bitbucket-create' + - depth: 2 + title: Bitbucket one + url: '#bitbucket-one' + - depth: 2 + title: Bitbucket bitbucket Providers + url: '#bitbucket-bitbucket-providers' + - depth: 2 + title: Bitbucket get Bitbucket Repositories + url: '#bitbucket-get-bitbucket-repositories' + - depth: 2 + title: Bitbucket get Bitbucket Branches + url: '#bitbucket-get-bitbucket-branches' + - depth: 2 + title: Bitbucket test Connection + url: '#bitbucket-test-connection' + - depth: 2 + title: Bitbucket update + url: '#bitbucket-update' + structuredData: + headings: + - content: Bitbucket create + id: bitbucket-create + - content: Bitbucket one + id: bitbucket-one + - content: Bitbucket bitbucket Providers + id: bitbucket-bitbucket-providers + - content: Bitbucket get Bitbucket Repositories + id: bitbucket-get-bitbucket-repositories + - content: Bitbucket get Bitbucket Branches + id: bitbucket-get-bitbucket-branches + - content: Bitbucket test Connection + id: bitbucket-test-connection + - content: Bitbucket update + id: bitbucket-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-certificates.mdx b/apps/docs-v2/content/docs/api/reference-certificates.mdx new file mode 100644 index 0000000..86000d0 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-certificates.mdx @@ -0,0 +1,31 @@ +--- +title: Certificates +full: true +_openapi: + toc: + - depth: 2 + title: Certificates create + url: '#certificates-create' + - depth: 2 + title: Certificates one + url: '#certificates-one' + - depth: 2 + title: Certificates remove + url: '#certificates-remove' + - depth: 2 + title: Certificates all + url: '#certificates-all' + structuredData: + headings: + - content: Certificates create + id: certificates-create + - content: Certificates one + id: certificates-one + - content: Certificates remove + id: certificates-remove + - content: Certificates all + id: certificates-all + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-cluster.mdx b/apps/docs-v2/content/docs/api/reference-cluster.mdx new file mode 100644 index 0000000..6a8f92d --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-cluster.mdx @@ -0,0 +1,31 @@ +--- +title: Cluster +full: true +_openapi: + toc: + - depth: 2 + title: Cluster get Nodes + url: '#cluster-get-nodes' + - depth: 2 + title: Cluster remove Worker + url: '#cluster-remove-worker' + - depth: 2 + title: Cluster add Worker + url: '#cluster-add-worker' + - depth: 2 + title: Cluster add Manager + url: '#cluster-add-manager' + structuredData: + headings: + - content: Cluster get Nodes + id: cluster-get-nodes + - content: Cluster remove Worker + id: cluster-remove-worker + - content: Cluster add Worker + id: cluster-add-worker + - content: Cluster add Manager + id: cluster-add-manager + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-compose.mdx b/apps/docs-v2/content/docs/api/reference-compose.mdx new file mode 100644 index 0000000..0fb7849 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-compose.mdx @@ -0,0 +1,96 @@ +--- +title: Compose +full: true +_openapi: + toc: + - depth: 2 + title: Compose create + url: '#compose-create' + - depth: 2 + title: Compose one + url: '#compose-one' + - depth: 2 + title: Compose update + url: '#compose-update' + - depth: 2 + title: Compose delete + url: '#compose-delete' + - depth: 2 + title: Compose clean Queues + url: '#compose-clean-queues' + - depth: 2 + title: Compose load Services + url: '#compose-load-services' + - depth: 2 + title: Compose fetch Source Type + url: '#compose-fetch-source-type' + - depth: 2 + title: Compose randomize Compose + url: '#compose-randomize-compose' + - depth: 2 + title: Compose get Converted Compose + url: '#compose-get-converted-compose' + - depth: 2 + title: Compose deploy + url: '#compose-deploy' + - depth: 2 + title: Compose redeploy + url: '#compose-redeploy' + - depth: 2 + title: Compose stop + url: '#compose-stop' + - depth: 2 + title: Compose get Default Command + url: '#compose-get-default-command' + - depth: 2 + title: Compose refresh Token + url: '#compose-refresh-token' + - depth: 2 + title: Compose deploy Template + url: '#compose-deploy-template' + - depth: 2 + title: Compose templates + url: '#compose-templates' + - depth: 2 + title: Compose get Tags + url: '#compose-get-tags' + structuredData: + headings: + - content: Compose create + id: compose-create + - content: Compose one + id: compose-one + - content: Compose update + id: compose-update + - content: Compose delete + id: compose-delete + - content: Compose clean Queues + id: compose-clean-queues + - content: Compose load Services + id: compose-load-services + - content: Compose fetch Source Type + id: compose-fetch-source-type + - content: Compose randomize Compose + id: compose-randomize-compose + - content: Compose get Converted Compose + id: compose-get-converted-compose + - content: Compose deploy + id: compose-deploy + - content: Compose redeploy + id: compose-redeploy + - content: Compose stop + id: compose-stop + - content: Compose get Default Command + id: compose-get-default-command + - content: Compose refresh Token + id: compose-refresh-token + - content: Compose deploy Template + id: compose-deploy-template + - content: Compose templates + id: compose-templates + - content: Compose get Tags + id: compose-get-tags + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-deployment.mdx b/apps/docs-v2/content/docs/api/reference-deployment.mdx new file mode 100644 index 0000000..3489956 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-deployment.mdx @@ -0,0 +1,26 @@ +--- +title: Deployment +full: true +_openapi: + toc: + - depth: 2 + title: Deployment all + url: '#deployment-all' + - depth: 2 + title: Deployment all By Compose + url: '#deployment-all-by-compose' + - depth: 2 + title: Deployment all By Server + url: '#deployment-all-by-server' + structuredData: + headings: + - content: Deployment all + id: deployment-all + - content: Deployment all By Compose + id: deployment-all-by-compose + - content: Deployment all By Server + id: deployment-all-by-server + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-destination.mdx b/apps/docs-v2/content/docs/api/reference-destination.mdx new file mode 100644 index 0000000..1a1bc82 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-destination.mdx @@ -0,0 +1,41 @@ +--- +title: Destination +full: true +_openapi: + toc: + - depth: 2 + title: Destination create + url: '#destination-create' + - depth: 2 + title: Destination test Connection + url: '#destination-test-connection' + - depth: 2 + title: Destination one + url: '#destination-one' + - depth: 2 + title: Destination all + url: '#destination-all' + - depth: 2 + title: Destination remove + url: '#destination-remove' + - depth: 2 + title: Destination update + url: '#destination-update' + structuredData: + headings: + - content: Destination create + id: destination-create + - content: Destination test Connection + id: destination-test-connection + - content: Destination one + id: destination-one + - content: Destination all + id: destination-all + - content: Destination remove + id: destination-remove + - content: Destination update + id: destination-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-docker.mdx b/apps/docs-v2/content/docs/api/reference-docker.mdx new file mode 100644 index 0000000..272c250 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-docker.mdx @@ -0,0 +1,36 @@ +--- +title: Docker +full: true +_openapi: + toc: + - depth: 2 + title: Docker get Containers + url: '#docker-get-containers' + - depth: 2 + title: Docker restart Container + url: '#docker-restart-container' + - depth: 2 + title: Docker get Config + url: '#docker-get-config' + - depth: 2 + title: Docker get Containers By App Name Match + url: '#docker-get-containers-by-app-name-match' + - depth: 2 + title: Docker get Containers By App Label + url: '#docker-get-containers-by-app-label' + structuredData: + headings: + - content: Docker get Containers + id: docker-get-containers + - content: Docker restart Container + id: docker-restart-container + - content: Docker get Config + id: docker-get-config + - content: Docker get Containers By App Name Match + id: docker-get-containers-by-app-name-match + - content: Docker get Containers By App Label + id: docker-get-containers-by-app-label + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-domain.mdx b/apps/docs-v2/content/docs/api/reference-domain.mdx new file mode 100644 index 0000000..9fd844e --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-domain.mdx @@ -0,0 +1,46 @@ +--- +title: Domain +full: true +_openapi: + toc: + - depth: 2 + title: Domain create + url: '#domain-create' + - depth: 2 + title: Domain by Application Id + url: '#domain-by-application-id' + - depth: 2 + title: Domain by Compose Id + url: '#domain-by-compose-id' + - depth: 2 + title: Domain generate Domain + url: '#domain-generate-domain' + - depth: 2 + title: Domain update + url: '#domain-update' + - depth: 2 + title: Domain one + url: '#domain-one' + - depth: 2 + title: Domain delete + url: '#domain-delete' + structuredData: + headings: + - content: Domain create + id: domain-create + - content: Domain by Application Id + id: domain-by-application-id + - content: Domain by Compose Id + id: domain-by-compose-id + - content: Domain generate Domain + id: domain-generate-domain + - content: Domain update + id: domain-update + - content: Domain one + id: domain-one + - content: Domain delete + id: domain-delete + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-gitProvider.mdx b/apps/docs-v2/content/docs/api/reference-gitProvider.mdx new file mode 100644 index 0000000..5e0266c --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-gitProvider.mdx @@ -0,0 +1,21 @@ +--- +title: Git Provider +full: true +_openapi: + toc: + - depth: 2 + title: Git Provider get All + url: '#git-provider-get-all' + - depth: 2 + title: Git Provider remove + url: '#git-provider-remove' + structuredData: + headings: + - content: Git Provider get All + id: git-provider-get-all + - content: Git Provider remove + id: git-provider-remove + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-github.mdx b/apps/docs-v2/content/docs/api/reference-github.mdx new file mode 100644 index 0000000..850f594 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-github.mdx @@ -0,0 +1,41 @@ +--- +title: Github +full: true +_openapi: + toc: + - depth: 2 + title: Github one + url: '#github-one' + - depth: 2 + title: Github get Github Repositories + url: '#github-get-github-repositories' + - depth: 2 + title: Github get Github Branches + url: '#github-get-github-branches' + - depth: 2 + title: Github github Providers + url: '#github-github-providers' + - depth: 2 + title: Github test Connection + url: '#github-test-connection' + - depth: 2 + title: Github update + url: '#github-update' + structuredData: + headings: + - content: Github one + id: github-one + - content: Github get Github Repositories + id: github-get-github-repositories + - content: Github get Github Branches + id: github-get-github-branches + - content: Github github Providers + id: github-github-providers + - content: Github test Connection + id: github-test-connection + - content: Github update + id: github-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-gitlab.mdx b/apps/docs-v2/content/docs/api/reference-gitlab.mdx new file mode 100644 index 0000000..4aac6a1 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-gitlab.mdx @@ -0,0 +1,46 @@ +--- +title: Gitlab +full: true +_openapi: + toc: + - depth: 2 + title: Gitlab create + url: '#gitlab-create' + - depth: 2 + title: Gitlab one + url: '#gitlab-one' + - depth: 2 + title: Gitlab gitlab Providers + url: '#gitlab-gitlab-providers' + - depth: 2 + title: Gitlab get Gitlab Repositories + url: '#gitlab-get-gitlab-repositories' + - depth: 2 + title: Gitlab get Gitlab Branches + url: '#gitlab-get-gitlab-branches' + - depth: 2 + title: Gitlab test Connection + url: '#gitlab-test-connection' + - depth: 2 + title: Gitlab update + url: '#gitlab-update' + structuredData: + headings: + - content: Gitlab create + id: gitlab-create + - content: Gitlab one + id: gitlab-one + - content: Gitlab gitlab Providers + id: gitlab-gitlab-providers + - content: Gitlab get Gitlab Repositories + id: gitlab-get-gitlab-repositories + - content: Gitlab get Gitlab Branches + id: gitlab-get-gitlab-branches + - content: Gitlab test Connection + id: gitlab-test-connection + - content: Gitlab update + id: gitlab-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-mariadb.mdx b/apps/docs-v2/content/docs/api/reference-mariadb.mdx new file mode 100644 index 0000000..f656f00 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-mariadb.mdx @@ -0,0 +1,66 @@ +--- +title: Mariadb +full: true +_openapi: + toc: + - depth: 2 + title: Mariadb create + url: '#mariadb-create' + - depth: 2 + title: Mariadb one + url: '#mariadb-one' + - depth: 2 + title: Mariadb start + url: '#mariadb-start' + - depth: 2 + title: Mariadb stop + url: '#mariadb-stop' + - depth: 2 + title: Mariadb save External Port + url: '#mariadb-save-external-port' + - depth: 2 + title: Mariadb deploy + url: '#mariadb-deploy' + - depth: 2 + title: Mariadb change Status + url: '#mariadb-change-status' + - depth: 2 + title: Mariadb remove + url: '#mariadb-remove' + - depth: 2 + title: Mariadb save Environment + url: '#mariadb-save-environment' + - depth: 2 + title: Mariadb reload + url: '#mariadb-reload' + - depth: 2 + title: Mariadb update + url: '#mariadb-update' + structuredData: + headings: + - content: Mariadb create + id: mariadb-create + - content: Mariadb one + id: mariadb-one + - content: Mariadb start + id: mariadb-start + - content: Mariadb stop + id: mariadb-stop + - content: Mariadb save External Port + id: mariadb-save-external-port + - content: Mariadb deploy + id: mariadb-deploy + - content: Mariadb change Status + id: mariadb-change-status + - content: Mariadb remove + id: mariadb-remove + - content: Mariadb save Environment + id: mariadb-save-environment + - content: Mariadb reload + id: mariadb-reload + - content: Mariadb update + id: mariadb-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-mongo.mdx b/apps/docs-v2/content/docs/api/reference-mongo.mdx new file mode 100644 index 0000000..418362e --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-mongo.mdx @@ -0,0 +1,66 @@ +--- +title: Mongo +full: true +_openapi: + toc: + - depth: 2 + title: Mongo create + url: '#mongo-create' + - depth: 2 + title: Mongo one + url: '#mongo-one' + - depth: 2 + title: Mongo start + url: '#mongo-start' + - depth: 2 + title: Mongo stop + url: '#mongo-stop' + - depth: 2 + title: Mongo save External Port + url: '#mongo-save-external-port' + - depth: 2 + title: Mongo deploy + url: '#mongo-deploy' + - depth: 2 + title: Mongo change Status + url: '#mongo-change-status' + - depth: 2 + title: Mongo reload + url: '#mongo-reload' + - depth: 2 + title: Mongo remove + url: '#mongo-remove' + - depth: 2 + title: Mongo save Environment + url: '#mongo-save-environment' + - depth: 2 + title: Mongo update + url: '#mongo-update' + structuredData: + headings: + - content: Mongo create + id: mongo-create + - content: Mongo one + id: mongo-one + - content: Mongo start + id: mongo-start + - content: Mongo stop + id: mongo-stop + - content: Mongo save External Port + id: mongo-save-external-port + - content: Mongo deploy + id: mongo-deploy + - content: Mongo change Status + id: mongo-change-status + - content: Mongo reload + id: mongo-reload + - content: Mongo remove + id: mongo-remove + - content: Mongo save Environment + id: mongo-save-environment + - content: Mongo update + id: mongo-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-mounts.mdx b/apps/docs-v2/content/docs/api/reference-mounts.mdx new file mode 100644 index 0000000..f014d77 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-mounts.mdx @@ -0,0 +1,31 @@ +--- +title: Mounts +full: true +_openapi: + toc: + - depth: 2 + title: Mounts create + url: '#mounts-create' + - depth: 2 + title: Mounts remove + url: '#mounts-remove' + - depth: 2 + title: Mounts one + url: '#mounts-one' + - depth: 2 + title: Mounts update + url: '#mounts-update' + structuredData: + headings: + - content: Mounts create + id: mounts-create + - content: Mounts remove + id: mounts-remove + - content: Mounts one + id: mounts-one + - content: Mounts update + id: mounts-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-mysql.mdx b/apps/docs-v2/content/docs/api/reference-mysql.mdx new file mode 100644 index 0000000..8a0df9e --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-mysql.mdx @@ -0,0 +1,66 @@ +--- +title: Mysql +full: true +_openapi: + toc: + - depth: 2 + title: Mysql create + url: '#mysql-create' + - depth: 2 + title: Mysql one + url: '#mysql-one' + - depth: 2 + title: Mysql start + url: '#mysql-start' + - depth: 2 + title: Mysql stop + url: '#mysql-stop' + - depth: 2 + title: Mysql save External Port + url: '#mysql-save-external-port' + - depth: 2 + title: Mysql deploy + url: '#mysql-deploy' + - depth: 2 + title: Mysql change Status + url: '#mysql-change-status' + - depth: 2 + title: Mysql reload + url: '#mysql-reload' + - depth: 2 + title: Mysql remove + url: '#mysql-remove' + - depth: 2 + title: Mysql save Environment + url: '#mysql-save-environment' + - depth: 2 + title: Mysql update + url: '#mysql-update' + structuredData: + headings: + - content: Mysql create + id: mysql-create + - content: Mysql one + id: mysql-one + - content: Mysql start + id: mysql-start + - content: Mysql stop + id: mysql-stop + - content: Mysql save External Port + id: mysql-save-external-port + - content: Mysql deploy + id: mysql-deploy + - content: Mysql change Status + id: mysql-change-status + - content: Mysql reload + id: mysql-reload + - content: Mysql remove + id: mysql-remove + - content: Mysql save Environment + id: mysql-save-environment + - content: Mysql update + id: mysql-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-notification.mdx b/apps/docs-v2/content/docs/api/reference-notification.mdx new file mode 100644 index 0000000..ef65dad --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-notification.mdx @@ -0,0 +1,86 @@ +--- +title: Notification +full: true +_openapi: + toc: + - depth: 2 + title: Notification create Slack + url: '#notification-create-slack' + - depth: 2 + title: Notification update Slack + url: '#notification-update-slack' + - depth: 2 + title: Notification test Slack Connection + url: '#notification-test-slack-connection' + - depth: 2 + title: Notification create Telegram + url: '#notification-create-telegram' + - depth: 2 + title: Notification update Telegram + url: '#notification-update-telegram' + - depth: 2 + title: Notification test Telegram Connection + url: '#notification-test-telegram-connection' + - depth: 2 + title: Notification create Discord + url: '#notification-create-discord' + - depth: 2 + title: Notification update Discord + url: '#notification-update-discord' + - depth: 2 + title: Notification test Discord Connection + url: '#notification-test-discord-connection' + - depth: 2 + title: Notification create Email + url: '#notification-create-email' + - depth: 2 + title: Notification update Email + url: '#notification-update-email' + - depth: 2 + title: Notification test Email Connection + url: '#notification-test-email-connection' + - depth: 2 + title: Notification remove + url: '#notification-remove' + - depth: 2 + title: Notification one + url: '#notification-one' + - depth: 2 + title: Notification all + url: '#notification-all' + structuredData: + headings: + - content: Notification create Slack + id: notification-create-slack + - content: Notification update Slack + id: notification-update-slack + - content: Notification test Slack Connection + id: notification-test-slack-connection + - content: Notification create Telegram + id: notification-create-telegram + - content: Notification update Telegram + id: notification-update-telegram + - content: Notification test Telegram Connection + id: notification-test-telegram-connection + - content: Notification create Discord + id: notification-create-discord + - content: Notification update Discord + id: notification-update-discord + - content: Notification test Discord Connection + id: notification-test-discord-connection + - content: Notification create Email + id: notification-create-email + - content: Notification update Email + id: notification-update-email + - content: Notification test Email Connection + id: notification-test-email-connection + - content: Notification remove + id: notification-remove + - content: Notification one + id: notification-one + - content: Notification all + id: notification-all + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-port.mdx b/apps/docs-v2/content/docs/api/reference-port.mdx new file mode 100644 index 0000000..cf6f2e0 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-port.mdx @@ -0,0 +1,31 @@ +--- +title: Port +full: true +_openapi: + toc: + - depth: 2 + title: Port create + url: '#port-create' + - depth: 2 + title: Port one + url: '#port-one' + - depth: 2 + title: Port delete + url: '#port-delete' + - depth: 2 + title: Port update + url: '#port-update' + structuredData: + headings: + - content: Port create + id: port-create + - content: Port one + id: port-one + - content: Port delete + id: port-delete + - content: Port update + id: port-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-postgres.mdx b/apps/docs-v2/content/docs/api/reference-postgres.mdx new file mode 100644 index 0000000..c1e6e1c --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-postgres.mdx @@ -0,0 +1,66 @@ +--- +title: Postgres +full: true +_openapi: + toc: + - depth: 2 + title: Postgres create + url: '#postgres-create' + - depth: 2 + title: Postgres one + url: '#postgres-one' + - depth: 2 + title: Postgres start + url: '#postgres-start' + - depth: 2 + title: Postgres stop + url: '#postgres-stop' + - depth: 2 + title: Postgres save External Port + url: '#postgres-save-external-port' + - depth: 2 + title: Postgres deploy + url: '#postgres-deploy' + - depth: 2 + title: Postgres change Status + url: '#postgres-change-status' + - depth: 2 + title: Postgres remove + url: '#postgres-remove' + - depth: 2 + title: Postgres save Environment + url: '#postgres-save-environment' + - depth: 2 + title: Postgres reload + url: '#postgres-reload' + - depth: 2 + title: Postgres update + url: '#postgres-update' + structuredData: + headings: + - content: Postgres create + id: postgres-create + - content: Postgres one + id: postgres-one + - content: Postgres start + id: postgres-start + - content: Postgres stop + id: postgres-stop + - content: Postgres save External Port + id: postgres-save-external-port + - content: Postgres deploy + id: postgres-deploy + - content: Postgres change Status + id: postgres-change-status + - content: Postgres remove + id: postgres-remove + - content: Postgres save Environment + id: postgres-save-environment + - content: Postgres reload + id: postgres-reload + - content: Postgres update + id: postgres-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-project.mdx b/apps/docs-v2/content/docs/api/reference-project.mdx new file mode 100644 index 0000000..afde77f --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-project.mdx @@ -0,0 +1,36 @@ +--- +title: Project +full: true +_openapi: + toc: + - depth: 2 + title: Project create + url: '#project-create' + - depth: 2 + title: Project one + url: '#project-one' + - depth: 2 + title: Project all + url: '#project-all' + - depth: 2 + title: Project remove + url: '#project-remove' + - depth: 2 + title: Project update + url: '#project-update' + structuredData: + headings: + - content: Project create + id: project-create + - content: Project one + id: project-one + - content: Project all + id: project-all + - content: Project remove + id: project-remove + - content: Project update + id: project-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-redirects.mdx b/apps/docs-v2/content/docs/api/reference-redirects.mdx new file mode 100644 index 0000000..fac4dad --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-redirects.mdx @@ -0,0 +1,31 @@ +--- +title: Redirects +full: true +_openapi: + toc: + - depth: 2 + title: Redirects create + url: '#redirects-create' + - depth: 2 + title: Redirects one + url: '#redirects-one' + - depth: 2 + title: Redirects delete + url: '#redirects-delete' + - depth: 2 + title: Redirects update + url: '#redirects-update' + structuredData: + headings: + - content: Redirects create + id: redirects-create + - content: Redirects one + id: redirects-one + - content: Redirects delete + id: redirects-delete + - content: Redirects update + id: redirects-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-redis.mdx b/apps/docs-v2/content/docs/api/reference-redis.mdx new file mode 100644 index 0000000..1ad55a5 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-redis.mdx @@ -0,0 +1,66 @@ +--- +title: Redis +full: true +_openapi: + toc: + - depth: 2 + title: Redis create + url: '#redis-create' + - depth: 2 + title: Redis one + url: '#redis-one' + - depth: 2 + title: Redis start + url: '#redis-start' + - depth: 2 + title: Redis reload + url: '#redis-reload' + - depth: 2 + title: Redis stop + url: '#redis-stop' + - depth: 2 + title: Redis save External Port + url: '#redis-save-external-port' + - depth: 2 + title: Redis deploy + url: '#redis-deploy' + - depth: 2 + title: Redis change Status + url: '#redis-change-status' + - depth: 2 + title: Redis remove + url: '#redis-remove' + - depth: 2 + title: Redis save Environment + url: '#redis-save-environment' + - depth: 2 + title: Redis update + url: '#redis-update' + structuredData: + headings: + - content: Redis create + id: redis-create + - content: Redis one + id: redis-one + - content: Redis start + id: redis-start + - content: Redis reload + id: redis-reload + - content: Redis stop + id: redis-stop + - content: Redis save External Port + id: redis-save-external-port + - content: Redis deploy + id: redis-deploy + - content: Redis change Status + id: redis-change-status + - content: Redis remove + id: redis-remove + - content: Redis save Environment + id: redis-save-environment + - content: Redis update + id: redis-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-registry.mdx b/apps/docs-v2/content/docs/api/reference-registry.mdx new file mode 100644 index 0000000..1b15d67 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-registry.mdx @@ -0,0 +1,41 @@ +--- +title: Registry +full: true +_openapi: + toc: + - depth: 2 + title: Registry create + url: '#registry-create' + - depth: 2 + title: Registry remove + url: '#registry-remove' + - depth: 2 + title: Registry update + url: '#registry-update' + - depth: 2 + title: Registry all + url: '#registry-all' + - depth: 2 + title: Registry one + url: '#registry-one' + - depth: 2 + title: Registry test Registry + url: '#registry-test-registry' + structuredData: + headings: + - content: Registry create + id: registry-create + - content: Registry remove + id: registry-remove + - content: Registry update + id: registry-update + - content: Registry all + id: registry-all + - content: Registry one + id: registry-one + - content: Registry test Registry + id: registry-test-registry + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-security.mdx b/apps/docs-v2/content/docs/api/reference-security.mdx new file mode 100644 index 0000000..9ddf724 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-security.mdx @@ -0,0 +1,31 @@ +--- +title: Security +full: true +_openapi: + toc: + - depth: 2 + title: Security create + url: '#security-create' + - depth: 2 + title: Security one + url: '#security-one' + - depth: 2 + title: Security delete + url: '#security-delete' + - depth: 2 + title: Security update + url: '#security-update' + structuredData: + headings: + - content: Security create + id: security-create + - content: Security one + id: security-one + - content: Security delete + id: security-delete + - content: Security update + id: security-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-server.mdx b/apps/docs-v2/content/docs/api/reference-server.mdx new file mode 100644 index 0000000..7914637 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-server.mdx @@ -0,0 +1,46 @@ +--- +title: Server +full: true +_openapi: + toc: + - depth: 2 + title: Server create + url: '#server-create' + - depth: 2 + title: Server one + url: '#server-one' + - depth: 2 + title: Server all + url: '#server-all' + - depth: 2 + title: Server with S S H Key + url: '#server-with-s-s-h-key' + - depth: 2 + title: Server setup + url: '#server-setup' + - depth: 2 + title: Server remove + url: '#server-remove' + - depth: 2 + title: Server update + url: '#server-update' + structuredData: + headings: + - content: Server create + id: server-create + - content: Server one + id: server-one + - content: Server all + id: server-all + - content: Server with S S H Key + id: server-with-s-s-h-key + - content: Server setup + id: server-setup + - content: Server remove + id: server-remove + - content: Server update + id: server-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-settings.mdx b/apps/docs-v2/content/docs/api/reference-settings.mdx new file mode 100644 index 0000000..b66f4b4 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-settings.mdx @@ -0,0 +1,201 @@ +--- +title: Settings +full: true +_openapi: + toc: + - depth: 2 + title: Settings reload Server + url: '#settings-reload-server' + - depth: 2 + title: Settings reload Traefik + url: '#settings-reload-traefik' + - depth: 2 + title: Settings toggle Dashboard + url: '#settings-toggle-dashboard' + - depth: 2 + title: Settings clean Unused Images + url: '#settings-clean-unused-images' + - depth: 2 + title: Settings clean Unused Volumes + url: '#settings-clean-unused-volumes' + - depth: 2 + title: Settings clean Stopped Containers + url: '#settings-clean-stopped-containers' + - depth: 2 + title: Settings clean Docker Builder + url: '#settings-clean-docker-builder' + - depth: 2 + title: Settings clean Docker Prune + url: '#settings-clean-docker-prune' + - depth: 2 + title: Settings clean All + url: '#settings-clean-all' + - depth: 2 + title: Settings clean Monitoring + url: '#settings-clean-monitoring' + - depth: 2 + title: Settings save S S H Private Key + url: '#settings-save-s-s-h-private-key' + - depth: 2 + title: Settings assign Domain Server + url: '#settings-assign-domain-server' + - depth: 2 + title: Settings clean S S H Private Key + url: '#settings-clean-s-s-h-private-key' + - depth: 2 + title: Settings update Docker Cleanup + url: '#settings-update-docker-cleanup' + - depth: 2 + title: Settings read Traefik Config + url: '#settings-read-traefik-config' + - depth: 2 + title: Settings update Traefik Config + url: '#settings-update-traefik-config' + - depth: 2 + title: Settings read Web Server Traefik Config + url: '#settings-read-web-server-traefik-config' + - depth: 2 + title: Settings update Web Server Traefik Config + url: '#settings-update-web-server-traefik-config' + - depth: 2 + title: Settings read Middleware Traefik Config + url: '#settings-read-middleware-traefik-config' + - depth: 2 + title: Settings update Middleware Traefik Config + url: '#settings-update-middleware-traefik-config' + - depth: 2 + title: Settings check And Update Image + url: '#settings-check-and-update-image' + - depth: 2 + title: Settings update Server + url: '#settings-update-server' + - depth: 2 + title: Settings get Dokploy Version + url: '#settings-get-dokploy-version' + - depth: 2 + title: Settings read Directories + url: '#settings-read-directories' + - depth: 2 + title: Settings update Traefik File + url: '#settings-update-traefik-file' + - depth: 2 + title: Settings read Traefik File + url: '#settings-read-traefik-file' + - depth: 2 + title: Settings get Ip + url: '#settings-get-ip' + - depth: 2 + title: Settings get Open Api Document + url: '#settings-get-open-api-document' + - depth: 2 + title: Settings read Traefik Env + url: '#settings-read-traefik-env' + - depth: 2 + title: Settings write Traefik Env + url: '#settings-write-traefik-env' + - depth: 2 + title: Settings have Traefik Dashboard Port Enabled + url: '#settings-have-traefik-dashboard-port-enabled' + - depth: 2 + title: Settings read Stats + url: '#settings-read-stats' + - depth: 2 + title: Settings get Log Rotate Status + url: '#settings-get-log-rotate-status' + - depth: 2 + title: Settings toggle Log Rotate + url: '#settings-toggle-log-rotate' + - depth: 2 + title: Settings have Activate Requests + url: '#settings-have-activate-requests' + - depth: 2 + title: Settings toggle Requests + url: '#settings-toggle-requests' + - depth: 2 + title: Settings is Cloud + url: '#settings-is-cloud' + - depth: 2 + title: Settings health + url: '#settings-health' + structuredData: + headings: + - content: Settings reload Server + id: settings-reload-server + - content: Settings reload Traefik + id: settings-reload-traefik + - content: Settings toggle Dashboard + id: settings-toggle-dashboard + - content: Settings clean Unused Images + id: settings-clean-unused-images + - content: Settings clean Unused Volumes + id: settings-clean-unused-volumes + - content: Settings clean Stopped Containers + id: settings-clean-stopped-containers + - content: Settings clean Docker Builder + id: settings-clean-docker-builder + - content: Settings clean Docker Prune + id: settings-clean-docker-prune + - content: Settings clean All + id: settings-clean-all + - content: Settings clean Monitoring + id: settings-clean-monitoring + - content: Settings save S S H Private Key + id: settings-save-s-s-h-private-key + - content: Settings assign Domain Server + id: settings-assign-domain-server + - content: Settings clean S S H Private Key + id: settings-clean-s-s-h-private-key + - content: Settings update Docker Cleanup + id: settings-update-docker-cleanup + - content: Settings read Traefik Config + id: settings-read-traefik-config + - content: Settings update Traefik Config + id: settings-update-traefik-config + - content: Settings read Web Server Traefik Config + id: settings-read-web-server-traefik-config + - content: Settings update Web Server Traefik Config + id: settings-update-web-server-traefik-config + - content: Settings read Middleware Traefik Config + id: settings-read-middleware-traefik-config + - content: Settings update Middleware Traefik Config + id: settings-update-middleware-traefik-config + - content: Settings check And Update Image + id: settings-check-and-update-image + - content: Settings update Server + id: settings-update-server + - content: Settings get Dokploy Version + id: settings-get-dokploy-version + - content: Settings read Directories + id: settings-read-directories + - content: Settings update Traefik File + id: settings-update-traefik-file + - content: Settings read Traefik File + id: settings-read-traefik-file + - content: Settings get Ip + id: settings-get-ip + - content: Settings get Open Api Document + id: settings-get-open-api-document + - content: Settings read Traefik Env + id: settings-read-traefik-env + - content: Settings write Traefik Env + id: settings-write-traefik-env + - content: Settings have Traefik Dashboard Port Enabled + id: settings-have-traefik-dashboard-port-enabled + - content: Settings read Stats + id: settings-read-stats + - content: Settings get Log Rotate Status + id: settings-get-log-rotate-status + - content: Settings toggle Log Rotate + id: settings-toggle-log-rotate + - content: Settings have Activate Requests + id: settings-have-activate-requests + - content: Settings toggle Requests + id: settings-toggle-requests + - content: Settings is Cloud + id: settings-is-cloud + - content: Settings health + id: settings-health + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-sshKey.mdx b/apps/docs-v2/content/docs/api/reference-sshKey.mdx new file mode 100644 index 0000000..c8a8bde --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-sshKey.mdx @@ -0,0 +1,41 @@ +--- +title: Ssh Key +full: true +_openapi: + toc: + - depth: 2 + title: Ssh Key create + url: '#ssh-key-create' + - depth: 2 + title: Ssh Key remove + url: '#ssh-key-remove' + - depth: 2 + title: Ssh Key one + url: '#ssh-key-one' + - depth: 2 + title: Ssh Key all + url: '#ssh-key-all' + - depth: 2 + title: Ssh Key generate + url: '#ssh-key-generate' + - depth: 2 + title: Ssh Key update + url: '#ssh-key-update' + structuredData: + headings: + - content: Ssh Key create + id: ssh-key-create + - content: Ssh Key remove + id: ssh-key-remove + - content: Ssh Key one + id: ssh-key-one + - content: Ssh Key all + id: ssh-key-all + - content: Ssh Key generate + id: ssh-key-generate + - content: Ssh Key update + id: ssh-key-update + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-stripe.mdx b/apps/docs-v2/content/docs/api/reference-stripe.mdx new file mode 100644 index 0000000..e530c0a --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-stripe.mdx @@ -0,0 +1,31 @@ +--- +title: Stripe +full: true +_openapi: + toc: + - depth: 2 + title: Stripe get Products + url: '#stripe-get-products' + - depth: 2 + title: Stripe create Checkout Session + url: '#stripe-create-checkout-session' + - depth: 2 + title: Stripe create Customer Portal Session + url: '#stripe-create-customer-portal-session' + - depth: 2 + title: Stripe can Create More Servers + url: '#stripe-can-create-more-servers' + structuredData: + headings: + - content: Stripe get Products + id: stripe-get-products + - content: Stripe create Checkout Session + id: stripe-create-checkout-session + - content: Stripe create Customer Portal Session + id: stripe-create-customer-portal-session + - content: Stripe can Create More Servers + id: stripe-can-create-more-servers + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/api/reference-user.mdx b/apps/docs-v2/content/docs/api/reference-user.mdx new file mode 100644 index 0000000..2984521 --- /dev/null +++ b/apps/docs-v2/content/docs/api/reference-user.mdx @@ -0,0 +1,26 @@ +--- +title: User +full: true +_openapi: + toc: + - depth: 2 + title: User all + url: '#user-all' + - depth: 2 + title: User by Auth Id + url: '#user-by-auth-id' + - depth: 2 + title: User by User Id + url: '#user-by-user-id' + structuredData: + headings: + - content: User all + id: user-all + - content: User by Auth Id + id: user-by-auth-id + - content: User by User Id + id: user-by-user-id + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/cli/application.mdx b/apps/docs-v2/content/docs/cli/application.mdx new file mode 100644 index 0000000..0774fe6 --- /dev/null +++ b/apps/docs-v2/content/docs/cli/application.mdx @@ -0,0 +1,20 @@ +--- +title: Application +description: A guide to using the Dokploy CLI to manage applications +--- + + +The Dokploy CLI can be used to create, deploy, and manage applications. + +## Requirements + +Is required to be already authenticated with the Dokploy CLI. + + +## Commands + +1. `dokploy app create` - Create a new application. +2. `dokploy app delete` - Delete an application. +3. `dokploy app deploy` - Deploy an application. +4. `dokploy app stop` - Stop a running application. + diff --git a/apps/docs-v2/content/docs/cli/authentication.mdx b/apps/docs-v2/content/docs/cli/authentication.mdx new file mode 100644 index 0000000..0783a21 --- /dev/null +++ b/apps/docs-v2/content/docs/cli/authentication.mdx @@ -0,0 +1,29 @@ +--- +title: Authentication +description: A guide to authenticating with the Dokploy CLI +--- + +The Dokploy CLI uses a token-based authentication system. To authenticate, you'll need to create an access token and store it securely. + +## Creating an Access Token + +To create an access token, first you need to have permissions if you are admin you don't need permissions. + +by default access token never expires. + +You can go to `dashboard/settings/profile` and click on the `Generate` button. + + + + +## Storing the Access Token + +Dokploy when you create an access token automatically will generate a config.json with the access token and the server url. + + + +## Commands + +1. `dokploy authenticate` - Authenticate with the Dokploy CLI. +2. `dokploy verify` - Verify if the access token is valid. + diff --git a/apps/docs-v2/content/docs/cli/databases.mdx b/apps/docs-v2/content/docs/cli/databases.mdx new file mode 100644 index 0000000..ee2516a --- /dev/null +++ b/apps/docs-v2/content/docs/cli/databases.mdx @@ -0,0 +1,45 @@ +--- +title: Databases +description: A guide to using the Dokploy CLI to manage databases +--- + +The Dokploy CLI can be used to create, deploy, and manage databases. + +## Requirements + +Is required to be already authenticated with the Dokploy CLI. + + +## Commands + +### MariaDB + +1. `dokploy database mariadb create` - Create a new mariadb database. +2. `dokploy database mariadb delete` - Delete an mariadb database. +3. `dokploy database mariadb deploy` - Deploy a mariadb database. +4. `dokploy database mariadb stop` - Stop a running mariadb database. + +### PostgreSQL +1. `dokploy database postgresql create` - Create a new postgresql database. +2. `dokploy database postgresql delete` - Delete an postgresql database. +3. `dokploy database postgresql deploy` - Deploy a postgresql database. +4. `dokploy database postgresql stop` - Stop a running postgresql database. + +### MySQL +1. `dokploy database mysql create` - Create a new mysql database. +2. `dokploy database mysql delete` - Delete an mysql database. +3. `dokploy database mysql deploy` - Deploy a mysql database. +4. `dokploy database mysql stop` - Stop a running mysql database. + +### MongoDB +1. `dokploy database mongodb create` - Create a new mongodb database. +2. `dokploy database mongodb delete` - Delete an mongodb database. +3. `dokploy database mongodb deploy` - Deploy a mongodb database. +4. `dokploy database mongodb stop` - Stop a running mongodb database. + +### Redis +1. `dokploy database redis create` - Create a new redis database. +2. `dokploy database redis delete` - Delete an redis database. +3. `dokploy database redis deploy` - Deploy a redis database. +4. `dokploy database redis stop` - Stop a running redis database. + diff --git a/apps/docs-v2/content/docs/cli/index.mdx b/apps/docs-v2/content/docs/cli/index.mdx new file mode 100644 index 0000000..ee1c0d7 --- /dev/null +++ b/apps/docs-v2/content/docs/cli/index.mdx @@ -0,0 +1,23 @@ +--- +title: Introduction +description: A guide to using the Dokploy command-line interface +--- + +Dokploy CLI is a command-line tool for remotely managing your Dokploy server. It simplifies creating, deploying, and managing applications and databases. + +## Installation + +```bash +npm install -g @dokploy/cli +``` + +## Usage + +```bash +dokploy COMMAND +``` +To get help on a specific command: + +```bash +dokploy COMMAND --help +``` diff --git a/apps/docs-v2/content/docs/cli/meta.json b/apps/docs-v2/content/docs/cli/meta.json new file mode 100644 index 0000000..2429f37 --- /dev/null +++ b/apps/docs-v2/content/docs/cli/meta.json @@ -0,0 +1,13 @@ +{ + "title": "CLI", + "description": "CLI Documentation", + "icon": "Building2", + "root": true, + "pages": [ + "---Get Started---", + "index", + "comparisons", + "---Commands---", + "..." + ] +} diff --git a/apps/docs-v2/content/docs/cli/project.mdx b/apps/docs-v2/content/docs/cli/project.mdx new file mode 100644 index 0000000..efe09eb --- /dev/null +++ b/apps/docs-v2/content/docs/cli/project.mdx @@ -0,0 +1,18 @@ +--- +title: Project +description: A guide to using the Dokploy CLI to manage projects +--- + + +The Dokploy CLI can be used to create, deploy, and manage projects. + +## Requirements + +Is required to be already authenticated with the Dokploy CLI. + +## Commands + +1. `dokploy project create` - Create a new project. +2. `dokploy project info` - Get information about a project. +3. `dokploy project list` - List all projects. + diff --git a/apps/docs-v2/content/docs/core/(Git-Sources)/bitbucket.mdx b/apps/docs-v2/content/docs/core/(Git-Sources)/bitbucket.mdx new file mode 100644 index 0000000..ce24ce3 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Git-Sources)/bitbucket.mdx @@ -0,0 +1,73 @@ +--- +title: Bitbucket +description: 'Configure your Bitbucket repositories for deployments. This includes setting up access tokens, repository names, and branches.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy offer a way to connect your Bitbucket Repository to your Dokploy panel, you can use Groups Names or personal accounts. + +Go to `Git` and select `Bitbucket` as the source, then you can use the following options: + +- **Bitbucket Username**: Set the username that you want to connect to Dokploy. +- **App Password**: Set the app password you've created. +- **Workspace(Optional)**: Assign a workspace name, this is useful if you want to connect to another workspace. + +Follow the steps to connect your Bitbucket account to Dokploy. + +1. Go to `https://bitbucket.org/account/settings/app-passwords/new` . +2. Set Label: eg. `Dokploy-Bitbucket-App`. you can choose any name that you want. +3. In permissions make sure to select `Account: Read`, `Workspace membership: Read`, `Projects: Read` +, `Repositories: Read` `Pull requests: Read` and `Webhooks: Read and write`. +4. Click on `Create`. +5. Copy the `App Password` and paste it in Dokploy `Bitbucket` Modal section. +6. Set your `Bitbucket Username`. +7. (Optional) If you want to use Workspaces, go to `https://bitbucket.org/account/workspaces/`, eg. If you have +`dokploy-workspace` copy and paste it in Workspace Name. +7. Click on `Configure Bitbucket`. +8. If everything is correct, you can update enter to the Update Icon, and click on `Test Connection` to make sure everything is working. +9. Now you can use the repositories from your Gitlab Account in `Applications` or `Docker Compose` services. + + +Dokploy doesn't support Bitbucket Automatic deployments on each push you make to your repository. + + + +## Setup Automatic Deployments + +You can configure automatic deployments in Dokploy for the Following Services: + +1. **Applications** +2. **Docker Compose** + +The steps are the same for both services. + +1. Go to either `Applications` or `Docker Compose` and go to `Deployments` Tab. +2. Copy the `Webhook URL`. +3. Go to your Bitbucket Account and select the repository. +4. In the left menu, select `Repository Settings` and then `Webhooks`. +5. Click on `Add Webhook`. +6. Set any `Title` and the `URL` to the one you copied in the previous step. +7. In the Trigger section, select `Push Events`. +8. Click on `Add Webhook`. +10. Now you have automatic deployments enabled for the selected repository. + + +## Clarification on Automatic Deployments + +By default, Dokploy will automatically deploy your application on the Branch you have selected. + +eg. Let's suppose you have a `application` in this way: + +Repository: `my-app` +Branch: `feature` + +If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because +your application have selected `feature` as the Branch. + + +In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy +and select the branch in each of them. + +This is very usefull if you want to have multiple environments for the same application. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(Git-Sources)/github.mdx b/apps/docs-v2/content/docs/core/(Git-Sources)/github.mdx new file mode 100644 index 0000000..1e5cf45 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Git-Sources)/github.mdx @@ -0,0 +1,48 @@ +--- +title: GitHub +description: 'Configure GitHub repositories for deployments. This includes setting up access tokens, repository names, and branches.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy offer a way to connect your Github Repository to your Dokploy panel, you can use organizations or personal accounts. + +Go to `Git` and select `Github` as the source, then you can use the following options: + +- **Organization**: Select the organization that you want to connect to Dokploy. +- **Personal Account(Default)**: Select the account that you want to connect to Dokploy. + +Follow the steps to connect your Github account to Dokploy. + +1. Click on `Create Github App` to create a new Github App. +2. Set Github App Name: eg. `Dokploy-Github-App`. make sure this name is unique. +3. Click on `Create Github App`, then you will redirect to the `Git` section of Dokploy. +4. Now it will show a `Install` Button, click on it. +5. You can select the repositories that you want to dokploy be able to access, you can choose +select all repositories or select specific repositories. +6. Click on `Install & Authorize` to install the Dokploy App. +7. You will be redirected to the `Git` section of Dokploy. +8. Now you can use the repositories from your Github Account in `Applications` or `Docker Compose` services. + + +When you use this method, By default you will have Automatic deployments on each push you make to your repository. + + +## Clarification on Automatic Deployments + +By default, Dokploy will automatically deploy your application on the Branch you have selected. + +eg. Let's suppose you have a `application` in this way: + +Repository: `my-app` +Branch: `feature` + +If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because +your application have selected `feature` as the Branch. + + +In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy +and select the branch in each of them. + +This is very usefull if you want to have multiple environments for the same application. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(Git-Sources)/gitlab.mdx b/apps/docs-v2/content/docs/core/(Git-Sources)/gitlab.mdx new file mode 100644 index 0000000..8a0023d --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Git-Sources)/gitlab.mdx @@ -0,0 +1,79 @@ +--- +title: Gitlab +description: 'Configure Gitlab repositories for deployments. This includes setting up access tokens, repository names, and branches.' +--- + + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy offer a way to connect your Gitlab Repository to your Dokploy panel, you can use Groups Names or personal accounts. + + +Go to `Git` and select `Gitlab` as the source, then you can use the following options: + +- **Application ID**: Select the application ID that you want to connect to Dokploy. +- **Personal Secret**: Select the secret that you want to connect to Dokploy. +- **Group Name(Optional)**: Select the group name that you want to connect to Dokploy(Ideal for Gitlab Groups). + +Follow the steps to connect your Gitlab account to Dokploy. + +1. Go to `https://gitlab.com/-/profile/applications` and click on ` Add New Application`. +2. Set Application Name: eg. `Dokploy-Gitlab-App`. choose any name that you want. +3. Redirect URI: Copy the `Redirect URI` from Dokploy. eg. `https://dokploy.com/api/providers/gitlab/callback`. +4. Select Permissions: `api`, `read_user`, `read_repository`. +5. Click on `Save Application`. +6. Copy the `Application ID` and `Secret` from Gitlab and paste it in Dokploy `Gitlab` Modal section. +7. (Optional) If you want to use Groups, go to `https://gitlab.com/dashboard/groups` enter the group name you +want to connect, and look at the URL in the address bar, it will be something like this +`https://gitlab.com/dokploy-panel/frontend` you can use Nested Groups and SubGroups and copy the `dokploy-panel/frontend` from Gitlab and paste +it in Dokploy `Gitlab` Modal section. +8. Click on `Continue`. +9. Go Back to Dokploy and click on `Install` button. +10. Click on `Authorize`. +11. You will be redirected to the `Git` section of Dokploy. +12. Now you can use the repositories from your Gitlab Account in `Applications` or `Docker Compose` services. + + +Dokploy doesn't support Gitlab Automatic deployments on each push you make to your repository. + + + +## Setup Automatic Deployments + +You can configure automatic deployments in Dokploy for the Following Services: + +1. **Applications** +2. **Docker Compose** + +The steps are the same for both services. + +1. Go to either `Applications` or `Docker Compose` and go to `Deployments` Tab. +2. Copy the `Webhook URL`. +3. Go to your Gitlab Account and select the repository. +4. In the left menu, select `Settings` and then `Webhooks`. +5. Click on `Add Webhook`. +6. Set the `URL` to the one you copied in the previous step. +7. In the Trigger section, select `Push Events`. +8. Click on `Add Webhook`. +9. Click on `Save`. +10. Now you have automatic deployments enabled for the selected repository. + + +## Clarification on Automatic Deployments + +By default, Dokploy will automatically deploy your application on the Branch you have selected. + +eg. Let's suppose you have a `application` in this way: + +Repository: `my-app` +Branch: `feature` + +If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because +your application have selected `feature` as the Branch. + + +In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy +and select the branch in each of them. + +This is very usefull if you want to have multiple environments for the same application. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(Notifications)/discord.mdx b/apps/docs-v2/content/docs/core/(Notifications)/discord.mdx new file mode 100644 index 0000000..a29e674 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Notifications)/discord.mdx @@ -0,0 +1,25 @@ +--- +title: Discord +description: 'Configure discord notifications for your applications.' +--- + +Discord notifications are a great way to stay up to date with important events in your Dokploy panel. You can choose to receive notifications for specific events or all events. + +## Discord Notifications + +For start receiving discord notifications, you need to fill the form with the following details: + +- **Name**: Enter any name you want. +- **Webhook URL**: Enter the webhook URL. eg. `https://discord.com/api/webhooks/000000000000000/00000000-0000-0000-0000-000000000000` + +To Setup the Discord notifications, follow these steps: + +1. Go to Discord, and search your Discord server. +2. Go to `Server Settings` and click on `Integrations`. +3. Click on `Create a Webhook`. +4. Set a name for your webhook, eg. `dokploy_webhook`. +5. Click on the `Webhook` you've created and click on copy the `Webhook URL`. +6. Go to Dokploy `Notifications` and select `Discord` as the notification provider. +7. Use the `Webhook URL` you copied in the previous step. +8. Click on `Test` to make sure everything is working. +9. Click on `Create` to save the notification. diff --git a/apps/docs-v2/content/docs/core/(Notifications)/email.mdx b/apps/docs-v2/content/docs/core/(Notifications)/email.mdx new file mode 100644 index 0000000..89e7c89 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Notifications)/email.mdx @@ -0,0 +1,22 @@ +--- +title: Email +description: 'Configure email notifications for your applications.' +--- + + +Email notifications are a great way to stay up to date with important events in your Dokploy panel. You can choose to receive notifications for specific events or all events. + +## Email Notifications + +For start receiving email notifications, you need to fill the form with the following details: + + +1. **Name**: Enter any name you want. +2. **SMPT Server**: Enter the SMTP server address. eg. `smtp.gmail.com` +3. **SMTP Port**: Enter the SMTP server port. eg. `587` +4. **SMTP Username**: Enter the SMTP server username. eg. `your-email@gmail.com` +5. **SMTP Password**: Enter the SMTP server password. +6. **From Address** Enter the email address that will be used as the sender. +7. **To Address** Enter the email address that will be used as the recipient, you can add multiple addresses. + + diff --git a/apps/docs-v2/content/docs/core/(Notifications)/overview.mdx b/apps/docs-v2/content/docs/core/(Notifications)/overview.mdx new file mode 100644 index 0000000..b5ea691 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Notifications)/overview.mdx @@ -0,0 +1,22 @@ +--- +title: Overview +description: 'Configure general notifications for your applications and services.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy offer multiples notifications options to notify about some events. + +1. **App Deploy**: Notify when a new version of your application is deployed. +2. **App Deploy Error**: Notify when a new version of your application fails to deploy. +3. **Docker Cleanup**: Notify when a Docker cleanup is triggered. +4. **Dokploy Restart**: Notify when Dokploy Server restarts. +5. **Database Backup**: Notify when a new database backup is created(Success or Error). + +## Providers: + +1. **Slack**: Slack is a platform for team communication and collaboration. +2. **Telegram**: Telegram is a messaging platform that allows users to send and receive messages. +3. **Discord**: Discord is generally used for communication between users in a chat or voice channel. +4. **Email**: Email is a popular method for sending messages to a group of recipients. + diff --git a/apps/docs-v2/content/docs/core/(Notifications)/slack.mdx b/apps/docs-v2/content/docs/core/(Notifications)/slack.mdx new file mode 100644 index 0000000..e3936a6 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Notifications)/slack.mdx @@ -0,0 +1,27 @@ +--- +title: Slack +description: 'Configure slack notifications for your applications.' +--- + + +Slack notifications are a great way to stay up to date with important events in your Dokploy panel. You can choose to receive notifications for specific events or all events. + +## Slack Notifications + +For start receiving slack notifications, you need to fill the form with the following details: + +- **Name**: Enter any name you want. +- **Webhook URL**: Enter the webhook URL. eg. `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX` +- **Channel**: Enter the channel name that you want to send the notifications to. + +To Setup the slack notifications, follow these steps: + + +1. Go to `https://dokploy.slack.com/marketplace/A0F7XDUAZ-webhooks-entrantes` and click on `Add To Slack`. +2. Select the channel that you want to send the notifications to. +3. Click on `Add webhook to channel`. +4. Copy the `Webhook URL`. +5. Go to Dokploy `Notifications` and select `Slack` as the notification provider. +6. Use the `Webhook URL` you copied in the previous step. +7. In Channel section, select the channel that you want to send the notifications to. +7. Click on `Create` to save the notification. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(Notifications)/telegram.mdx b/apps/docs-v2/content/docs/core/(Notifications)/telegram.mdx new file mode 100644 index 0000000..64b81cf --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Notifications)/telegram.mdx @@ -0,0 +1,28 @@ +--- +title: Telegram +description: 'Configure telegram notifications for your applications.' +--- + + +Telegram notifications are a great way to stay up to date with important events in your Dokploy panel. You can choose to receive notifications for specific events or all events. + +## Telegram Notifications + +For start receiving telegram notifications, you need to fill the form with the following details: + +- **Name**: Enter any name you want. +- **Bot Token**: Enter the bot token. eg. `123456789:ABCdefGHIjklMNOPqrstUVWXYZ` +- **Chat ID**: Enter the chat ID. eg. `123456789` + +To Setup the telegram notifications, follow these steps: + +1. Go to `https://telegram.me/botfather` and click on `Start Bot`. +2. Type `/newbot` and click on `Start`. +3. Set a name for your bot, eg. `dokploy_bot` make sure the name ends with `_bot`. +4. Copy the `Bot Token` and paste it in Dokploy `Telegram` Modal section. +5. Now you need to get the Chat ID, or create a new Channel +6. Search this bot in the search bar `@userinfobot`. +7. Type `/start` and it will return the chat ID. +8. Copy the `Chat ID` and paste it in Dokploy `Telegram` Modal section. +9. Click on test to make sure everything is working. +10. Click on `Create` to save the notification. diff --git a/apps/docs-v2/content/docs/core/(S3-Destinations)/actions.mdx b/apps/docs-v2/content/docs/core/(S3-Destinations)/actions.mdx new file mode 100644 index 0000000..60bb767 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(S3-Destinations)/actions.mdx @@ -0,0 +1,30 @@ +--- +title: Actions +description: 'Manage S3 destinations.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +The S3 Destinations section are essential for backing up your databases. + +## Actions: + +1. **Create**: Create a new S3 destination. +2. **Delete**: Delete a S3 destination. +3. **Edit**: Edit a S3 destination. +4. **Test**: Test a S3 destination. + +### Create + +In order to create a new S3 Bucket, you need to fill the form. + +- **Name**: This could be anything you want, it will be the name. +- **Access Key**: This is the access key that you will use to access your bucket. +- **Secret Key**: This is the secret key that you will use to access your bucket. +- **Bucket**: This is the bucket that you will use to access your bucket. +- **Region**: This is the region that you will use to access your bucket. +- **Endpoint**: This is the endpoint that you will use to access your bucket. + + + There is a Button `Test` that will test the connection to your bucket, if it is correct it will show you a success message. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(S3-Destinations)/aws-s3.mdx b/apps/docs-v2/content/docs/core/(S3-Destinations)/aws-s3.mdx new file mode 100644 index 0000000..0565a90 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(S3-Destinations)/aws-s3.mdx @@ -0,0 +1,63 @@ +--- +title: AWS S3 +description: 'Configure S3 buckets for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.' +--- +import { Callout } from 'fumadocs-ui/components/callout'; + + +AWS provides a simple and cost-effective way to store and retrieve data. It is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage. + +1. Create a new bucket and set any name you want. +2. Search for `IAM` in the search bar. +3. Click on `Policies` in the left menu. +4. Click on `Create Policy`. +5. Select `JSON` and paste the following policy: +Make sure to replace the bucket name with your bucket name. +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowListBucket", + "Effect": "Allow", + "Action": "s3:ListBucket", + "Resource": "arn:aws:s3:::bucket-name" + }, + { + "Sid": "AllowBucketObjectActions", + "Effect": "Allow", + "Action": [ + "s3:GetObject", + "s3:PutObject", + "s3:DeleteObject" + ], + // Make sure to set the name of your bucket + "Resource": "arn:aws:s3:::bucket-name/*" + } + ] +} +``` +6. Click on `Review Policy`. +7. Assign a name to the policy. +8. Click on `Create Policy`. +9. Click on User Group and assign a Name. +10. Click on `Add User to Group`. +11. Add the user you want to assign to the group. +12. In the `Attached Policies` section, filter by type `Customer Managed` and select the policy you created. +13. Click on `Attach Policy`. +14. Go to `Users` and select the user you've assigned to the group. +15. Go to Security Credentials. +16. Click on `Create Access Key`. +17. Select `Programmatic Access`. +18. Click on `Create New Access Key`. + +Now copy the following variables: + +- `Access Key` -> `Access Key (Dokploy)` = eg. `AK2AV244NFLS5JTUZ554` +- `Secret Key` -> `Secret Key (Dokploy)` = eg. `I0GWCo9fSGOr7z6Lh+NvHmSsaE+62Vwk2ua2CEwR` +- `Bucket` -> `Bucket (Dokploy)` = eg. `dokploy-backups` use the name of the bucket you created. +- `Region` -> `Region (Dokploy)` = eg. `us-east-1, us-west-2, etc` it will depend on the region you are using. +- `Endpoint` -> `Endpoint (Dokploy) (Optional)` = eg. `https://.s3..amazonaws.com` you will find this endpoint in the Bucket Card at the Home Page. + + +Test the connection and you should see a success message. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(S3-Destinations)/backblaze-b2.mdx b/apps/docs-v2/content/docs/core/(S3-Destinations)/backblaze-b2.mdx new file mode 100644 index 0000000..eececc9 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(S3-Destinations)/backblaze-b2.mdx @@ -0,0 +1,26 @@ +--- +title: Backblaze B2 +description: 'Configure buckets from Backblaze B2 for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.' +--- + + +Backblaze B2 is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage. + + +## Backblaze B2 Example Bucket + +1. Create a new bucket and set any name you want. +2. Go to `Application Keys` and create a new key. +3. Set a Key Name. +4. Set the Allow Access to Bucket(s) to `All Buckets` or `Specific Buckets`. +4. Set type of access `Read & Write` Permission. + +Now copy the following variables: + +- `Access Key` -> `Access Key (Dokploy)` = eg. `002s6acf2639910000d000005` +- `Secret Key` -> `Secret Key (Dokploy)` = eg. `K00+rIsWqPMhmcgqcyOyb9bqby7pbpE` +- `Region` -> `Region (Dokploy)` = eg. `eu-central-003, us-east-005, us-west-002, us-west-001, us-west-004, etc` it will depend on the region you are using. +- `Endpoint` -> `Endpoint (Dokploy)` = eg. `https://s3.us-west-002.backblazeb2.com` you will find this endpoint in the Bucket Card at the Home Page. +- `Bucket` -> `Bucket (Dokploy)` = eg. `dokploy-backups` use the name of the bucket you created. + +Test the connection and you should see a success message. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(S3-Destinations)/cloudflare-r2.mdx b/apps/docs-v2/content/docs/core/(S3-Destinations)/cloudflare-r2.mdx new file mode 100644 index 0000000..b2f92b8 --- /dev/null +++ b/apps/docs-v2/content/docs/core/(S3-Destinations)/cloudflare-r2.mdx @@ -0,0 +1,24 @@ +--- +title: Cloudflare R2 +description: 'Configure R2 buckets for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.' +--- + + +Cloudflare is a popular choice for hosting static assets, such as images, videos, and documents. It is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage. + +1. Create a new bucket and any name you want. +2. Go to initial R2 Screen, and go to `Manager R2 API Tokens` and create a new token. +3. Set a Token Name +4. Set `Object Read & Write` Permission. +5. (Optional) Set Specify bucket, by default it will include all buckets. +6. Create the token. + +Now copy the following variables: + +- `Access Key` -> `Access Key (Dokploy)` = eg. `f3811c6d27415a9s6cv943b6743ad784` +- `Secret Key` -> `Secret Key (Dokploy)` = eg. `aa55ee40b4049e93b7252bf698408cc22a3c2856d2530s7c1cb7670e318f15e58` +- `Region` -> `Region (Dokploy)` = eg. `WNAM, ENAM, etc` it will depend on the region you are using. +- `Endpoint` -> `Endpoint (Dokploy)` = eg. `https://8ah554705io7842d54c499fbee1156c1c.r2.cloudflarestorage.com` +- `Bucket` -> `Bucket (Dokploy)` = eg. `dokploy-backups` use the name of the bucket you created. + +Test the connection and you should see a success message. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/(Users)/permissions.mdx b/apps/docs-v2/content/docs/core/(Users)/permissions.mdx new file mode 100644 index 0000000..022b16e --- /dev/null +++ b/apps/docs-v2/content/docs/core/(Users)/permissions.mdx @@ -0,0 +1,26 @@ +--- +title: Permissions +description: 'Add permissions to your users to manage your applications and services.' +--- + +Manage user roles and permissions within Dokploy. Note that only one admin role is allowed per instance. + +## Permissions + +Dokploy offers multiple permissions to manage your users effectively: + +- **Create Projects**: Allows the user to create new projects. +- **Create Services**: Allows the user to create new applications or databases. +- **Access Traefik Files Tab**: Allows the user to access the Traefik files tab. +- **Delete Projects**: Allows the user to delete projects. +- **Delete Services**: Allows the user to delete services. +- **Access Docker Tab**: Allows the user to access the Docker tab. +- **Access API/CLI**: Allows the user to access the API/CLI, including the Swagger route. +- **Access to Git Providers**: Allows the user to access the Git Providers. +- **Access to SSH Keys**: Allows the user to access the SSH Keys. + +You can also grant permissions to specific users for accessing particular projects or services. + +### Project Permissions + +Based on your projects and services, you can assign permissions to specific users to give them access to particular projects or services. diff --git a/apps/docs-v2/content/docs/core/applications/advanced.mdx b/apps/docs-v2/content/docs/core/applications/advanced.mdx new file mode 100644 index 0000000..9847eef --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/advanced.mdx @@ -0,0 +1,173 @@ +--- +title: Advanced +description: Learn how to use advanced features in your application. +--- + +This section is designed for experienced users who need to manage complex configurations and orchestration settings in Dokploy. Here, you can execute custom commands, manage cluster replicas, select Docker registries, and configure Docker Swarm settings. + +### Run Command + +- **Purpose**: Allows users to execute custom shell commands directly within the container. +- **Usage**: Enter the command you need to run in the provided field and click 'Save' to execute it within the container environment. This tool is particularly useful for debugging or specific administrative tasks. + +### Cluster Settings + +- **Purpose**: Manages the scaling and distribution of the application across multiple servers or nodes. +- **Replicas**: Set the number of instances of your application that should be running. +- **Registry Selection**: Choose the Docker registry from which your container images will be pulled. This is crucial for ensuring that the correct images are used during deployment. + +#### Important Note +Always click 'Redeploy' after modifying the cluster settings to apply the changes. + +### Swarm Settings + +Swarm settings allow for detailed configuration of how containers are orchestrated within the Docker Swarm. + +#### Health Check + +- **Purpose**: Ensures that containers are running smoothly and restarts them if they fail. +- **Configuration**: Specify parameters like test commands, intervals, timeouts, start periods, and retries. + +#### Restart Policy + +Defines how containers should be handled if they exit or fail, the configuration is as follows: + +- **Condition**: Specifies under what condition a restart should occur. +- **Delay**: Sets the time delay between restarts. +- **Max Attempts**: Limits the number of restart attempts. +- **Window**: Defines the time window used to evaluate the restart policy. + +#### Update Config + +Manages the deployment and update process of services in the swarm, the configuration is as follows: + + +- **Parallelism**: Number of containers to update simultaneously. +- **Delay**: Time between updates. +- **Failure Action**: Action to take if an update fails. +- **Monitor**: Duration to monitor a container after an update. +- **Max Failure Ratio**: The fraction of containers that are allowed to fail before the update is considered a failure. +- **Order**: The order in which containers are stopped and started during an update. + +#### Placement + +Controls where containers are placed within the swarm based on specific rules and preferences, the configuration is as follows: + +- **Constraints**: Conditions that must be met for a container to be placed on a node. +- **Preferences**: Preferences for placing containers across nodes to spread load evenly. + +### Rollback Config + +Manages the rollback process for services when updates fail, the configuration is as follows: + +- **Parallelism**: Number of containers to rollback simultaneously. +- **Delay**: Time between rollbacks. +- **FailureAction**: Action to take if a rollback fails. +- **Monitor**: Duration to monitor a container after a rollback. +- **MaxFailureRatio**: The fraction of containers that are allowed to fail before the rollback is considered a failure. +- **Order**: The order in which containers are stopped and restarted during a rollback. + +### Mode + +Defines how services are replicated within the swarm, the configuration is as follows: + +- **Replicated**: Services are replicated across nodes as specified. +- **Replicas**: Number of replicas per service. +- **Global**: A single instance of the service runs on every node. +- **ReplicatedJob**: Runs a job in a replicated manner. +- **MaxConcurrent**: Maximum number of jobs running concurrently. +- **TotalCompletions**: Total number of times the jobs need to complete. + +### Network + +Configures network settings for the services, the configuration is as follows: + +- **Target**: Specifies the network name. +- **Aliases**: Provides aliases for the network. +- **DriverOpts**: Network driver options like MTU size and host binding. + +### Labels + +Assigns metadata to containers to help identify and organize them, the configuration is as follows: + +- **Labels**: Key-value pairs assigned to the service. For example: +1. `com.example.app.name`: "my-app" +2. `com.example.app.version`: "1.0.0" + + +### Note +Modifying Swarm Settings requires careful consideration as incorrect configurations can disrupt the entire container orchestration. Always ensure you understand the implications of the changes you are making. + + +## Resources + +Manage the memory and CPU resources allocated to your applications or databases. + +- **Memory Reservation**: The minimum amount of memory guaranteed to the application. +- **Memory Limit**: The maximum amount of memory the application can use. +- **CPU Limit**: The maximum number of CPU units that the application can utilize. +- **CPU Reservation**: The minimum number of CPU units reserved for the application. + + +### Volumes/Mounts + +Configure persistent storage for your application to ensure data remains intact across container restarts and deployments. + + +**Bind Mount**: Maps a host file or directory to a container file or directory. Typically used for specific configurations or databases. +1. **Host Path**: Path on the host. +2. **Mount Path**: Path in the container. + +**Volume Mount**: Uses Docker-managed volumes that are easier to back up and migrate than bind mounts. +1. **Volume Name**: Name of the Docker-managed volume. +2. **Mount Path**: Path in the container where the volume is mounted. + +**File Mount**: Specifically for single files, useful for configuration files. +1. **Content**: The content to store in the file. +2. **Mount Path**: Path in the container where the file is placed. + +File mounts are a dokploy features, this create a file in a folder called `files` inside your project, so it recreates every single time you deploy your project. + + + + + +### Redirects + +Redirect requests to your application to another URL based on specified rules, enhancing navigational efficiency and SEO. + +- **Regex**: Enter a regular expression to match the URLs that need redirecting. +- **Replacement**: Specify the target URL where traffic should be redirected. +- **Permanent**: Toggle this option to apply a permanent (HTTP 301) redirection, indicating to browsers and search engines that the page has moved permanently. + +#### Example +To redirect all traffic from "http://localhost" to "http://mydomain", set the Regex as `http://localhost/(.*)` and the Replacement as `http://mydomain/$1`. + + +### Security + +Add basic authentication to your application to restrict access. + +- **Username**: Enter a username. +- **Password**: Enter a password. + +#### Important Note +Adding basic authentication will prompt users for a username and password before allowing access to the application. Use this for environments where an additional layer of security is required. + + +### Ports + +Expose your application to the internet by configuring network ports, allowing external access. + +- **Published Port**: The port number on the host that will route traffic to your application. +- **Target Port**: The port number inside the container that the application uses. +- **Protocol**: Choose between TCP and UDP based on your application's requirements. + +#### Important Note +Ensure that the published port does not conflict with other services on the host to avoid port binding errors, also this port is used mostly for accesing the application from the outside, eg your-ip:port, this is not for accessing the application trought a domain. + +### Traefik + +Provides a dynamic and robust method to manage HTTP traffic to your services, including load balancing and SSL termination. + +- **Rules**: Define complex routing, load balancing, and security configurations using Traefik's powerful rule-based configuration system. diff --git a/apps/docs-v2/content/docs/core/applications/auto-deploy.mdx b/apps/docs-v2/content/docs/core/applications/auto-deploy.mdx new file mode 100644 index 0000000..de39876 --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/auto-deploy.mdx @@ -0,0 +1,86 @@ +--- +title: Auto Deploy +description: "Learn how to automatically deploy your application to Dokploy." +--- + +Automatically deploying your application to Dokploy can be achieved through two primary methods: using Webhooks or the Dokploy API. Each method supports various platforms and provides a streamlined deployment process. + +## Github + +For Github, we provide autodeploy without any configuration. This will automatically deploy your application whenever you push to your repository. + +## Webhook URL + +Webhooks allow you to automatically deploy your application whenever changes are made in your source repository. + +- GitHub +- GitLab +- Bitbucket +- Gitea +- DockerHub + +### Configuration Steps + +1. **Enable Auto Deploy**: Toggle the 'Auto Deploy' button found in the general tab of your application settings in Dokploy. +2. **Obtain Webhook URL**: Locate the Webhook URL from the deployment logs. + + + +3. **Configure Your Repository**: + - Navigate to your repository settings on your chosen platform. + - Add the webhook URL provided by Dokploy. + - Ensure the settings match the configuration necessary for triggering the webhook. + + + +#### Important Notes + +- **Branch Matching**: When using Git-based providers (GitHub, GitLab, etc.), ensure that the branch configured in Dokploy matches the branch you intend to push to. Misalignment will result in a "Branch Not Match" error. +- **Docker Tags**: For deployments using DockerHub, ensure the tag pushed matches the one specified in Dokploy. +- The steps are the same for all the providers. + +### API Method + +Deploy your application programmatically using the Dokploy API from anywhere. + +### Steps to Deploy Using API + +Steps: + +1. **Generate a Token**: Create an API token in your profile settings on Dokploy. +2. **Retrieve Application ID**: + +```http +curl -X 'GET' \ + 'https://your-domain/api/project.all' \ + -H 'accept: application/json' + -H 'Authorization: Bearer ' +``` + +This command lists all projects and services. Identify the applicationId for the application you wish to deploy. + +3. **Trigger Deployment**: + +```http +curl -X 'POST' \ + 'https://your-domain/api/application.deploy' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -H 'Authorization: Bearer ' \ + -d '{ + "applicationId": "string" +}' +``` + +This API method allows for flexible, scriptable deployment options, suitable for automated systems or situations where direct repository integration is not feasible. +In this way you can deploy your application from anywhere, you can use the webhook URL or the API. diff --git a/apps/docs-v2/content/docs/core/applications/build-type.mdx b/apps/docs-v2/content/docs/core/applications/build-type.mdx new file mode 100644 index 0000000..f65092d --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/build-type.mdx @@ -0,0 +1,34 @@ +--- +title: Build Type +description: "Learn about the different build types available in Dokploy, including Nixpacks, Dockerfile, and Buildpack options." + +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + + +Dokploy offers three distinct build types for deploying applications, each suited to different development needs and preferences. + +### Nixpacks + +This is the default build type in Dokploy. When you select Nixpacks, Dokploy builds your application as a Nixpack, which is optimized for ease of use and efficiency. + +You can read more about Nixpacks [here](https://nixpacks.com/). + +### Dockerfile + +If your project includes a Dockerfile, you can specify its path. Dokploy will use this Dockerfile to build your application directly, giving you full control over the build environment and dependencies. + +### Buildpack + +Dokploy supports two types of buildpacks: + +- **Heroku**: Adapted from Heroku's popular cloud platform, these buildpacks are designed for compatibility and ease of migration. +- **Paketo**: Provides cloud-native buildpacks that leverage modern standards and practices for building applications. + + + **Tip:** We recommend using the `Nixpacks` build type as it is the most + straightforward and commonly used option for most applications. + + +By choosing the appropriate build type, you can tailor the deployment process to best fit your application's requirements and your operational preferences. diff --git a/apps/docs-v2/content/docs/core/applications/domains.mdx b/apps/docs-v2/content/docs/core/applications/domains.mdx new file mode 100644 index 0000000..3aa9eb5 --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/domains.mdx @@ -0,0 +1,48 @@ +--- +title: Domains +description: Domains +--- + +This section outlines how to configure domains for your applications in Dokploy, ensuring that your applications are accessible via custom URLs. + + +### Add Domain + +Associate custom domains with your application to make it accessible over the internet. + +- **Host**: The domain name that you want to link to your application (e.g., `api.dokploy.com`). +- **Path**: The specific path within the domain where the application should be accessible. +- **Container Port**: The port on the container that the domain should route to. +- **Certificate**: Select whether to secure the domain with SSL/TLS certificates. Dokploy supports automatic provisioning of SSL certificates via Let's Encrypt. +- **HTTPS**: Toggle this on to enable HTTPS for your domain, providing secure, encrypted connections. + +#### Steps to Add a Domain +1. Click 'Add Domain'. +2. Fill in the domain details, including host, path, and port. +3. Choose to enable HTTPS and select a certificate option. +4. Click 'Create' to apply the settings. + +### Generate Domain + +Quickly set up a domain for development or testing purposes without needing to register a domain. + +- **Generate TraefikMe Domain**: Creates a free domain provided by TraefikMe. This is ideal for testing or temporary access before a proper domain is purchased. + +#### Steps to Generate a Domain +1. Click 'Generate Domain'. +2. Choose 'Generate TraefikMe Domain' for a quick setup. +3. A domain will be automatically assigned to your application. + +### Managing Domains + +- **View and Modify**: Existing domains are listed with options to edit settings or remove them. +- **Details**: Each domain entry shows the configured host, path, port, and whether HTTPS is enabled. + +### Note + +Proper domain configuration is crucial for the accessibility and security of your application. Always verify domain settings and ensure that DNS configurations are properly set up to point to the correct IP addresses. Enable HTTPS to enhance security and trust, especially for production environments. + + +### Important Clarification on Container Ports + +The "Container Port" specified in the domain settings is exclusively for routing traffic to the correct application container through Traefik, and does not expose the port directly to the internet. This is fundamentally different from the port settings in the "Advanced -> Ports" section, which are used to directly expose application ports. The container port in the domain settings ensures that Traefik can internally direct traffic to the specified port within the container based on the domain configuration. diff --git a/apps/docs-v2/content/docs/core/applications/index.mdx b/apps/docs-v2/content/docs/core/applications/index.mdx new file mode 100644 index 0000000..7030150 --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/index.mdx @@ -0,0 +1,58 @@ +--- +title: Applications +description: "Explore the multiple deployment methods available in Dokploy, including GitHub, Git, Docker, and automated deployments via webhooks." +--- + +Applications in Dokploy are treated as a single service, entity or container, making it easy and intuitive for users to work with each application in its own workspace. + +We offer multiple functionalities that you can use to manage your applications, such as: + +## General + +Configure the source of your code, the way your application is built, and also manage actions like deploying, updating, and deleting your application, and stopping it. + +## Environment + +If you need to assign environment variables to your application, you can do so here. + +In case you need to use a multiline variable, you can wrap it in double quotes just like this `'"here_is_my_private_key"'`. + +## Monitoring + +Four graphs will be displayed for the use of memory, CPU, disk, and network. Note that the information is only updated if you are viewing the current page, otherwise it will not be updated. + +## Logs + +If you want to see any important logs from your application that is running, you can do so here and determine if your application is displaying any errors or not. + +## Deployments + +You can view the last 10 deployments of your application. When you deploy your application in real time, a new deployment record will be created and it will gradually show you how your application is being built. + +We also offer a button to cancel deployments that are in queue. Note that those in progress cannot be canceled. + +We provide a webhook so that you can trigger your own deployments by pushing to your GitHub, Gitea, GitLab, Bitbucket, DockerHub repository. + +## Domains + +This is where you will assign your domain so that your application can be accessed from the internet. + +There are two ways to assign a domain: + +1. Create a custom domain. +2. Use a generated domain, we use traefik.me to generate free domains. + +## Advanced Settings + +This section provides advanced configuration options for experienced users. It includes tools for custom commands within the container, managing Docker Swarm settings, and adjusting cluster settings such as replicas and registry selection. These tools are typically not required for standard application deployment and are intended for complex management and troubleshooting tasks. + +- **Run Command**: Execute custom commands directly in the container, after the application has been build & running. +- **Cluster Settings**: Configure the number of replicas and select the Docker registry for your deployment to manage how your application scales and where it pulls images from. +- **Swarm Settings**: Access additional Docker Swarm configurations for detailed orchestration and scaling across multiple nodes. +- **Resources**: Adjust the CPU and memory allocation for your application. +- **Volumes**: To ensure data persistence across deployments, configure storage volumes for your application, you can create Volumes, Binds, File Mounts. +- **Ports**: Expose your application to the internet by configuring network ports. +- **Traefik**: Modify Traefik settings to manage HTTP request handling for your application. + +### Note +Adjust these settings carefully as incorrect configurations can significantly impact your application’s functionality and availability. diff --git a/apps/docs-v2/content/docs/core/applications/providers.mdx b/apps/docs-v2/content/docs/core/applications/providers.mdx new file mode 100644 index 0000000..0884e10 --- /dev/null +++ b/apps/docs-v2/content/docs/core/applications/providers.mdx @@ -0,0 +1,58 @@ +--- +title: Providers +description: Learn how to use providers in your application. +--- + +Dokploy offers several deployment methods, streamlining the process whether you're utilizing GitHub, any Git provider, Docker, or automated deployments. + +- GitHub +- Gitlab +- Bitbucket +- Git (Any Git Provider) +- Docker +- Drop(Drag and Drop .zip) + +## GitHub, Gitlab, Bitbucket + +Go to [Git Sources](/docs/core/git-sources/github) and select the provider you want to use. + +## Git + +For deployments from any Git repository, whether public or private, you can use either SSH or HTTPS: + +### Public Repositories (HTTPS) + +1. Enter the repository URL in `HTTPS URL`. +2. Type the branch name. +3. Click on `Save`. + +### Private Repositories + +For private repositories, is required to first create an SSH Key. + +1. Go to [SSH Keys](/docs/core/ssh-keys/overview) and click on `Create SSH Key`. +2. Click on `Generate RSA SSH Key` and copy the `Public Key`. + + + +You can then copy the SSH key and paste it into the settings of your account. + + + +This enables you to pull repositories from your private repository, a method consistent across nearly all providers. + +## Docker + +For Docker deployments: + +- Provide a Docker image. For private repositories, enter the username and password. diff --git a/apps/docs-v2/content/docs/core/architecture.mdx b/apps/docs-v2/content/docs/core/architecture.mdx new file mode 100644 index 0000000..b2c88f7 --- /dev/null +++ b/apps/docs-v2/content/docs/core/architecture.mdx @@ -0,0 +1,29 @@ +--- +title: 'Architecture of Dokploy' +description: 'Overview of the core architecture components of Dokploy.' +--- + +Understanding the architecture of Dokploy is crucial for both deploying and scaling applications. Below is a diagram illustrating the core components: + + + + +## Installation Process + +When Dokploy is installed, it automatically sets up the following components: + +1. **Next.js Application**: Serves as the frontend interface. Utilizing Next.js allows for an integrated server-side rendering experience, streamlining the UI and backend into a single cohesive application. +2. **PostgreSQL Database**: Acts as the primary database for Dokploy, chosen for its robustness and widespread adoption. It stores all the configuration and operational data. +3. **Redis Database**: Employed for managing deployment queues. This ensures that multiple deployments do not trigger simultaneously, which could lead to high server load and potential freezing. +4. **Traefik**: Used as a reverse proxy and load balancer. Traefik facilitates dynamic routing and service discovery which simplifies the configuration process by allowing declarative setup through the UI. + +## Purpose and Functionality + +Each component in the Dokploy architecture plays a vital role: + +- **Next.js**: Provides a scalable and easy-to-manage frontend framework, encapsulating both server and client-side logic in one platform. This simplifies deployment and development workflows. +- **PostgreSQL**: Delivers reliable and secure data storage capabilities. Its use within Dokploy ensures consistency and high performance for all database operations. +- **Redis**: Handles concurrency and job scheduling. By using Redis, Dokploy can efficiently manage deployment tasks, avoiding collisions and server overload during simultaneous operations. +- **Traefik**: Enhances Docker integration. Its ability to read from and write to Docker configurations declaratively allows Dokploy to automate and streamline network traffic management and service discovery. + +This structure ensures that Dokploy is not only efficient in deploying applications but also robust in handling traffic and data at scale. diff --git a/apps/docs-v2/content/docs/core/certificates.mdx b/apps/docs-v2/content/docs/core/certificates.mdx new file mode 100644 index 0000000..40aaafd --- /dev/null +++ b/apps/docs-v2/content/docs/core/certificates.mdx @@ -0,0 +1,21 @@ +--- +title: Certificates +description: 'Configure your certificates to secure your applications.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy offers a UI to manage your certificates. + + +We expose a UI to create and delete the certificates, we ask two fields: + +1. **Name**: Enter a name for the certificate (this can be anything you choose). +2. **Certificate Data**: Provide the certificate details. +3. **Private Key**: Enter the private key. +4. **(Optional) Server**: If you want to create a certificate for a server, you can select it here. + + + This action will create the files, but that doesn't mean it will work automatically. You need to adjust the Traefik configuration to use it, this configuration will make + to traefik can recognize the certificate. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/databases/backups.mdx b/apps/docs-v2/content/docs/core/databases/backups.mdx new file mode 100644 index 0000000..e91d4d6 --- /dev/null +++ b/apps/docs-v2/content/docs/core/databases/backups.mdx @@ -0,0 +1,26 @@ +--- +title: Backups +description: "Learn how to schedule and manage backups for your databases in Dokploy, with options for storage in S3 buckets." +--- + +Dokploy provides an integrated solution for backing up your databases, ensuring data safety and recovery capabilities. + +## Backing Up Your Database + +To configure database backups, navigate to the `Backup` tab within your Dokploy dashboard. Here’s what you’ll need to set up: + +- **Select Destination S3 Bucket**: Specify where your backups will be stored. Buckets can be configured in the `/dashboard/settings/destinations` route. +- **Database Name**: Enter the name of the database you want to backup. +- **Schedule Cron**: Define the schedule for your backups using cron syntax. +- **Prefix**: Choose a prefix under which backups will be stored in your bucket. +- **Enabled**: Toggle whether backups are active. The default setting is enabled. + +### Testing Your Backup Configuration + +To ensure your backup settings are correctly configured: + +1. Click the `Test` button. +2. This will initiate a test backup to the S3 bucket you selected. +3. Check the bucket to see the result of the test backup. + +This feature provides peace of mind by verifying that your backup process is set up correctly before relying on it for operational backups. diff --git a/apps/docs-v2/content/docs/core/databases/connection.mdx b/apps/docs-v2/content/docs/core/databases/connection.mdx new file mode 100644 index 0000000..ec796d1 --- /dev/null +++ b/apps/docs-v2/content/docs/core/databases/connection.mdx @@ -0,0 +1,33 @@ +--- +title: Connection +description: "Learn how to connect to your database using Dokploy." +--- + +This section explains how to configure database access for applications in Dokploy, including both internal connections within your network and external connections accessible over the internet. + +### Internal Credentials + + Used for connecting to the database from within the same network, without exposing the database to the internet. + +- **User**: Username for the database access. +- **Password**: Secure password for database access. +- **Database Name**: The name of the database to connect to. +- **Internal Host**: The hostname or internal identifier for the database within the network. +- **Internal Port (Container)**: The port used within the container to connect to the database. +- **Internal Connection URL**: The full connection string used internally to connect to the database. + +### External Credentials + +Enables the database to be reachable from the internet, necessary for remote management or external applications. + +- **External Port (Internet)**: Assign a port that is not currently used by another service to expose the database externally. + +#### Steps to Configure External Access +1. Ensure the external port is available and not in conflict with other services. +2. Enter the external port you wish to use to expose your database. +3. The system will automatically generate an external connection URL, which can be used to access the database from any database management tool over the internet, like phpMyAdmin, MySQL Workbench, PgAdmin, etc. + +### Important Note + +For security reasons, internal credentials should be used for applications running within the same network or environment to prevent unauthorized access. External credentials should only be used when necessary and with proper security measures in place, such as VPNs or IP whitelisting. + diff --git a/apps/docs-v2/content/docs/core/databases/index.mdx b/apps/docs-v2/content/docs/core/databases/index.mdx new file mode 100644 index 0000000..addaff0 --- /dev/null +++ b/apps/docs-v2/content/docs/core/databases/index.mdx @@ -0,0 +1,51 @@ +--- +title: Databases +description: "Discover how to create and backup databases easily with Dokploy, supporting a variety of database systems." +--- + +Dokploy simplifies the process of creating and managing databases, offering robust options for both setup and backups. + +## Database Support + +Dokploy currently supports a range of popular database systems, ensuring compatibility and flexibility for your projects: + +- **Postgres**: Robust, SQL-compliant and highly reliable. +- **MySQL**: Widely used relational database known for its performance and flexibility. +- **MariaDB**: A fork of MySQL with additional features and improved performance. +- **MongoDB**: A NoSQL database known for its high scalability and flexibility. +- **Redis**: An in-memory key-value store often used as a database, cache, and message broker. + + +We offer multiple functionalities that you can use to manage your databases, such as: + +## General + +Actions like deploying, updating, and deleting your database, and stopping it. + +## Environment + +If you need to assign environment variables to your application, you can do so here. + +In case you need to use a multiline variable, you can wrap it in double quotes just like this `'"here_is_my_private_key"'`. + +## Monitoring + +Four graphs will be displayed for the use of memory, CPU, disk, and network. Note that the information is only updated if you are viewing the current page, otherwise it will not be updated. + +## Backups + +We offer automated backups for your databases, ensuring that you can recover your data quickly and easily in case of any issues, you can setup a S3 Destinations in settings to store your backups. + + +## Logs + +If you want to see any important logs from your application that is running, you can do so here and determine if your application is displaying any errors or not. + +## Advanced + +This section provides advanced configuration options for experienced users. It includes tools for custom commands within the container, managing Docker Swarm settings, and adjusting cluster settings such as replicas and registry selection. These tools are typically not required for standard application deployment and are intended for complex management and troubleshooting tasks. + +- **Custom Docker Image**: You can change the Docker image used to run your database. +- **Run Command**: Execute custom commands directly in the container for advanced management or troubleshooting. +- **Volumes**: To ensure data persistence across deployments, configure storage volumes for your application. +- **Resources**: Adjust the CPU and memory allocation for your application. diff --git a/apps/docs-v2/content/docs/core/docker-compose/auto-deploy.mdx b/apps/docs-v2/content/docs/core/docker-compose/auto-deploy.mdx new file mode 100644 index 0000000..da029ec --- /dev/null +++ b/apps/docs-v2/content/docs/core/docker-compose/auto-deploy.mdx @@ -0,0 +1,84 @@ +--- +title: Auto-deploy +description: How to auto-deploy your docker-compose application with Dokploy +--- + +Automatically deploying your docker-compose application to Dokploy can be achieved through two primary methods: using Webhooks or the Dokploy API. Each method supports various platforms and provides a streamlined deployment process. + +## Github + +For Github, we provide autodeploy without any configuration. This will automatically deploy your application whenever you push to your repository. + +## Webhook URL + +Webhooks allow you to automatically deploy your docker-compose application whenever changes are made in your source repository. + +- GitHub +- GitLab +- Bitbucket +- Gitea + +### Configuration Steps + +1. **Enable Auto Deploy**: Toggle the 'Auto Deploy' button found in the general tab of your application settings in Dokploy. +2. **Obtain Webhook URL**: Locate the Webhook URL from the deployment logs. + + + +3. **Configure Your Repository**: + - Navigate to your repository settings on your chosen platform. + - Add the webhook URL provided by Dokploy. + - Ensure the settings match the configuration necessary for triggering the webhook. + + + +#### Important Notes + +- **Branch Matching**: When using Git-based providers (GitHub, GitLab, etc.), ensure that the branch configured in Dokploy matches the branch you intend to push to. Misalignment will result in a "Branch Not Match" error. +- The steps are the same for all the providers. + +## API Method + +Deploy your application programmatically using the Dokploy API from anywhere. + +### Steps to Deploy Using API + +Steps: + +1. **Generate a Token**: Create an API token in your profile settings on Dokploy. +2. **Retrieve Compose ID**: + +```http +curl -X 'GET' \ + 'https://your-domain/api/project.all' \ + -H 'accept: application/json' + -H 'Authorization: Bearer ' +``` + +This command lists all projects and services. Identify the composeId for the compose you wish to deploy. + +3. **Trigger Deployment**: + +```http +curl -X 'POST' \ + 'https://your-domain/api/compose.deploy' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -H 'Authorization: Bearer ' \ + -d '{ + "composeId": "string" +}' +``` + +This API method allows for flexible, scriptable deployment options, suitable for automated systems or situations where direct repository integration is not feasible. +In this way you can deploy your application from anywhere, you can use the webhook URL or the API. diff --git a/apps/docs-v2/content/docs/core/docker-compose/domains.mdx b/apps/docs-v2/content/docs/core/docker-compose/domains.mdx new file mode 100644 index 0000000..82534d0 --- /dev/null +++ b/apps/docs-v2/content/docs/core/docker-compose/domains.mdx @@ -0,0 +1,181 @@ +--- +title: Domains +description: Configure domains for your Docker Compose application. +--- + +When using Docker Compose, adding a domain to a service is a straightforward process. This guide will walk you through the necessary steps to configure domains for your application. + +Key Steps: + +1. Add the service to the `dokploy-network`. +2. Use Traefik labels to configure routing. + +import { Callout } from "fumadocs-ui/components/callout"; + + + Since v0.7.0 Dokploy support domains natively. This means that you can + configure your domain directly in the Dokploy UI, without doing the rest of + the steps. + + +Example Scenario + +Let's consider an application with three components: a frontend, a backend, and a database. We'll start with a basic Docker Compose file and then enhance it with domain configuration. + +```yaml +version: "3.8" + +services: + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + volumes: + - ./frontend:/app + ports: + - "3000:3000" + depends_on: + - backend + + backend: + build: + context: ./backend + dockerfile: Dockerfile + volumes: + - ./backend:/app + ports: + - "5000:5000" + environment: + - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase + depends_on: + - database + + database: + image: postgres:13 + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + POSTGRES_DB: mydatabase + volumes: + - db-data:/var/lib/postgresql/data + +volumes: + db-data: +``` + +## Step 1: Add the Network + +First, we'll add the dokploy-network to our services: + +```yaml +version: "3.8" + +services: + frontend: + # ... (previous configuration) + networks: + - dokploy-network + + backend: + # ... (previous configuration) + networks: + - dokploy-network + + database: + # ... (previous configuration) + networks: + - dokploy-network + +volumes: + db-data: + +networks: + dokploy-network: + external: true +``` + +Step 2: Configuring Traefik Labels + +Now, let's add Traefik labels to route domains to our services. We'll focus on the frontend and backend services: + +```yaml +version: "3.8" + +services: + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + volumes: + - ./frontend:/app + expose: + - 3000 + depends_on: + - backend + networks: + - dokploy-network + labels: + - traefik.enable=true + - traefik.http.routers.frontend-app.rule=Host(`frontend.dokploy.com`) + - traefik.http.routers.frontend-app.entrypoints=web + - traefik.http.services.frontend-app.loadbalancer.server.port=3000 + + backend: + build: + context: ./backend + dockerfile: Dockerfile + volumes: + - ./backend:/app + expose: + - 5000 + environment: + - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase + depends_on: + - database + networks: + - dokploy-network + labels: + - traefik.enable=true + - traefik.http.routers.backend-app.rule=Host(`backend.dokploy.com`) + - traefik.http.routers.backend-app.entrypoints=web + - traefik.http.services.backend-app.loadbalancer.server.port=5000 + + database: + # ... (same as before) + +volumes: + db-data: + +networks: + dokploy-network: + external: true +``` + +Understanding Traefik Labels + +1. `traefik.enable=true` Enables Traefik routing for the service. +2. `traefik.http.routers..rule=Host('your-domain.dokploy.com')` Specifies the domain for the service +3. `traefik.http.routers..entrypoints=web` Sets the service to be accessible via HTTP. +4. `traefik.http.services..loadbalancer.server.port=3000` Specifies the port your service is using internally. + +**Note**: Replace `` with a unique identifier for each service (e.g., frontend-app, backend-app, etc.). + +## Important Considerations + +1. **Port Exposure**: Use `expose` instead of `ports` to expose ports to the host machine. This ensures that the ports are not exposed to the host machine. +2. **DNS Configuration**: Ensure you create `A` records pointing to your domain in your DNS Provider Settings. +3. **HTTPS**: For HTTPS, you can use Let's Encrypt or other SSL/TLS certificates. + +## Deployment + +With these configurations in place, you're now ready to deploy your application using Docker Compose. This setup should be sufficient to get your services up and running with custom domain routing through Traefik. + +## SSL Certificates and Further Configuration + +If you have questions about when to use Let's Encrypt or other SSL certificate options, you can find more detailed information in the following resources: + +1. [Certificates](/docs/core/domain/certificates) +2. [Docker Compose Domain](/docs/core/domain/docker-compose-setup) +3. [Docker Compose Example](/docs/core/docker-compose/example) + +If you have any further questions or need assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc) and we'll be happy to help. diff --git a/apps/docs-v2/content/docs/core/docker-compose/example.mdx b/apps/docs-v2/content/docs/core/docker-compose/example.mdx new file mode 100644 index 0000000..89cddc2 --- /dev/null +++ b/apps/docs-v2/content/docs/core/docker-compose/example.mdx @@ -0,0 +1,110 @@ +--- +title: "Example" +description: "Learn how to use Docker Compose with Dokploy" + +--- + +## Tutorial + +In this tutorial, we will create a simple application using Docker Compose and route the traffic to an accessible domain. + + +### Steps + +1. Create a new project. +2. Create a new service `Compose` and select the Compose Type `Docker Compose`. +3. Fork this repository: [Repo](https://github.com/Dokploy/docker-compose-test). +4. Select Provider type: GitHub or Git. +5. Select the repository: `Dokploy/docker-compose-test`. +6. Select the branch: `main`. +7. Set the Compose Path to `./docker-compose.yml` and save. +![Docker compose configuration](/assets/images/compose/setup.png) + + +### Updating Your `docker-compose.yml` + +Add the following to your existing `docker-compose.yml` file: + +1. Add the network `dokploy-network` to each service. +2. Add labels for Traefik to make the service accessible through the domain. + +Example: + +Let's modify the following compose file to make it work with Dokploy: + +```yaml +version: "3" + +services: + next-app: + build: + context: ./next-app + dockerfile: prod.Dockerfile + args: + ENV_VARIABLE: ${ENV_VARIABLE} + NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE} + restart: always + ports: + - 3000:3000 + networks: + - my_network +networks: + my_network: + external: true +``` + + +Updated version with dokploy-network and Traefik labels: + +import { Callout } from 'fumadocs-ui/components/callout'; + + +Don't set container_name property to the each service, it will cause issues with logs, metrics and other features + +{/* :::danger +Don't set container_name property to the each service, it will cause issues with logs, metrics and other features + +::: */} + +```yaml +version: "3" + +services: + next-app: + build: + context: ./next-app + dockerfile: prod.Dockerfile + args: + ENV_VARIABLE: ${ENV_VARIABLE} + NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE} + restart: always + ports: + - 3000 + networks: + - dokploy-network + labels: + - "traefik.enable=true" + - "traefik.http.routers..rule=Host(`your-domain.com`)" + - "traefik.http.routers..entrypoints=websecure" + - "traefik.http.routers..tls.certResolver=letsencrypt" + - "traefik.http.services..loadbalancer.server.port=3000" +networks: + dokploy-network: + external: true +``` + +Make sure to point the A record to the domain you want to use for your service. + + + +Deploy the application by clicking on "deploy" and wait for the deployment to complete. Then give Traefik about 10 seconds to generate the certificates. You can then access the application through the domain you have set. + + + +**Tips**: + +1. Set unique names for each router: `traefik.http.routers.` +2. Set unique names for each service: `traefik.http.services.` +3. Ensure the network is linked to the `dokploy-network` +4. Set the entry point to websecure and the certificate resolver to letsencrypt to generate certificates. + diff --git a/apps/docs-v2/content/docs/core/docker-compose/index.mdx b/apps/docs-v2/content/docs/core/docker-compose/index.mdx new file mode 100644 index 0000000..20f2fec --- /dev/null +++ b/apps/docs-v2/content/docs/core/docker-compose/index.mdx @@ -0,0 +1,76 @@ +--- +title: Docker Compose +description: "Learn how to use Docker Compose with Dokploy" +--- + +import { Callout } from "fumadocs-ui/components/callout"; + +Dokploy integrates with Docker Compose and Docker Stack to provide flexible deployment solutions. Whether you are developing locally or deploying at scale, Dokploy facilitates application management through these powerful Docker tools. + +### Configuration Methods + +Dokploy provides two methods for creating Docker Compose configurations: + +- **Docker Compose**: Ideal for standard Docker Compose configurations. +- **Stack**: Geared towards orchestrating applications using Docker Swarm. Note that some Docker Compose features, such as `build`, are not available in this mode. + +### General + +Configure the source of your code, the way your application is built, and also manage actions like deploying, updating, and deleting your application, and stopping it. + +### Enviroment + +A code editor within Dokploy allows you to specify environment variables for your Docker Compose file. By default, Dokploy creates a `.env` file in the specified Docker Compose file path. + +### Monitoring + +Monitor each service individually within Dokploy. If your application consists of multiple services, each can be monitored separately to ensure optimal performance. + +### Logs + +Access detailed logs for each service through the Dokploy log viewer, which can help in troubleshooting and ensuring the stability of your services. + +### Deployments + +You can view the last 10 deployments of your application. When you deploy your application in real time, a new deployment record will be created and it will gradually show you how your application is being built. + +We also offer a button to cancel deployments that are in queue. Note that those in progress cannot be canceled. + +We provide a webhook so that you can trigger your own deployments by pushing to your GitHub, Gitea, GitLab, Bitbucket repository. + +### Advanced + +This section provides advanced configuration options for experienced users. It includes tools for custom commands within the container and volumes. + +- **Command**: Dokploy has a defined command to run the Docker Compose file, ensuring complete control through the UI. However, you can append flags or options to the command. +- **Volumes**: To ensure data persistence across deployments, configure storage volumes for your application. + + + + +Docker volumes are a way to persist data generated and used by Docker containers. They are particularly useful for maintaining data between container restarts or for sharing data among different containers. + +To bind a volume to the host machine, you can use the following syntax in your docker-compose.yml file, but this way will clean up the volumes when a new deployment is made: + +```yaml +volumes: + - "/folder:/path/in/container" ❌ +``` + +It's recommended to use the ../files folder to ensure your data persists between deployments. For example: + +```yaml +volumes: + - "../files/my-database:/var/lib/mysql" ✅ + - "../files/my-configs:/etc/my-app/config" ✅ +``` + + diff --git a/apps/docs-v2/content/docs/core/docker-compose/providers.mdx b/apps/docs-v2/content/docs/core/docker-compose/providers.mdx new file mode 100644 index 0000000..f091ec3 --- /dev/null +++ b/apps/docs-v2/content/docs/core/docker-compose/providers.mdx @@ -0,0 +1,66 @@ +--- +title: "Providers" +description: "Learn how to use Docker Compose with Dokploy" +--- + +Dokploy offers several deployment methods, streamlining the process whether you're utilizing GitHub, any Git provider, Raw, or automated deployments. + +- GitHub +- Gitlab +- Bitbucket +- Git (Any Git Provider) +- Raw + +## GitHub + +Deploying via GitHub: + +1. Configure your GitHub repository in the `/dashboard/settings/git-providers`. +2. When creating an application, Dokploy automatically retrieves the available repositories and branches. + +## Gitlab + +Deploying via Gitlab: + +1. Configure your Gitlab repository in the `/dashboard/settings/git-providers`. +2. When creating an application, Dokploy automatically retrieves the available repositories and branches. + +## Bitbucket + +Deploying via Bitbucket: + +1. Configure your Bitbucket repository in the `/dashboard/settings/git-providers`. +2. When creating an application, Dokploy automatically retrieves the available repositories and branches. + +## Git + +For deployments from any Git repository, whether public or private, you can use either SSH or HTTPS: + +1. Enter the repository URL. +2. Specify the branch you wish to deploy. + +### Private Repositories + +For private repositories, authenticate using SSH. We provide a lock icon to generate an SSH key. + + + +You can then copy the SSH key and paste it into the settings of your account. + + + +This enables you to pull repositories from your private repository, a method consistent across nearly all providers. + +## Raw + +You specify a docker compose file directly in the code editor and trigger a deployment. diff --git a/apps/docs-v2/content/docs/core/features.mdx b/apps/docs-v2/content/docs/core/features.mdx new file mode 100644 index 0000000..8e2df4a --- /dev/null +++ b/apps/docs-v2/content/docs/core/features.mdx @@ -0,0 +1,102 @@ +--- +title: 'Features' +description: 'Explore the comprehensive suite of features available in Dokploy for optimized application deployment and management.' +--- + +Dokploy provides a comprehensive suite of features designed to simplify and enhance the application deployment process. + +## Application Deployment + +Dokploy supports two primary methods for deploying applications: + +1. **Applications**: This straightforward method allows for effortless deployment. Ideal for single applications, it offers a near plug-and-play experience. +2. **Docker Compose**: A more advanced option, requiring the creation of Dockerfiles and `docker-compose.yml`. This method provides greater control over deployment settings and full utilization of Docker Compose capabilities. + +### Applications Management + +Manage your applications through a range of features: + +**Basic Operations**: + 1. Deploy, stop, and delete applications. + 2. Open a terminal directly in the application container. + +**Source and Build Configuration**: + 1. Choose source providers (GitHub, Git, Docker). + 2. Select build types (Docker, Nixpacks, Heroku Buildpacks, Paketo Buildpacks). + + +**Environment Management**: + 1. Add and manage environment variables. + +**Monitoring Tools**: + 1. Monitor CPU, memory, disk, and network usage. + +**Logs**: + 1. Access real-time logs. + +**Deployments**: + 1. View and manage deployments, you can see the logs of the building application. + 2. Cancel queued deployments in case you have a lot of deployments in the queue, the most common is when you push alot of times in your repository, you can cancel the incoming queues, not the deployments that are already running. + +**Domain Management**: + 1. Add, delete, and generate domains. + +**Advanced Settings**: + 1. Customize initial commands and cluster settings. + 2. Set resource limits and manage volumes for data persistence. + 3. Configure redirects, security headers, and port settings. + 4. Detailed Traefik configuration for specific needs. + +### Docker Compose Management + +Enhance your Docker Compose experience with these advanced functionalities: + +**Lifecycle Management**: + 1. Deploy, stop, and delete Docker Compose setups. + 2. Open a terminal with service selection capability. + +**Source Configuration**: + 1. Choose source providers (GitHub, Git, Raw). + +**Environment Management**: + 1. Add and manage environment variables. + +**Monitoring Tools**: + 1. Monitor CPU, memory, disk, and network usage of each service. + +**Logs**: + 1. View real-time logs of each service. + +**Deployments**: + 1. View and manage deployments, you can see the logs of the building application. + 2. Cancel queued deployments in case you have a lot of deployments in the queue, the most common is when you push alot of times in your repository, you can cancel the incoming queues, not the deployments that are already running. + +**Advanced Settings**: + 1. Append command, by default we use a internal command to build the docker compose however, you can append a command to the existing one. + 2. Manage volumes and mounts. + +## Database Deployment + +Deploy and manage a variety of databases: + + +**Supported Databases**: + 1. MySQL, PostgreSQL, MongoDB, Redis, MariaDB. + +**General Management**: + 1. Deploy, stop, and delete databases. + 2. Open a terminal within the database container. + +**Environment and Monitoring**: + 1. Manage environment variables. + 2. Monitor CPU, memory, disk, and network usage. + +**Backups and Logs**: + 1. Configure manual and scheduled backups. + 2. View real-time logs. + +**Advanced Configuration**: + 1. Use custom Docker images and initial commands. + 2. Configure volumes and resource limits. + +These features are designed to offer flexibility and control over your deployment environments, ensuring that Dokploy meets the diverse needs of modern application deployment and management. diff --git a/apps/docs-v2/content/docs/core/index.mdx b/apps/docs-v2/content/docs/core/index.mdx new file mode 100644 index 0000000..551e804 --- /dev/null +++ b/apps/docs-v2/content/docs/core/index.mdx @@ -0,0 +1,54 @@ +--- +title: Welcome to Dokploy +description: Dokploy is a open source alternative to Heroku, Vercel, and Netlify. + +--- +import { Card, Cards } from 'fumadocs-ui/components/card'; + + +Dokploy is a stable, easy-to-use deployment solution designed to simplify the application management process. Think of Dokploy as your free self hostable alternative to platforms like Heroku, Vercel, and Netlify, leveraging the robustness of [Docker](https://www.docker.com/) and the flexibility of [Traefik](https://traefik.io/). + + + +{/* */} + +![Logo](/logo.png) + +## Why Choose Dokploy? + +- **Simplicity:** Easy setup and management of deployments. +- **Flexibility:** Supports a wide range of applications and databases. +- **Open Source:** Free and open-source software, available for anyone to use. + + +## Setting up Dokploy + +Getting started with Dokploy is straightforward. Follow our guides to install and configure your applications and databases effectively. + +## Setting up + +Please go to get started. + + + + + + + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/installation.mdx b/apps/docs-v2/content/docs/core/installation.mdx new file mode 100644 index 0000000..a03ae0f --- /dev/null +++ b/apps/docs-v2/content/docs/core/installation.mdx @@ -0,0 +1,85 @@ +--- +title: Installation +description: "Get Dokploy up and running on your server within minutes with this easy-to-follow installation guide." +--- + +Follow these steps in order to set up Dokploy locally and deploy it to your server, effectively managing Docker containers and applications: + +You need to follow this steps in the same order: + +1. [Virtual Private Server (VPS)](#virtual-private-server-vps) + +## Virtual Private Server (VPS) + +There are multiple VPS providers to choose from: + +We have tested on the following Linux Distros: + +- Ubuntu 24.04 LTS +- Ubuntu 23.10 +- Ubuntu 22.04 LTS +- Ubuntu 20.04 LTS +- Ubuntu 18.04 LTS +- Debian 12 +- Debian 11 +- Debian 10 +- Fedora 40 +- Centos 9 +- Centos 8 + +### Providers + +- [Hostinger](https://www.hostinger.com/vps-hosting?ref=dokploy) Get 20% Discount using this referral link: [Referral Link](https://www.hostinger.com/vps-hosting?REFERRALCODE=1SIUMAURICI97) +- [DigitalOcean](https://www.digitalocean.com/pricing/droplets#basic-droplets) Get 200$ credits for free with this referral link: [Referral Link](https://m.do.co/c/db24efd43f35) +- [Hetzner](https://www.hetzner.com/cloud/) Get 20€ credits for free with this referral link: [Referral Link](https://hetzner.cloud/?ref=vou4fhxJ1W2D) +- [Vultr](https://www.vultr.com/pricing/#cloud-compute) Referral Link: [Referral Link](https://www.vultr.com/?ref=9679828) +- [Linode](https://www.linode.com/es/pricing/#compute-shared) +- [Scaleway](https://www.scaleway.com/en/pricing/?tags=baremetal,available) +- [Google Cloud](https://cloud.google.com/) +- [AWS](https://aws.amazon.com/ec2/pricing/) + +### Requirements + +To ensure a smooth experience with Dokploy, your server should have at least 2GB of RAM and 30GB of disk space. This specification helps to handle the resources consumed by Docker during builds and prevents system freezes. + +import { Callout } from "fumadocs-ui/components/callout"; + + + **Suggestion:** For cost efficiency with reliable service, we recommend + Hetzner as the best value-for-money VPS provider. + + +### Docker + +Dokploy utilizes Docker, so it is essential to have Docker installed on your server. If Docker is not already installed, use the following command to install it automatically: + +
    + + Dokploy Cloud: Use Dokploy directly without worrying about maintenance or updates. Enjoy a hassle-free experience with Dokploy Cloud. Sign up +
    + +```bash +curl -sSL https://dokploy.com/install.sh | sh +``` + +## Completing the Setup + +After running the installation script, Dokploy and its dependencies will be set up on your server. Here's how to finalize the setup and start using Dokploy: + +### Accessing Dokploy + +Open your web browser and navigate to `http://your-ip-from-your-vps:3000`. You will be directed to the initial setup page where you can configure the administrative account for Dokploy. + +### Initial Configuration + +1. **Create an Admin Account:** Fill in the necessary details to set up your administrator account. This account will be the admin account for Dokploy. + +{" "} + + diff --git a/apps/docs/content/docs/core/get-started/manual-installation.cn.mdx b/apps/docs-v2/content/docs/core/manual-installation.mdx similarity index 58% rename from apps/docs/content/docs/core/get-started/manual-installation.cn.mdx rename to apps/docs-v2/content/docs/core/manual-installation.mdx index 92c987a..9614c45 100644 --- a/apps/docs/content/docs/core/get-started/manual-installation.cn.mdx +++ b/apps/docs-v2/content/docs/core/manual-installation.mdx @@ -1,17 +1,19 @@ --- -title: '手动安装' -description: '学习如何在服务器上手动安装 Dokploy。' +title: 'Manual Installation' +description: 'Learn how to manually install Dokploy on your server.' --- -如果您希望自定义 Dokploy 在服务器上的安装,可以修改以下几个方面: +If you wish to customize the Dokploy installation on your server, you can modify several enviroment variables: -1. **为 Dokploy 使用特定端口** - 这对于避免与其他服务的冲突非常理想。 -2. **选择特定版本的 Dokploy** - 可以选择如 canary、latest 或特定 Docker 标签(例如 v0.0.1)版本。 -3. **指定 Traefik 的 HTTP 和 HTTPS 端口** - 当与其他服务器(如 Nginx)一起运行时非常有用。 +1. **PORT** - Ideal for avoiding conflicts with other services. +2. **TRAEFIK_SSL_PORT** - Set to another port if you want to use a different port for SSL. +3. **TRAEFIK_PORT** - Set to another port if you want to use a different port for Traefik. +4. **ADVERTISE_ADDR** - Set to another IP address if you want to use a different IP address for Swarm. +5. **RELEASE_TAG** - Set to a dokploy docker hub tag(latest, canary, feature, etc) -## 安装脚本 +## Installation Script -下面是一个在 Linux 服务器上安装 Dokploy 的 Bash 脚本。确保在非容器的 Linux 环境中以 root 身份运行,并确保端口 80 和 443 是空闲的。 +Here is a Bash script for installing Dokploy on a Linux server. Make sure you run this as root on a Linux environment that is not a container, and ensure ports 80 and 443 are free. ```bash #!/bin/bash @@ -120,28 +122,27 @@ printf "${YELLOW}Please go to http://${advertise_addr}:3000${NC}\n\n" ``` -这个脚本包括对常见陷阱的检查,如果未安装 Docker 则安装 Docker,初始化 Docker Swarm,创建网络,然后拉取并部署 Dokploy。脚本运行后,它提供成功消息和访问 Dokploy 的说明。 +This script includes checks for common pitfalls, installs Docker if it’s not already installed, initializes a Docker Swarm, creates a network, and then pulls and deploys Dokploy. After the script runs, it provides a success message and instructions for accessing Dokploy. -这种结构化的格式清晰地列出了先决条件、步骤和安装后信息,使其对执行手动安装的用户来说非常友好和易于理解。 +This structured format clearly lays out the prerequisites, steps, and post-installation information, making it user-friendly and accessible for those performing manual installations. -## 自定义安装 -#### 自定义 swarm 广播地址 +## Customize install +#### Customize swarm advertise address -`docker swarm init` 命令中的 `--advertise-addr` 参数指定了 Docker Swarm 管理节点应该向 Swarm 中的其他节点广播的 IP 地址或接口。其他节点使用该地址与管理节点通信。 +The --advertise-addr parameter in the docker swarm init command specifies the IP address or interface that the Docker Swarm manager node should advertise to other nodes in the Swarm. This address is used by other nodes to communicate with the manager. -默认情况下,此脚本使用通过 `curl -s ifconfig.me` 命令获得的服务器外部 IP 地址。但是,根据您的网络配置,特别是如果您的服务器有多个网络接口或如果您在私有网络中设置 Swarm,您可能需要自定义此地址。 +By default, this script uses the external IP address of the server, obtained using the `curl -s ifconfig.me` command. However, you might need to customize this address based on your network configuration, especially if your server has multiple network interfaces or if you're setting up Swarm in a private network. -要自定义 `--advertise-addr` 参数,请将以下行: -`advertise_addr=$(curl -s ifconfig.me)` - -替换为您所需的 IP 地址或接口,例如: +To customize the --advertise-addr parameter, replace the line: `advertise_addr=$(curl -s ifconfig.me)` with your desired IP address or interface, for example: `advertise_addr="192.168.1.100"` -:warning: 该 IP 地址应对将加入 Swarm 的所有节点可访问。 +:warning: This IP address should be accessible to all nodes that will join the Swarm. -## 已有 Docker Swarm -如果您的服务器上已经运行了 Docker Swarm,并且您想使用 Dokploy,可以使用以下命令加入它: +## Existing Docker swarm + +If you already have a Docker swarm running on your server and you want to use dokploy, you can use the following command to join it: + ```bash docker network create --driver overlay --attachable dokploy-network @@ -152,7 +153,7 @@ chmod -R 777 /etc/dokploy docker pull dokploy/dokploy:latest -# 安装 +# Installation docker service create \ --name dokploy \ --replicas 1 \ diff --git a/apps/docs-v2/content/docs/core/meta.json b/apps/docs-v2/content/docs/core/meta.json new file mode 100644 index 0000000..0d85d1d --- /dev/null +++ b/apps/docs-v2/content/docs/core/meta.json @@ -0,0 +1,38 @@ +{ + "title": "Core", + "description": "The core of Dokploy", + "icon": "Building2", + "root": true, + "pages": [ + "---Introduction---", + "index", + "architecture", + "features", + "installation", + "manual-installation", + "reset-password", + "uninstall", + "videos", + "...", + "---Server---", + "(S3-Destinations)", + "(Git-Sources)", + "(Users)", + "(Notifications)", + "registry", + "ssh-keys", + "certificates", + "---Services---", + "applications", + "docker-compose", + "databases", + "templates", + "page-conventions", + "navigation", + "---UI---", + "theme", + "components", + "mdx", + "blocks" + ] +} diff --git a/apps/docs-v2/content/docs/core/registry/digital-ocean.mdx b/apps/docs-v2/content/docs/core/registry/digital-ocean.mdx new file mode 100644 index 0000000..17b6035 --- /dev/null +++ b/apps/docs-v2/content/docs/core/registry/digital-ocean.mdx @@ -0,0 +1,22 @@ +--- +title: Digital Ocean +description: 'Configure a Digital Ocean Container Registry to store your images and artifacts.' +--- + +To configure a Digital Ocean Container Registry, you need to fill the form with the following details: + +1. Insert the Registry Name eg. `My Registry`. +2. Go to `https://cloud.digitalocean.com/registry/new` and click on `Create a Container Registry`. +3. Insert a lowercase name eg. `dokploy-username`. +4. Click on `Create Registry`. +5. Click on `Actions` and then `Download Docker Credentials`. +6. In Permissions select `Read` and `Write`. +7. Open the downloaded file and copy the auth value and type as `Password` in Dokploy Modal. +7. Go to `https://cloud.digitalocean.com/account/api/tokens` and click on `Generate New Token`. +8. In permissions select `Registry`. +7. Click on `Create`. +8. Copy the `access token` and paste it in Dokploy Modal as a `Username` field. +9. (Optional) If you pretend to use Cluster Feature, make sure to set a `Image Prefix`. +10. Registry URL: set `registry.digitalocean.com` +11. Click on `Test` to make sure everything is working. +12. Click on `Create` to save the registry. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/registry/dockerhub.mdx b/apps/docs-v2/content/docs/core/registry/dockerhub.mdx new file mode 100644 index 0000000..281ad4c --- /dev/null +++ b/apps/docs-v2/content/docs/core/registry/dockerhub.mdx @@ -0,0 +1,19 @@ +--- +title: Docker Hub +description: 'Configure Docker Hub to store your images and artifacts.' +--- + +To configure a Docker Hub registry, you need to fill the form with the following details: + +1. Insert the Registry Name eg. `My Registry`. +2. Insert the Username eg. `dockerhub_username`. +3. Insert the Password, you can use your own dockerhub password or generate a token here `https://app.docker.com/settings/personal-access-tokens` +4. Click on Generate Token. +5. Insert the Token Description eg. `dockerhub_token`. +6. In permissions make sure to select `Read` and `Write`. +7. Click on `Create`. +8. Copy the `access token` and paste it in Dokploy `Docker Hub` Modal section. +9. (Optional) If you pretend to use Cluster Feature, make sure to set a `Image Prefix` and `Registry URL`. +10. Click on `Test` to make sure everything is working. +11. Click on `Create` to save the registry. + diff --git a/apps/docs-v2/content/docs/core/registry/ghcr.mdx b/apps/docs-v2/content/docs/core/registry/ghcr.mdx new file mode 100644 index 0000000..2903f68 --- /dev/null +++ b/apps/docs-v2/content/docs/core/registry/ghcr.mdx @@ -0,0 +1,19 @@ +--- +title: GHCR +description: 'Configure GitHub Container Registry to store your images and artifacts.' +--- + +To configure a GitHub Container Registry, you need to fill the form with the following details: + +1. Insert the Registry Name eg. `My Registry`. +2. Insert the Username eg. `github_username`. +3. Insert the Password, you can use your own github password or generate a token here `https://github.com/settings/tokens` +4. Click on Generate Token (Classic). +5. Insert the Note Description eg. `github_token`. +6. In permissions make sure to select `write:packages`. +7. Click on `Create`. +8. Copy the `access token` and paste it in Dokploy Modal as a Password field. +9. (Optional) If you pretend to use Cluster Feature, make sure to set a `Image Prefix`. +10. Registry URL: set `https://ghcr.io` +11. Click on `Test` to make sure everything is working. +12. Click on `Create` to save the registry. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/registry/index.mdx b/apps/docs-v2/content/docs/core/registry/index.mdx new file mode 100644 index 0000000..2af61ae --- /dev/null +++ b/apps/docs-v2/content/docs/core/registry/index.mdx @@ -0,0 +1,23 @@ +--- +title: Registry +description: 'Configure your registry settings to store your images and artifacts.' +--- + +Dokploy offers a UI to connect to any Docker Registry. + + + +## Registry Settings + +You need to fill the form with the following details: + +- **Registry Name**: Enter a name for your registry eg. `My Registry`. +- **Username**: Enter the username you want to use to connect to your registry. +- **Password**: Enter the password you want to use to connect to your registry. +- **Image Prefix(Optional)**: Useful when using Cluster feature, to tag your images with a prefix eg. `dokploy` will convert to `dokploy/my-app:latest`. +- **Registry URL**: Enter the URL of your registry eg. `https://index.docker.io/v1`. + +This approach allows you to authenticate and store your credentials on the machine, +making it convenient when using multiple applications. You won't need to provide credentials +for each one individually. It also enables seamless login to remote servers. If no server is selected, +Dokploy will default to using its own server. \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/reset-password.mdx b/apps/docs-v2/content/docs/core/reset-password.mdx new file mode 100644 index 0000000..893754f --- /dev/null +++ b/apps/docs-v2/content/docs/core/reset-password.mdx @@ -0,0 +1,41 @@ +--- +title: Reset Password +description: "Reset your password to access your Dokploy account." +--- + +import { Step, Steps } from 'fumadocs-ui/components/steps'; + +To reset your password, follow these steps: + + + +Log in to your VPS. + + + + + +Run the command below to get the container ID of the dokploy container. + +```bash +docker ps +``` + + + + + +Run command below to open a shell in the dokploy container. +```bash + docker exec -it bash -c "pnpm run reset-password" +``` + + + + + +It will display a random password. Copy it and use it to access again to the dashboard. + + + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/ssh-keys.mdx b/apps/docs-v2/content/docs/core/ssh-keys.mdx new file mode 100644 index 0000000..3ecf67b --- /dev/null +++ b/apps/docs-v2/content/docs/core/ssh-keys.mdx @@ -0,0 +1,30 @@ +--- +title: SSH Keys +description: 'Configure your SSH keys to access your servers or clone Private Repositories.' +--- + +import { Callout } from 'fumadocs-ui/components/callout'; + +Dokploy provides a section exclusively for SSH keys, allowing you to manage your SSH keys in a centralized location. + +SSH Keys can be used for two purposes: + +- **Private Repositories**: You can use SSH Keys, to access to private repositories, this is only for `Git` provider +in your application or docker compose. +- **Multi Server**: You can use SSH Keys, to access remotely to your servers via SSH. + +To create a SSH Key, is a very easy process, just click on `Create SSH Key` + +We offer two SSH Keys Generation types: + +1. **RSA Key**: This is the most commonly used key type, and generates a 2048-bit RSA key. +2. **Ed25519 Key**: This is a newer key type that generates a 256-bit Ed25519 key. + + + You can also create or paste your own SSH Key, you can edit the `Private Key` and `Public Key` fields without restrictions, + make sure to use the correct format for the key type you are using. + + + + Once you create a SSH Key you will not be able to read the `Private Key` anymore. + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/templates/index.mdx b/apps/docs-v2/content/docs/core/templates/index.mdx new file mode 100644 index 0000000..e153d97 --- /dev/null +++ b/apps/docs-v2/content/docs/core/templates/index.mdx @@ -0,0 +1,44 @@ +--- +title: Open Source Templates +description: Deploy open source templates with Dokploy +--- + +By default we include a set of templates, that you can use to spin up templates quickly. You can also create your own templates. + +## Templates + +The following templates are available: + +- **Pocketbase**: Open Source backend for your next SaaS and Mobile app in 1 file +- **Calcom**: Open source alternative to calendly for scheduling meetings +- **Plausible**: Open source analytics platform +- **Glitchtip**: Simple tracking event error logging +- **Documenso**: The Open Source DocuSign Alternative. +- **Grafana**: Open source dashboard for your metrics +- **NocoDB:**: Open Source Airtable Alternative +- **AppSmith**: Open Source CRM Alternative +- **Meilisearch**: A lightning-fast search API that fits effortlessly into your apps, websites, and workflow +- **Odoo**: Open Source ERP Alternative +- **Rocketchat**: Open Source Chat Platform +- **Uptime Kuma**: Open Source Uptime Monitoring +- **PhpMyAdmin**: Open Source Database Administration +- **Minio**: Open Source Object Storage +- **n8n**: Open Source Workflow Automation +- **excalidraw**: Open Source Collaborative Drawing Tool +- **Directus**: The Modern Data Stack 🐰 — Directus is an instant REST+GraphQL API and intuitive no-code data collaboration app for any SQL database. +- **Baserow**: Platform to build admin panels, internal tools, and dashboards +- **Metabase**: Open Source Business Intelligence +- **Wordpress**: Open Source Content Management System +- **Open WebUI**: Free and Open Source ChatGPT Alternative +- **Teable**: Open Source Airtable Alternative, Developer Friendly, No-code Database Built on Postgres +- **Roundcube**: Free and open source webmail software for the masses, written in PHP, uses SMTP[^1]. + +## Create your own template + +We accept contributions to upload new templates to the dokploy repository. + +Make sure to follow the guidelines for creating a template: + +[Steps to create your own template](https://github.com/Dokploy/dokploy/blob/canary/CONTRIBUTING.md#templates) + +[^1]: Please note that if you're self-hosting a mail server you need port 25 to be open for SMTP (Mail Transmission Protocol that allows you to send and receive) to work properly. Some VPS providers like [Hetzner](https://docs.hetzner.com/cloud/servers/faq/#why-can-i-not-send-any-mails-from-my-server) block this port by default for new clients. diff --git a/apps/docs-v2/content/docs/core/templates/pocketbase.mdx b/apps/docs-v2/content/docs/core/templates/pocketbase.mdx new file mode 100644 index 0000000..2867e29 --- /dev/null +++ b/apps/docs-v2/content/docs/core/templates/pocketbase.mdx @@ -0,0 +1,6 @@ +--- +title: Pocketbase +description: Deploy Pocketbase with Dokploy +--- + +import { Callout } from "fumadocs-ui/components/callout"; \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/templates/supabase.mdx b/apps/docs-v2/content/docs/core/templates/supabase.mdx new file mode 100644 index 0000000..e7bbaf0 --- /dev/null +++ b/apps/docs-v2/content/docs/core/templates/supabase.mdx @@ -0,0 +1,6 @@ +--- +title: Supabase +description: Deploy Supabase with Dokploy +--- + +import { Callout } from "fumadocs-ui/components/callout"; \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/uninstall.cn.mdx b/apps/docs-v2/content/docs/core/uninstall.cn.mdx new file mode 100644 index 0000000..790a74b --- /dev/null +++ b/apps/docs-v2/content/docs/core/uninstall.cn.mdx @@ -0,0 +1,32 @@ +--- +title: "卸载" +description: "了解如何在服务器上卸载 Dokploy" +--- + +## 卸载步骤 + +按照以下步骤从您的服务器中完全删除 Dokploy 及其组件。 + +### 第 1 步: 删除 Docker Swarm 服务 + +首先,删除 Docker Swarm 中的 Dokploy 以及相关服务: + +```bash +docker service rm dokploy dokploy-traefik dokploy-postgres dokploy-redis +``` + +### 第 2 步: 删除 Docker 挂载卷 + +接下来,删除 Dokploy 创建的 Docker 卷: + +```bash +docker volume rm -f dokploy-postgres-database redis-data-volume +``` + +### 第 3 步: 删除 Dokploy 文件 + +最后,从服务器上删除 Dokploy 文件和目录: + +```bash +sudo rm -rf /etc/dokploy +``` diff --git a/apps/docs-v2/content/docs/core/uninstall.mdx b/apps/docs-v2/content/docs/core/uninstall.mdx new file mode 100644 index 0000000..3f2e0cd --- /dev/null +++ b/apps/docs-v2/content/docs/core/uninstall.mdx @@ -0,0 +1,39 @@ +--- +title: Uninstall +description: "Learn how to uninstall Dokploy on your server" +--- + +import { Step, Steps } from 'fumadocs-ui/components/steps'; + +Follow these steps to completely remove Dokploy and its components from your server. + + + +Remove the docker swarm services created by Dokploy: + + ```bash + docker service rm dokploy dokploy-traefik dokploy-postgres dokploy-redis + ``` + + + + + +Remove the docker volumes created by Dokploy: + + ```bash + docker volume rm -f dokploy-postgres-database redis-data-volume + ``` + + + + + +Remove the dokploy files and directories from your server: + + ```bash + sudo rm -rf /etc/dokploy + ``` + + + \ No newline at end of file diff --git a/apps/docs-v2/content/docs/core/videos.mdx b/apps/docs-v2/content/docs/core/videos.mdx new file mode 100644 index 0000000..067fc84 --- /dev/null +++ b/apps/docs-v2/content/docs/core/videos.mdx @@ -0,0 +1,35 @@ +--- +title: Videos +description: Videos about how to install and use Dokploy. +--- + +import { Card, Cards } from 'fumadocs-ui/components/card'; + + +## My Favorite Way to deploy Applications + + + + +
    + + +## Introduction to Dokploy + +
    + +## Deploy docker compose on a VPS [Dokploy] + +
    + +## How to Setup Dokploy Self-Hosting on A Hetzner Server | BEST Coolify Alternative + +
    + +## FREE: Dokploy Self-Hosted 🐳 CANCEL VERCEL! 🚨 Coolify, Caprover, Alternative - Open Source + + +
    +## Say Goodbye to Vercel and Heroku with Dokploy Install + + diff --git a/apps/docs-v2/content/docs/meta.json b/apps/docs-v2/content/docs/meta.json new file mode 100644 index 0000000..d0f3e5b --- /dev/null +++ b/apps/docs-v2/content/docs/meta.json @@ -0,0 +1,3 @@ +{ + "pages": ["core", "cli", "api"] +} diff --git a/apps/docs-v2/content/docs/test.mdx b/apps/docs-v2/content/docs/test.mdx new file mode 100644 index 0000000..d1ee3a8 --- /dev/null +++ b/apps/docs-v2/content/docs/test.mdx @@ -0,0 +1,17 @@ +--- +title: Components +description: Components +--- + +## Code Block + +```js +console.log('Hello World'); +``` + +## Cards + + + + + diff --git a/apps/docs-v2/generate-docs.mjs b/apps/docs-v2/generate-docs.mjs new file mode 100644 index 0000000..fc6f488 --- /dev/null +++ b/apps/docs-v2/generate-docs.mjs @@ -0,0 +1,17 @@ +import { generateFiles } from "fumadocs-openapi"; + +try { + void generateFiles({ + input: ["./api.json"], + output: "./content/docs/api/generated", + per: "tag", + name: (tag, name) => { + console.log(tag, name); + return `reference-${name}`; + }, + }); +} catch (error) { + console.error(error); +} + +// united.com/customer-care diff --git a/apps/docs-v2/lib/source.ts b/apps/docs-v2/lib/source.ts new file mode 100644 index 0000000..5d9d349 --- /dev/null +++ b/apps/docs-v2/lib/source.ts @@ -0,0 +1,17 @@ +import { docs, meta } from "@/.source"; +import { loader } from "fumadocs-core/source"; +import { createMDXSource } from "fumadocs-mdx"; +import { createOpenAPI } from "fumadocs-openapi/server"; +import { attachFile } from "fumadocs-openapi/server"; + +export const source = loader({ + baseUrl: "/docs", + source: createMDXSource(docs, meta), + pageTree: { + attachFile, + }, +}); + +export const openapi = createOpenAPI({ + // options +}); diff --git a/apps/docs-v2/next.config.mjs b/apps/docs-v2/next.config.mjs new file mode 100644 index 0000000..dc4fcb1 --- /dev/null +++ b/apps/docs-v2/next.config.mjs @@ -0,0 +1,10 @@ +import { createMDX } from "fumadocs-mdx/next"; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +const config = { + reactStrictMode: true, +}; + +export default withMDX(config); diff --git a/apps/docs-v2/package.json b/apps/docs-v2/package.json new file mode 100644 index 0000000..77a0c46 --- /dev/null +++ b/apps/docs-v2/package.json @@ -0,0 +1,35 @@ +{ + "name": "docs-v2", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "next build", + "dev": "TURBOPACK=1 next dev", + "start": "next start", + "postinstall": "fumadocs-mdx", + "build:docs": "node generate-docs.mjs", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "next": "15.0.3", + "fumadocs-ui": "14.3.1", + "fumadocs-core": "14.3.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "fumadocs-mdx": "11.1.1", + "lucide-react": "^0.456.0", + "fumadocs-openapi": "5.5.9", + "shiki": "1.22.2" + }, + "devDependencies": { + "tsx": "^4.19.2", + "@types/node": "22.9.0", + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "typescript": "^5.6.3", + "@types/mdx": "^2.0.13", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.14" + } +} diff --git a/apps/docs-v2/postcss.config.js b/apps/docs-v2/postcss.config.js new file mode 100644 index 0000000..e873f1a --- /dev/null +++ b/apps/docs-v2/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/apps/docs-v2/public/android-chrome-192x192.png b/apps/docs-v2/public/android-chrome-192x192.png new file mode 100644 index 0000000..dff7c1e Binary files /dev/null and b/apps/docs-v2/public/android-chrome-192x192.png differ diff --git a/apps/docs-v2/public/android-chrome-512x512.png b/apps/docs-v2/public/android-chrome-512x512.png new file mode 100644 index 0000000..5a15d2b Binary files /dev/null and b/apps/docs-v2/public/android-chrome-512x512.png differ diff --git a/apps/docs-v2/public/apple-touch-icon.png b/apps/docs-v2/public/apple-touch-icon.png new file mode 100644 index 0000000..d763609 Binary files /dev/null and b/apps/docs-v2/public/apple-touch-icon.png differ diff --git a/apps/docs-v2/public/assets/add-node.png b/apps/docs-v2/public/assets/add-node.png new file mode 100644 index 0000000..7329a08 Binary files /dev/null and b/apps/docs-v2/public/assets/add-node.png differ diff --git a/apps/docs-v2/public/assets/architecture.png b/apps/docs-v2/public/assets/architecture.png new file mode 100644 index 0000000..e068b46 Binary files /dev/null and b/apps/docs-v2/public/assets/architecture.png differ diff --git a/apps/docs-v2/public/assets/cli/token.png b/apps/docs-v2/public/assets/cli/token.png new file mode 100644 index 0000000..cb4da0f Binary files /dev/null and b/apps/docs-v2/public/assets/cli/token.png differ diff --git a/apps/docs-v2/public/assets/diagram.png b/apps/docs-v2/public/assets/diagram.png new file mode 100644 index 0000000..05efbcb Binary files /dev/null and b/apps/docs-v2/public/assets/diagram.png differ diff --git a/apps/docs-v2/public/assets/dokploy-ssh-compose.png b/apps/docs-v2/public/assets/dokploy-ssh-compose.png new file mode 100644 index 0000000..a0eade8 Binary files /dev/null and b/apps/docs-v2/public/assets/dokploy-ssh-compose.png differ diff --git a/apps/docs-v2/public/assets/dokploy-ssh-key.png b/apps/docs-v2/public/assets/dokploy-ssh-key.png new file mode 100644 index 0000000..78a60b8 Binary files /dev/null and b/apps/docs-v2/public/assets/dokploy-ssh-key.png differ diff --git a/apps/docs-v2/public/assets/favicon.png b/apps/docs-v2/public/assets/favicon.png new file mode 100644 index 0000000..02c56ee Binary files /dev/null and b/apps/docs-v2/public/assets/favicon.png differ diff --git a/apps/docs-v2/public/assets/file-mount-configuration.webp b/apps/docs-v2/public/assets/file-mount-configuration.webp new file mode 100644 index 0000000..ad3a4be Binary files /dev/null and b/apps/docs-v2/public/assets/file-mount-configuration.webp differ diff --git a/apps/docs-v2/public/assets/file-mount.png b/apps/docs-v2/public/assets/file-mount.png new file mode 100644 index 0000000..a2320ec Binary files /dev/null and b/apps/docs-v2/public/assets/file-mount.png differ diff --git a/apps/docs-v2/public/assets/hostinger-add-sshkey.png b/apps/docs-v2/public/assets/hostinger-add-sshkey.png new file mode 100644 index 0000000..dfbb9a7 Binary files /dev/null and b/apps/docs-v2/public/assets/hostinger-add-sshkey.png differ diff --git a/apps/docs-v2/public/assets/houston.webp b/apps/docs-v2/public/assets/houston.webp new file mode 100644 index 0000000..930c164 Binary files /dev/null and b/apps/docs-v2/public/assets/houston.webp differ diff --git a/apps/docs-v2/public/assets/images/application-domain-setup/app-setup-domain.png b/apps/docs-v2/public/assets/images/application-domain-setup/app-setup-domain.png new file mode 100644 index 0000000..2c218b0 Binary files /dev/null and b/apps/docs-v2/public/assets/images/application-domain-setup/app-setup-domain.png differ diff --git a/apps/docs-v2/public/assets/images/application-domain-setup/domain-setup.png b/apps/docs-v2/public/assets/images/application-domain-setup/domain-setup.png new file mode 100644 index 0000000..080c6bd Binary files /dev/null and b/apps/docs-v2/public/assets/images/application-domain-setup/domain-setup.png differ diff --git a/apps/docs-v2/public/assets/images/checks-passed.png b/apps/docs-v2/public/assets/images/checks-passed.png new file mode 100644 index 0000000..3303c77 Binary files /dev/null and b/apps/docs-v2/public/assets/images/checks-passed.png differ diff --git a/apps/docs-v2/public/assets/images/cluster/application.png b/apps/docs-v2/public/assets/images/cluster/application.png new file mode 100644 index 0000000..d01aab7 Binary files /dev/null and b/apps/docs-v2/public/assets/images/cluster/application.png differ diff --git a/apps/docs-v2/public/assets/images/cluster/cluster.png b/apps/docs-v2/public/assets/images/cluster/cluster.png new file mode 100644 index 0000000..8b6154b Binary files /dev/null and b/apps/docs-v2/public/assets/images/cluster/cluster.png differ diff --git a/apps/docs-v2/public/assets/images/cluster/nodes.png b/apps/docs-v2/public/assets/images/cluster/nodes.png new file mode 100644 index 0000000..d679766 Binary files /dev/null and b/apps/docs-v2/public/assets/images/cluster/nodes.png differ diff --git a/apps/docs-v2/public/assets/images/cluster/registry.png b/apps/docs-v2/public/assets/images/cluster/registry.png new file mode 100644 index 0000000..fcf1925 Binary files /dev/null and b/apps/docs-v2/public/assets/images/cluster/registry.png differ diff --git a/apps/docs-v2/public/assets/images/cluster/swarm-settings.png b/apps/docs-v2/public/assets/images/cluster/swarm-settings.png new file mode 100644 index 0000000..f5c4821 Binary files /dev/null and b/apps/docs-v2/public/assets/images/cluster/swarm-settings.png differ diff --git a/apps/docs-v2/public/assets/images/compose/application.png b/apps/docs-v2/public/assets/images/compose/application.png new file mode 100644 index 0000000..a48389b Binary files /dev/null and b/apps/docs-v2/public/assets/images/compose/application.png differ diff --git a/apps/docs-v2/public/assets/images/compose/domain.png b/apps/docs-v2/public/assets/images/compose/domain.png new file mode 100644 index 0000000..8b49b23 Binary files /dev/null and b/apps/docs-v2/public/assets/images/compose/domain.png differ diff --git a/apps/docs-v2/public/assets/images/compose/overview.png b/apps/docs-v2/public/assets/images/compose/overview.png new file mode 100644 index 0000000..879e254 Binary files /dev/null and b/apps/docs-v2/public/assets/images/compose/overview.png differ diff --git a/apps/docs-v2/public/assets/images/compose/setup.png b/apps/docs-v2/public/assets/images/compose/setup.png new file mode 100644 index 0000000..8753dca Binary files /dev/null and b/apps/docs-v2/public/assets/images/compose/setup.png differ diff --git a/apps/docs-v2/public/assets/images/deployment/oracle/oracle-shape.png b/apps/docs-v2/public/assets/images/deployment/oracle/oracle-shape.png new file mode 100644 index 0000000..732c39f Binary files /dev/null and b/apps/docs-v2/public/assets/images/deployment/oracle/oracle-shape.png differ diff --git a/apps/docs-v2/public/assets/images/hero-dark.svg b/apps/docs-v2/public/assets/images/hero-dark.svg new file mode 100644 index 0000000..c6a30e8 --- /dev/null +++ b/apps/docs-v2/public/assets/images/hero-dark.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/docs-v2/public/assets/images/hero-light.svg b/apps/docs-v2/public/assets/images/hero-light.svg new file mode 100644 index 0000000..297d68f --- /dev/null +++ b/apps/docs-v2/public/assets/images/hero-light.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/docs-v2/public/assets/images/setup.png b/apps/docs-v2/public/assets/images/setup.png new file mode 100644 index 0000000..ff0cae0 Binary files /dev/null and b/apps/docs-v2/public/assets/images/setup.png differ diff --git a/apps/docs-v2/public/assets/images/web-domain-setup/dokploy-setup.png b/apps/docs-v2/public/assets/images/web-domain-setup/dokploy-setup.png new file mode 100644 index 0000000..c5c603a Binary files /dev/null and b/apps/docs-v2/public/assets/images/web-domain-setup/dokploy-setup.png differ diff --git a/apps/docs-v2/public/assets/images/web-domain-setup/domain-setup.png b/apps/docs-v2/public/assets/images/web-domain-setup/domain-setup.png new file mode 100644 index 0000000..080c6bd Binary files /dev/null and b/apps/docs-v2/public/assets/images/web-domain-setup/domain-setup.png differ diff --git a/apps/docs-v2/public/assets/multi-server-add-app.png b/apps/docs-v2/public/assets/multi-server-add-app.png new file mode 100644 index 0000000..d6f8388 Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-add-app.png differ diff --git a/apps/docs-v2/public/assets/multi-server-add-server.png b/apps/docs-v2/public/assets/multi-server-add-server.png new file mode 100644 index 0000000..48e3460 Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-add-server.png differ diff --git a/apps/docs-v2/public/assets/multi-server-finish.png b/apps/docs-v2/public/assets/multi-server-finish.png new file mode 100644 index 0000000..3f04301 Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-finish.png differ diff --git a/apps/docs-v2/public/assets/multi-server-overview.png b/apps/docs-v2/public/assets/multi-server-overview.png new file mode 100644 index 0000000..e1d9c5e Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-overview.png differ diff --git a/apps/docs-v2/public/assets/multi-server-setup-2.png b/apps/docs-v2/public/assets/multi-server-setup-2.png new file mode 100644 index 0000000..2f7f907 Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-setup-2.png differ diff --git a/apps/docs-v2/public/assets/multi-server-setup-3.png b/apps/docs-v2/public/assets/multi-server-setup-3.png new file mode 100644 index 0000000..66f9cc1 Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-setup-3.png differ diff --git a/apps/docs-v2/public/assets/multi-server-setup-app.png b/apps/docs-v2/public/assets/multi-server-setup-app.png new file mode 100644 index 0000000..88393cb Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-setup-app.png differ diff --git a/apps/docs-v2/public/assets/multi-server-setup.png b/apps/docs-v2/public/assets/multi-server-setup.png new file mode 100644 index 0000000..c5bca6b Binary files /dev/null and b/apps/docs-v2/public/assets/multi-server-setup.png differ diff --git a/apps/docs-v2/public/assets/nodes.png b/apps/docs-v2/public/assets/nodes.png new file mode 100644 index 0000000..ad29056 Binary files /dev/null and b/apps/docs-v2/public/assets/nodes.png differ diff --git a/apps/docs-v2/public/assets/private-repository.png b/apps/docs-v2/public/assets/private-repository.png new file mode 100644 index 0000000..9076669 Binary files /dev/null and b/apps/docs-v2/public/assets/private-repository.png differ diff --git a/apps/docs-v2/public/assets/ssh-keys.png b/apps/docs-v2/public/assets/ssh-keys.png new file mode 100644 index 0000000..52ee5c5 Binary files /dev/null and b/apps/docs-v2/public/assets/ssh-keys.png differ diff --git a/apps/docs-v2/public/assets/webhook-github.png b/apps/docs-v2/public/assets/webhook-github.png new file mode 100644 index 0000000..eb3d004 Binary files /dev/null and b/apps/docs-v2/public/assets/webhook-github.png differ diff --git a/apps/docs-v2/public/assets/webhook-url-compose.png b/apps/docs-v2/public/assets/webhook-url-compose.png new file mode 100644 index 0000000..79e50fc Binary files /dev/null and b/apps/docs-v2/public/assets/webhook-url-compose.png differ diff --git a/apps/docs-v2/public/assets/webhook-url.png b/apps/docs-v2/public/assets/webhook-url.png new file mode 100644 index 0000000..ba307d5 Binary files /dev/null and b/apps/docs-v2/public/assets/webhook-url.png differ diff --git a/apps/docs-v2/public/favicon-16x16.png b/apps/docs-v2/public/favicon-16x16.png new file mode 100644 index 0000000..246b15c Binary files /dev/null and b/apps/docs-v2/public/favicon-16x16.png differ diff --git a/apps/docs-v2/public/favicon-32x32.png b/apps/docs-v2/public/favicon-32x32.png new file mode 100644 index 0000000..a15c3da Binary files /dev/null and b/apps/docs-v2/public/favicon-32x32.png differ diff --git a/apps/docs-v2/public/favicon.ico b/apps/docs-v2/public/favicon.ico new file mode 100644 index 0000000..bb92b63 Binary files /dev/null and b/apps/docs-v2/public/favicon.ico differ diff --git a/apps/docs-v2/public/logo.png b/apps/docs-v2/public/logo.png new file mode 100644 index 0000000..0b00500 Binary files /dev/null and b/apps/docs-v2/public/logo.png differ diff --git a/apps/docs-v2/scripts/api.yaml b/apps/docs-v2/scripts/api.yaml new file mode 100644 index 0000000..ab0f9ea --- /dev/null +++ b/apps/docs-v2/scripts/api.yaml @@ -0,0 +1,806 @@ +openapi: 3.0.3 +info: + title: Swagger Petstore - OpenAPI 3.0 + description: |- + This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about + Swagger at [https://swagger.io](https://swagger.io). In the third iteration of the pet store, we've switched to the design first approach! + You can now help us improve the API whether it's by making changes to the definition itself or to the code. + That way, with time, we can improve the API in general, and expose some of the new features in OAS3. + + _If you're looking for the Swagger 2.0/OAS 2.0 version of Petstore, then click [here](https://editor.swagger.io/?url=https://petstore.swagger.io/v2/swagger.yaml). Alternatively, you can load via the `Edit > Load Petstore OAS 2.0` menu option!_ + + Some useful links: + - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore) + - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml) + termsOfService: http://swagger.io/terms/ + contact: + email: apiteam@swagger.io + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.11 +externalDocs: + description: Find out more about Swagger + url: http://swagger.io +servers: + - url: https://petstore3.swagger.io/api/v3 +tags: + - name: pet + description: Everything about your Pets + externalDocs: + description: Find out more + url: http://swagger.io + - name: store + description: Access to Petstore orders + externalDocs: + description: Find out more about our store + url: http://swagger.io + - name: user + description: Operations about user +paths: + /pet: + put: + tags: + - pet + summary: Update an existing pet + description: Update an existing pet by Id + operationId: updatePet + requestBody: + description: Update an existent pet in the store + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Pet' + required: true + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '422': + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + post: + tags: + - pet + summary: Add a new pet to the store + description: Add a new pet to the store + operationId: addPet + requestBody: + description: Create a new pet in the store + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Pet' + required: true + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid input + '422': + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: false + explode: true + schema: + type: string + default: available + enum: + - available + - pending + - sold + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - write:pets + - read:pets + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + operationId: findPetsByTags + parameters: + - name: tags + in: query + description: Tags to filter by + required: false + explode: true + schema: + type: array + items: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - write:pets + - read:pets + /pet/{petId}: + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + - petstore_auth: + - write:pets + - read:pets + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + - name: name + in: query + description: Name of pet that needs to be updated + schema: + type: string + - name: status + in: query + description: Status of pet that needs to be updated + schema: + type: string + responses: + '400': + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + delete: + tags: + - pet + summary: Deletes a pet + description: delete a pet + operationId: deletePet + parameters: + - name: api_key + in: header + description: '' + required: false + schema: + type: string + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + /pet/{petId}/uploadImage: + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + - name: additionalMetadata + in: query + description: Additional Metadata + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - write:pets + - read:pets + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: Place a new order in the store + operationId: placeOrder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Order' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid input + '422': + description: Validation exception + /store/order/{orderId}: + get: + tags: + - store + summary: Find purchase order by ID + description: For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions. + operationId: getOrderById + parameters: + - name: orderId + in: path + description: ID of order that needs to be fetched + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + description: Created user object + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User' + responses: + default: + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: Creates list of users with given input array + operationId: createUsersWithListInput + requestBody: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + default: + description: successful operation + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: false + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: false + schema: + type: string + responses: + '200': + description: successful operation + headers: + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when token expires + schema: + type: string + format: date-time + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + parameters: [] + responses: + default: + description: successful operation + /user/{username}: + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing. ' + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Update user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + schema: + type: string + requestBody: + description: Update an existent user in the store + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User' + responses: + default: + description: successful operation + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found +components: + schemas: + Order: + type: object + properties: + id: + type: integer + format: int64 + example: 10 + petId: + type: integer + format: int64 + example: 198772 + quantity: + type: integer + format: int32 + example: 7 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + example: approved + enum: + - placed + - approved + - delivered + complete: + type: boolean + xml: + name: order + Customer: + type: object + properties: + id: + type: integer + format: int64 + example: 100000 + username: + type: string + example: fehguy + address: + type: array + xml: + name: addresses + wrapped: true + items: + $ref: '#/components/schemas/Address' + xml: + name: customer + Address: + type: object + properties: + street: + type: string + example: 437 Lytton + city: + type: string + example: Palo Alto + state: + type: string + example: CA + zip: + type: string + example: '94301' + xml: + name: address + Category: + type: object + properties: + id: + type: integer + format: int64 + example: 1 + name: + type: string + example: Dogs + xml: + name: category + User: + type: object + properties: + id: + type: integer + format: int64 + example: 10 + username: + type: string + example: theUser + firstName: + type: string + example: John + lastName: + type: string + example: James + email: + type: string + example: john@email.com + password: + type: string + example: '12345' + phone: + type: string + example: '12345' + userStatus: + type: integer + description: User Status + format: int32 + example: 1 + xml: + name: user + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: tag + Pet: + required: + - name + - photoUrls + type: object + properties: + id: + type: integer + format: int64 + example: 10 + name: + type: string + example: doggie + category: + $ref: '#/components/schemas/Category' + photoUrls: + type: array + xml: + wrapped: true + items: + type: string + xml: + name: photoUrl + tags: + type: array + xml: + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + xml: + name: pet + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + xml: + name: '##default' + requestBodies: + Pet: + description: Pet object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + UserArray: + description: List of user object + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + securitySchemes: + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: https://petstore3.swagger.io/oauth/authorize + scopes: + write:pets: modify pets in your account + read:pets: read your pets + api_key: + type: apiKey + name: api_key + in: header \ No newline at end of file diff --git a/apps/docs-v2/scripts/generate-docs.mts b/apps/docs-v2/scripts/generate-docs.mts new file mode 100644 index 0000000..623a288 --- /dev/null +++ b/apps/docs-v2/scripts/generate-docs.mts @@ -0,0 +1,38 @@ +import * as path from "node:path"; +import * as OpenAPI from "fumadocs-openapi"; + +export async function generateDocs() { + // await rimraf("./content/docs/api", { + // filter(v) { + // return !v.endsWith("index.mdx") && !v.endsWith("meta.json"); + // }, + // }); + + const demoRegex = + /^---type-table-demo---\r?\n(?.+)\r?\n---end---$/gm; + + await Promise.all([ + OpenAPI.generateFiles({ + input: ["./api.yaml"], + output: "./content/docs/api", + per: "operation", + cwd: path.resolve(process.cwd(), ".."), + name: (type, name) => "index", + }).then(() => { + console.log("OpenAPI done"); + }), + // Typescript.generateFiles({ + // input: ['./content/docs/**/*.model.mdx'], + // transformOutput(_, content) { + // return content.replace(demoRegex, '---type-table---\n$1\n---end---'); + // }, + // output: (file) => + // path.resolve( + // path.dirname(file), + // `${path.basename(file).split('.')[0]}.mdx`, + // ), + // }), + ]); + + console.log("Done"); +} diff --git a/apps/docs-v2/scripts/pre-build.mts b/apps/docs-v2/scripts/pre-build.mts new file mode 100644 index 0000000..8df2afd --- /dev/null +++ b/apps/docs-v2/scripts/pre-build.mts @@ -0,0 +1,9 @@ +import { generateDocs } from "./generate-docs.mjs"; +async function main() { + await Promise.all([generateDocs()]); + console.log("Pre build script completed"); +} + +await main().catch((e) => { + console.error("Failed to run pre build script", e); +}); diff --git a/apps/docs-v2/source.config.ts b/apps/docs-v2/source.config.ts new file mode 100644 index 0000000..62ab25d --- /dev/null +++ b/apps/docs-v2/source.config.ts @@ -0,0 +1,7 @@ +import { defineConfig, defineDocs } from "fumadocs-mdx/config"; + +export const { docs, meta } = defineDocs({ + dir: "content/docs", +}); + +export default defineConfig(); diff --git a/apps/docs-v2/tailwind.config.js b/apps/docs-v2/tailwind.config.js new file mode 100644 index 0000000..414fa6a --- /dev/null +++ b/apps/docs-v2/tailwind.config.js @@ -0,0 +1,21 @@ +import { createPreset } from "fumadocs-ui/tailwind-plugin"; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./content/**/*.{md,mdx}", + "./mdx-components.{ts,tsx}", + "./node_modules/fumadocs-ui/dist/**/*.js", + "./node_modules/fumadocs-openapi/dist/**/*.js", + ], + darkMode: "class", + presets: [ + createPreset({ + // preset: 'neutral', + layoutWidth: 1400, + addGlobalColors: true, + }), + ], +}; diff --git a/apps/docs-v2/tsconfig.json b/apps/docs-v2/tsconfig.json new file mode 100644 index 0000000..412bf5a --- /dev/null +++ b/apps/docs-v2/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "ESNext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./*"] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/apps/docs-v2/utils/metadata.ts b/apps/docs-v2/utils/metadata.ts new file mode 100644 index 0000000..4527b2b --- /dev/null +++ b/apps/docs-v2/utils/metadata.ts @@ -0,0 +1,6 @@ +export const baseUrl = + process.env.NODE_ENV === "development" + ? "http://localhost:3000" + : "https://docs.dokploy.com"; + +export const url = (path: string): string => new URL(path, baseUrl).toString(); diff --git a/apps/docs/app/[lang]/[[...slug]]/page.tsx b/apps/docs/app/[lang]/[[...slug]]/page.tsx index 8307d65..9f04fdd 100644 --- a/apps/docs/app/[lang]/[[...slug]]/page.tsx +++ b/apps/docs/app/[lang]/[[...slug]]/page.tsx @@ -1,4 +1,4 @@ -import { getLanguages, getPage } from "@/app/source"; +import { getLanguages, getPage } from "@/app/source.config"; import { url, baseUrl } from "@/utils/metadata"; import { DocsBody, DocsPage } from "fumadocs-ui/page"; import type { Metadata } from "next"; diff --git a/apps/docs/app/[lang]/layout.tsx b/apps/docs/app/[lang]/layout.tsx index 6758302..0a8d67c 100644 --- a/apps/docs/app/[lang]/layout.tsx +++ b/apps/docs/app/[lang]/layout.tsx @@ -5,7 +5,7 @@ import { RootProvider } from "fumadocs-ui/provider"; import { Inter } from "next/font/google"; import type { ReactNode } from "react"; import { baseOptions } from "../layout.config"; -import { pageTree } from "../source"; +import { pageTree } from "../source.config"; import "../global.css"; import GoogleAnalytics from "@/components/analytics/google"; import { diff --git a/apps/docs/app/api/search/route.ts b/apps/docs/app/api/search/route.ts index e078585..adff97e 100644 --- a/apps/docs/app/api/search/route.ts +++ b/apps/docs/app/api/search/route.ts @@ -1,4 +1,4 @@ -import { getPages } from "@/app/source"; +import { getPages } from "@/app/source.config"; import { createI18nSearchAPI } from "fumadocs-core/search/server"; import { languages } from "@/i18n"; diff --git a/apps/docs/app/sitemap.ts b/apps/docs/app/sitemap.ts index 1451430..420f8d2 100644 --- a/apps/docs/app/sitemap.ts +++ b/apps/docs/app/sitemap.ts @@ -1,6 +1,6 @@ import { url } from "@/utils/metadata"; import type { MetadataRoute } from "next"; -import { getPages } from "./source"; +import { getPages } from "./source.config"; export default async function sitemap(): Promise { return [ diff --git a/apps/docs/app/source.ts b/apps/docs/app/source.config.ts similarity index 100% rename from apps/docs/app/source.ts rename to apps/docs/app/source.config.ts diff --git a/apps/docs/content/docs/cli/commands/application.cn.mdx b/apps/docs/content/docs/cli/commands/application.cn.mdx deleted file mode 100644 index 29e1dbd..0000000 --- a/apps/docs/content/docs/cli/commands/application.cn.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 应用程序 -description: 使用 Dokploy CLI 管理应用程序的指南 ---- - - -Dokploy CLI 可用于创建、部署和管理应用程序。 - -## 要求 - -需要先使用 Dokploy CLI 进行身份验证。 - -## 命令 - -1. `dokploy app create` - 创建一个新应用程序。 -2. `dokploy app delete` - 删除一个应用程序。 -3. `dokploy app deploy` - 部署一个应用程序。 -4. `dokploy app stop` - 停止一个正在运行的应用程序。 diff --git a/apps/docs/content/docs/cli/commands/authentication.cn.mdx b/apps/docs/content/docs/cli/commands/authentication.cn.mdx deleted file mode 100644 index b4a4d54..0000000 --- a/apps/docs/content/docs/cli/commands/authentication.cn.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 身份验证 -description: 使用 Dokploy CLI 进行身份验证的指南 ---- - -Dokploy CLI 使用基于令牌的身份验证系统。要进行身份验证,您需要创建一个访问令牌并安全存储它。 - -## 创建访问令牌 - -要创建访问令牌,首先您需要具备相应的权限,如果您是管理员,则不需要权限。 - -默认情况下,访问令牌不会过期。 - -您可以前往 `dashboard/settings/profile` 并点击 `生成` 按钮。 - - - -## 存储访问令牌 - -当您创建访问令牌时,Dokploy 将自动生成一个包含访问令牌和服务器 URL 的 config.json 文件。 - -## 命令 - -1. `dokploy authenticate` - 使用 Dokploy CLI 进行身份验证。 -2. `dokploy verify` - 验证访问令牌是否有效。 diff --git a/apps/docs/content/docs/cli/commands/databases.cn.mdx b/apps/docs/content/docs/cli/commands/databases.cn.mdx deleted file mode 100644 index 794166f..0000000 --- a/apps/docs/content/docs/cli/commands/databases.cn.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: 数据库 -description: 使用 Dokploy CLI 管理数据库的指南 ---- - -Dokploy CLI 可用于创建、部署和管理数据库。 - -## 需求 - -需要先进行 Dokploy CLI 的身份验证。 - -## 命令 - -### MariaDB - -1. `dokploy database mariadb create` - 创建一个新的 MariaDB 数据库。 -2. `dokploy database mariadb delete` - 删除一个 MariaDB 数据库。 -3. `dokploy database mariadb deploy` - 部署一个 MariaDB 数据库。 -4. `dokploy database mariadb stop` - 停止运行中的 MariaDB 数据库。 - -### PostgreSQL -1. `dokploy database postgresql create` - 创建一个新的 PostgreSQL 数据库。 -2. `dokploy database postgresql delete` - 删除一个 PostgreSQL 数据库。 -3. `dokploy database postgresql deploy` - 部署一个 PostgreSQL 数据库。 -4. `dokploy database postgresql stop` - 停止运行中的 PostgreSQL 数据库。 - -### MySQL -1. `dokploy database mysql create` - 创建一个新的 MySQL 数据库。 -2. `dokploy database mysql delete` - 删除一个 MySQL 数据库。 -3. `dokploy database mysql deploy` - 部署一个 MySQL 数据库。 -4. `dokploy database mysql stop` - 停止运行中的 MySQL 数据库。 - -### MongoDB -1. `dokploy database mongodb create` - 创建一个新的 MongoDB 数据库。 -2. `dokploy database mongodb delete` - 删除一个 MongoDB 数据库。 -3. `dokploy database mongodb deploy` - 部署一个 MongoDB 数据库。 -4. `dokploy database mongodb stop` - 停止运行中的 MongoDB 数据库。 - -### Redis -1. `dokploy database redis create` - 创建一个新的 Redis 数据库。 -2. `dokploy database redis delete` - 删除一个 Redis 数据库。 -3. `dokploy database redis deploy` - 部署一个 Redis 数据库。 -4. `dokploy database redis stop` - 停止运行中的 Redis 数据库。 diff --git a/apps/docs/content/docs/cli/commands/project.cn.mdx b/apps/docs/content/docs/cli/commands/project.cn.mdx deleted file mode 100644 index 4951e17..0000000 --- a/apps/docs/content/docs/cli/commands/project.cn.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: 项目 -description: 使用 Dokploy CLI 管理项目的指南 ---- - -Dokploy CLI 可用于创建、部署和管理项目。 - -## 需求 - -需要先进行 Dokploy CLI 的身份验证。 - -## 命令 - -1. `dokploy project create` - 创建一个新项目。 -2. `dokploy project info` - 获取有关项目的信息。 -3. `dokploy project list` - 列出所有项目。 diff --git a/apps/docs/content/docs/cli/index.cn.mdx b/apps/docs/content/docs/cli/index.cn.mdx deleted file mode 100644 index c61ffc4..0000000 --- a/apps/docs/content/docs/cli/index.cn.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: 介绍 -description: 使用 Dokploy 命令行界面的指南 ---- - -Dokploy CLI 是一个用于远程管理您的 Dokploy 服务器的命令行工具。它简化了应用程序和数据库的创建、部署和管理。 - -## 安装 - -```bash -npm install -g @dokploy/cli -``` - -## 用法 - -```bash -dokploy COMMAND -``` -要获取特定命令的帮助: - -```bash -dokploy COMMAND --help -``` diff --git a/apps/docs/content/docs/cli/meta.cn.json b/apps/docs/content/docs/cli/meta.cn.json deleted file mode 100644 index d2ed7a9..0000000 --- a/apps/docs/content/docs/cli/meta.cn.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "title": "CLI", - "root": true, - "pages": [ - "---开始使用---", - "index", - "---命令---", - "commands/authentication", - "commands/project", - "commands/application", - "commands/databases" - ] -} diff --git a/apps/docs/content/docs/core/application/advanced.cn.mdx b/apps/docs/content/docs/core/application/advanced.cn.mdx deleted file mode 100644 index 44c7d6a..0000000 --- a/apps/docs/content/docs/core/application/advanced.cn.mdx +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: 高级功能 -description: 了解如何使用应用程序中的高级功能。 ---- - -本节旨在为需要在 Dokploy 中管理复杂配置和编排设置的高级用户提供支持。在这里,您可以执行自定义命令、管理集群副本、选择 Docker 注册表以及配置 Docker Swarm 设置。 - -### 运行命令 - -- **目的**:允许用户在容器内直接执行自定义 Shell 命令。 -- **用法**:在提供的字段中输入需要运行的命令,然后单击“保存”以在容器环境中执行。这一工具特别适合调试或特定管理任务。 - -### 集群设置 - -- **目的**:管理应用程序在多个服务器或节点上的扩展和分布。 -- **副本数**:设置应运行的应用程序实例数量。 -- **注册表选择**:选择将从中提取容器映像的 Docker 注册表。这对于确保在部署过程中使用正确的映像至关重要。 - -#### 重要提示 -修改集群设置后,请始终点击“重新部署”以应用更改。 - -### Swarm 设置 - -Swarm 设置允许详细配置容器在 Docker Swarm 中的编排方式。 - -#### 健康检查 - -- **目的**:确保容器平稳运行,并在失败时重新启动它们。 -- **配置**:指定测试命令、间隔、超时、启动时间和重试次数等参数。 - -#### 重启策略 - -定义容器在退出或失败时的处理方式,配置如下: - -- **条件**:指定应在何种条件下发生重启。 -- **延迟**:设置重启之间的时间延迟。 -- **最大尝试次数**:限制重启尝试的次数。 -- **窗口**:定义用于评估重启策略的时间窗口。 - -#### 更新配置 - -管理 Swarm 中服务的部署和更新过程,配置如下: - -- **并行性**:同时更新的容器数量。 -- **延迟**:更新之间的时间。 -- **失败操作**:更新失败时采取的操作。 -- **监控**:更新后监控容器的持续时间。 -- **最大失败比例**:在更新被视为失败之前,允许失败的容器比例。 -- **顺序**:在更新过程中停止和启动容器的顺序。 - -#### 放置 - -根据特定规则和偏好控制容器在 Swarm 中的位置,配置如下: - -- **约束条件**:容器放置在节点上必须满足的条件。 -- **偏好设置**:在节点之间均匀分配容器的放置偏好。 - -### 回滚配置 - -管理更新失败时服务的回滚过程,配置如下: - -- **并行性**:同时回滚的容器数量。 -- **延迟**:回滚之间的时间。 -- **失败操作**:回滚失败时采取的操作。 -- **监控**:回滚后监控容器的持续时间。 -- **最大失败比例**:在回滚被视为失败之前,允许失败的容器比例。 -- **顺序**:在回滚过程中停止和重新启动容器的顺序。 - -### 模式 - -定义服务在 Swarm 中的复制方式,配置如下: - -- **复制模式**:服务根据指定的设置在节点上复制。 -- **副本数**:每个服务的副本数量。 -- **全局模式**:每个节点运行服务的单个实例。 -- **复制作业**:以复制的方式运行作业。 -- **最大并发**:同时运行的作业最大数量。 -- **总完成次数**:作业需要完成的总次数。 - -### 网络 - -配置服务的网络设置,配置如下: - -- **目标**:指定网络名称。 -- **别名**:为网络提供别名。 -- **驱动程序选项**:网络驱动程序选项,如 MTU 大小和主机绑定。 - -### 标签 - -为容器分配元数据以帮助识别和组织,配置如下: - -- **标签**:分配给服务的键值对。例如: -1. `com.example.app.name`: "my-app" -2. `com.example.app.version`: "1.0.0" - -### 注意 -修改 Swarm 设置需要谨慎考虑,因为不正确的配置可能会干扰整个容器编排。始终确保您理解所做更改的影响。 - -## 资源 - -管理分配给您的应用程序或数据库的内存和 CPU 资源。 - -- **内存保留**:保证应用程序的最小内存量。 -- **内存限制**:应用程序可以使用的最大内存量。 -- **CPU 限制**:应用程序可以使用的最大 CPU 单位数量。 -- **CPU 保留**:为应用程序保留的最小 CPU 单位数量。 - -### 卷/挂载 - -配置应用程序的持久存储,以确保数据在容器重启和部署之间保持完整。 - -**绑定挂载**:将主机文件或目录映射到容器文件或目录。通常用于特定配置或数据库。 -1. **主机路径**:主机上的路径。 -2. **挂载路径**:容器中的路径。 - -**卷挂载**:使用 Docker 管理的卷,比绑定挂载更易于备份和迁移。 -1. **卷名称**:Docker 管理的卷名称。 -2. **挂载路径**:容器中挂载卷的路径。 - -**文件挂载**:专门用于单个文件,适用于配置文件。 -1. **内容**:要存储在文件中的内容。 -2. **挂载路径**:容器中放置文件的路径。 - -文件挂载是 Dokploy 的一个功能,它在项目内部的 `files` 文件夹中创建一个文件,因此每次部署项目时都会重新创建。 - - - - - -### 重定向 - -根据指定的规则将请求重定向到应用程序的另一个 URL,提高导航效率和 SEO。 - -- **正则表达式**:输入一个正则表达式以匹配需要重定向的 URL。 -- **替换**:指定流量应重定向到的目标 URL。 -- **永久性**:启用此选项以应用永久性 (HTTP 301) 重定向,指示浏览器和搜索引擎页面已永久移动。 - -#### 示例 -要将所有流量从 "http://localhost" 重定向到 "http://mydomain",请将正则表达式设置为 `http://localhost/(.*)`,并将替换设置为 `http://mydomain/$1`。 - -### 安全 - -为您的应用程序添加基本身份验证以限制访问。 - -- **用户名**:输入用户名。 -- **密码**:输入密码。 - -#### 重要提示 -添加基本身份验证将在允许访问应用程序之前提示用户输入用户名和密码。在需要额外安全层的环境中使用此功能。 - -### 端口 - -通过配置网络端口将应用程序暴露于互联网,允许外部访问。 - -- **发布端口**:将路由流量到您的应用程序的主机上的端口号。 -- **目标端口**:容器内应用程序使用的端口号。 -- **协议**:根据应用程序的要求选择 TCP 或 UDP。 - -#### 重要提示 -确保发布端口不会与主机上的其他服务冲突,以避免端口绑定错误。此外,此端口主要用于从外部访问应用程序,例如 `your-ip:port`,而不是通过域访问应用程序。 - -### Traefik - -提供了一种动态且强大的方法来管理 HTTP 流量到您的服务,包括负载均衡和 SSL 终止。 - -- **规则**:使用 Traefik 强大的基于规则的配置系统定义复杂的路由、负载均衡和安全配置。 diff --git a/apps/docs/content/docs/core/application/auto-deploy.cn.mdx b/apps/docs/content/docs/core/application/auto-deploy.cn.mdx deleted file mode 100644 index 9f221c0..0000000 --- a/apps/docs/content/docs/core/application/auto-deploy.cn.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: 自动部署 -description: "了解如何将您的应用程序自动部署到 Dokploy。" ---- - -将应用程序自动部署到 Dokploy 可以通过两种主要方法实现:使用 Webhooks 或 Dokploy API。每种方法都支持各种平台,并提供简化的部署流程。 - -## GitHub - -对于 GitHub,我们提供无需任何配置的自动部署。这将在您推送到代码库时自动部署您的应用程序。 - -## Webhook URL - -Webhooks 允许您在源代码库中进行更改时自动部署应用程序。 - -- GitHub -- GitLab -- Bitbucket -- Gitea -- DockerHub - -### 配置步骤 - -1. **启用自动部署**:在 Dokploy 的应用程序设置的一般选项卡中切换“自动部署”按钮。 -2. **获取 Webhook URL**:从部署日志中找到 Webhook URL。 - - - -3. **配置您的代码库**: - - 转到您选择的平台上的代码库设置。 - - 添加由 Dokploy 提供的 webhook URL。 - - 确保设置与触发 webhook 所需的配置匹配。 - - - -#### 重要提示 - -- **分支匹配**:使用基于 Git 的提供商(GitHub、GitLab 等)时,请确保 Dokploy 中配置的分支与您打算推送的分支匹配。不匹配将导致“分支不匹配”错误。 -- **Docker 标签**:对于使用 DockerHub 的部署,请确保推送的标签与 Dokploy 中指定的标签匹配。 -- 所有提供商的步骤都是相同的。 - -### API 方法 - -通过 Dokploy API 从任何地方以编程方式部署您的应用程序。 - -### 使用 API 部署的步骤 - -步骤: - -1. **生成令牌**:在 Dokploy 的个人资料设置中创建一个 API 令牌。 -2. **获取应用程序 ID**: - -```http -curl -X 'GET' \ - 'https://your-domain/api/project.all' \ - -H 'accept: application/json' \ - -H 'Authorization: Bearer ' -``` - -此命令列出所有项目和服务。确定您希望部署的应用程序的 applicationId。 - -3. **触发部署**: - -```http -curl -X 'POST' \ - 'https://your-domain/api/application.deploy' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -H 'Authorization: Bearer ' \ - -d '{ - "applicationId": "string" -}' -``` - -此 API 方法允许灵活的、可编程的部署选项,适用于自动化系统或不便于直接代码库集成的情况。通过这种方式,您可以从任何地方部署您的应用程序,您可以使用 webhook URL 或 API。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/application/build-type.cn.mdx b/apps/docs/content/docs/core/application/build-type.cn.mdx deleted file mode 100644 index cc50f40..0000000 --- a/apps/docs/content/docs/core/application/build-type.cn.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: 构建类型 -description: "了解 Dokploy 中可用的不同构建类型,包括 Nixpack、Dockerfile 和 Building pack 选项。" ---- - -import { Callout } from 'fumadocs-ui/components/callout'; - -## 构建类型 - -Dokploy 提供了三种不同的构建类型来部署应用程序,每种类型都适合不同的开发需求和偏好。 - -### Nixpacks - -这是 Dokploy 中的默认构建类型。当您选择 Nixpack 时,Dokploy 会将您的应用程序构建为 Nixpack,该 Nixpack 针对易用性和效率进行了优化。 - -### Dockerfile - -如果您的项目包含 Dockerfile,您可以指定其路径。 Dokploy 将使用此 Dockerfile 直接构建您的应用程序,让您完全控制构建环境和依赖项。 - -### Buildpack - -Dokploy 支持两种类型的构建包: - -- **Heroku**: 这些构建包改编自 Heroku 流行的云平台,旨在兼容性和易于迁移。 -- **Paketo**: 提供利用现代标准和实践来构建应用程序的云原生构建包。 - - - **Tip:** - 我们建议使用“Nixpack”构建类型,因为它是大多数应用程序最简单、最常用的选项。 - - -通过选择适当的构建类型,您可以定制部署过程,以最适合您的应用程序的要求和您的操作偏好。 diff --git a/apps/docs/content/docs/core/application/domains.cn.mdx b/apps/docs/content/docs/core/application/domains.cn.mdx deleted file mode 100644 index e3b8495..0000000 --- a/apps/docs/content/docs/core/application/domains.cn.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: 域名 -description: '域名' ---- - -本节概述了如何为 Dokploy 中的应用程序配置域名,确保您的应用程序可以通过自定义 URL 进行访问。 - -### 添加域名 - -将自定义域名与您的应用程序关联,使其能够通过互联网访问。 - -- **主机**:您希望链接到应用程序的域名(例如,`api.dokploy.com`)。 -- **路径**:应用程序在域名内应可访问的具体路径。 -- **容器端口**:域名应路由到容器上的端口。 -- **证书**:选择是否通过 SSL/TLS 证书来保护域名。Dokploy 支持通过 Let's Encrypt 自动提供 SSL 证书。 -- **HTTPS**:启用此选项以为您的域名启用 HTTPS,提供安全的加密连接。 - -#### 添加域名的步骤 -1. 点击“添加域名”。 -2. 填写域名详细信息,包括主机、路径和端口。 -3. 选择启用 HTTPS 并选择证书选项。 -4. 点击“创建”以应用设置。 - -### 生成域名 - -快速为开发或测试目的设置域名,无需注册域名。 - -- **生成 TraefikMe 域名**:创建由 TraefikMe 提供的免费域名。这非常适合在购买正式域名之前进行测试或临时访问。 - -#### 生成域名的步骤 -1. 点击“生成域名”。 -2. 选择“生成 TraefikMe 域名”以快速设置。 -3. 将自动为您的应用程序分配一个域名。 - -### 管理域名 - -- **查看和修改**:现有域名会列出,您可以编辑设置或删除它们。 -- **详细信息**:每个域名条目显示已配置的主机、路径、端口以及 HTTPS 是否启用。 - -### 注意事项 - -正确的域名配置对于应用程序的可访问性和安全性至关重要。始终验证域名设置,并确保 DNS 配置正确指向正确的 IP 地址。启用 HTTPS 以增强安全性和信任,特别是在生产环境中。 - -### 关于容器端口的重要说明 - -域名设置中指定的“容器端口”专门用于通过 Traefik 将流量路由到正确的应用程序容器,并不会直接将端口暴露给互联网。这与“高级 -> 端口”部分中的端口设置根本不同,后者用于直接暴露应用程序端口。域名设置中的容器端口确保 Traefik 可以根据域名配置内部将流量引导到容器内的指定端口。 diff --git a/apps/docs/content/docs/core/application/overview.cn.mdx b/apps/docs/content/docs/core/application/overview.cn.mdx deleted file mode 100644 index 9af2b82..0000000 --- a/apps/docs/content/docs/core/application/overview.cn.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: 概述 -description: "探索 Dokploy 中可用的多种部署方法,包括 GitHub、Git、Docker 以及通过 webhook 的自动化部署。" ---- - -Dokploy 提供了多种部署应用程序的方法,无论您使用 GitHub、任何 Git 提供商、Docker 还是自动化部署,都可以简化流程。 - -- Github -- Git (Any Git Provider) -- Docker - -## GitHub - -通过 GitHub 部署很简单: - -1. 在以下配置您的 GitHub 存储库 `/dashboard/settings/server`. -2. 创建应用程序时,Dokploy 会自动加载可用的存储库和分支。 - -## Git - -对于来自任何 Git 存储库(公共或私有)的部署,您可以使用 SSL 或 HTTPS: - -1. 提供存储库 URL。 -2. 指定您要部署的分支。 - -## Docker - -对于 Docker 部署: - -- 指定 Docker 镜像。对于私人存储库,您需要提供用户名和密码。 - -## 自动部署 - -设置自动部署: - -1. 导航至`deployments`选项卡并复制`Webhook URL`。 -2. 在 Git 提供商的设置中,将此 URL 粘贴到 Webhook URL 字段中。 -3. 选择应该触发部署的事件,例如`Push`。 -4. 配置后,任何指定的操作(例如推送新提交)都将自动触发部署。 - -Dokploy 支持 GitHub、GitLab、Bitbucket、Gitea 和 DockerHub 的 webhook。 diff --git a/apps/docs/content/docs/core/application/providers.cn.mdx b/apps/docs/content/docs/core/application/providers.cn.mdx deleted file mode 100644 index 0436fb7..0000000 --- a/apps/docs/content/docs/core/application/providers.cn.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: 提供者 -description: '了解如何在您的应用程序中使用提供者。' ---- - -Dokploy 提供了几种部署方法,简化了无论您使用 GitHub、任何 Git 提供者、Docker 还是自动化部署的过程。 - -- GitHub -- Git(任何 Git 提供者) -- Docker - -## GitHub - -通过 GitHub 部署非常简单: - -1. 在 `/dashboard/settings/server` 中配置您的 GitHub 仓库。 -2. 在创建应用程序时,Dokploy 会自动检索可用的仓库和分支。 - -## Git - -对于来自任何 Git 仓库的部署,无论是公共还是私有,您可以使用 SSH 或 HTTPS: - -1. 输入仓库的 URL。 -2. 指定您希望部署的分支。 - -### 私有仓库 - -对于私有仓库,使用 SSH 进行身份验证。我们提供一个锁图标来生成 SSH 密钥。 - - - -然后,您可以复制 SSH 密钥并将其粘贴到您的帐户设置中。 - - - -这使您能够从私有仓库中拉取代码,这种方法在几乎所有提供者中都是一致的。 - -## Docker - -对于 Docker 部署: - -- 提供一个 Docker 镜像。对于私有仓库,输入用户名和密码。 diff --git a/apps/docs/content/docs/core/databases/backups.cn.mdx b/apps/docs/content/docs/core/databases/backups.cn.mdx deleted file mode 100644 index cecf071..0000000 --- a/apps/docs/content/docs/core/databases/backups.cn.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: 备份 -description: "了解如何在 Dokploy 中设置和管理数据库的备份,并提供 S3 存储桶中的存储选项。" ---- - -Dokploy 提供了一个集成的解决方案来备份您的数据库,确保数据安全和恢复能力。 - -## 备份数据库 - -要配置数据库备份,请导航至 Dokploy 仪表板中的 `Backup` 选项卡。以下是您需要设置的内容: - -- **Select Destination S3 Bucket(选择备份位置 S3 桶)**: 指定备份将存储在哪里。桶可以在`/dashboard/settings/destinations`路由中配置。 -- **Database Name(数据库名称)**: 输入要备份的数据库的名称。 -- **Schedule Cron(定时 cron)**: 使用 cron 语法定义备份的时间表。 -- **Prefix(前缀)**: 选择将备份存储在您的存储桶中所使用的前缀。 -- **Enabled(启用)**: 切换备份是否处于活动状态。 默认设置已启用。 - -### 测试您的备份配置 - -要确保正确配置备份设置: - -1. 点击 `Test` 按钮. -2. 这将启动对您选择的 S3 存储桶的测试备份。 -3. 检查桶以查看测试备份的结果。 - -此功能通过在依赖备份过程进行操作备份之前验证您的备份过程是否正确设置,从而让您安心。 diff --git a/apps/docs/content/docs/core/databases/connection.cn.mdx b/apps/docs/content/docs/core/databases/connection.cn.mdx deleted file mode 100644 index 6b99a89..0000000 --- a/apps/docs/content/docs/core/databases/connection.cn.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: 连接 -description: "了解如何使用 Dokploy 连接到您的数据库。" ---- - -本节解释如何为 Dokploy 中的应用程序配置数据库访问,包括内部网络中的连接和可以通过互联网访问的外部连接。 - -### 内部凭证 - -用于从同一网络连接到数据库,而无需将数据库暴露于互联网。 - -- **用户**:数据库访问的用户名。 -- **密码**:数据库访问的安全密码。 -- **数据库名称**:要连接的数据库名称。 -- **内部主机**:网络内数据库的主机名或内部标识符。 -- **内部端口(容器)**:在容器内连接到数据库所使用的端口。 -- **内部连接 URL**:用于内部连接数据库的完整连接字符串。 - -### 外部凭证 - -使数据库可以通过互联网访问,便于远程管理或外部应用程序。 - -- **外部端口(互联网)**:分配一个当前未被其他服务使用的端口,以便将数据库外部暴露。 - -#### 配置外部访问的步骤 -1. 确保外部端口可用,并且与其他服务不冲突。 -2. 输入要用于暴露数据库的外部端口。 -3. 系统将自动生成外部连接 URL,可用于通过互联网访问数据库的任何数据库管理工具,如 phpMyAdmin、MySQL Workbench、PgAdmin 等。 - -### 重要提示 - -出于安全原因,应对在同一网络或环境中运行的应用程序使用内部凭证,以防止未经授权的访问。外部凭证应仅在必要时使用,并采取适当的安全措施,如 VPN 或 IP 白名单。 diff --git a/apps/docs/content/docs/core/databases/overview.cn.mdx b/apps/docs/content/docs/core/databases/overview.cn.mdx deleted file mode 100644 index 83db387..0000000 --- a/apps/docs/content/docs/core/databases/overview.cn.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 概述 -description: "了解如何使用Dokploy轻松创建和备份数据库,支持各种数据库系统." ---- - -Dokploy 简化了创建和管理数据库的过程,为设置和备份提供了强大的选项。 - -## 数据库支持 - -Dokploy 目前支持一系列流行的数据库系统,确保您的项目的兼容性和灵活性: - -- **Postgres**: 强大、符合 SQL 且高度可靠。 -- **MySQL**: 广泛使用的关系数据库以其性能和灵活性而闻名。 -- **MariaDB**: 具有额外功能和改进的性能的 SQL 的分支。 -- **MongoDB**: NoSQL 数据库以其高可扩展性和灵活性而闻名。 -- **Redis**: 内存中的键-值存储,通常用作数据库、缓存和消息代理。 - -## 部署 - -在 Dokploy 中部署数据库很简单: - -1. 导航至 Dokploy 仪表板的数据库部分。 -2. 单击您要设置的数据库旁边的`Deploy`按钮。 - -`Deploy`按钮启动一个简化的流程,自动设置您选择的数据库,使其准备好立即使用。 diff --git a/apps/docs/content/docs/core/docker-compose/auto-deploy.cn.mdx b/apps/docs/content/docs/core/docker-compose/auto-deploy.cn.mdx deleted file mode 100644 index 9b769bd..0000000 --- a/apps/docs/content/docs/core/docker-compose/auto-deploy.cn.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: 自动部署 -description: 如何使用 Dokploy 自动部署您的 docker-compose 应用 ---- - -自动部署您的 docker-compose 应用到 Dokploy 可以通过两种主要方法实现:使用 Webhooks 或 Dokploy API。每种方法支持各种平台,并提供简化的部署过程。 - -## Github - -对于 Github,我们提供无需配置的自动部署。这将在您推送到存储库时自动部署您的应用。 - -## Webhook URL - -使用 Webhooks,您可以在源代码库中发生更改时自动部署您的 docker-compose 应用。 - -- GitHub -- GitLab -- Bitbucket -- Gitea - -### 配置步骤 - -1. **启用自动部署**:在 Dokploy 中的应用设置的常规标签中切换“自动部署”按钮。 -2. **获取 Webhook URL**:从部署日志中找到 Webhook URL。 - - - -3. **配置您的存储库**: - - 导航到您选择的平台上的存储库设置。 - - 添加 Dokploy 提供的 webhook URL。 - - 确保设置匹配触发 webhook 所需的配置。 - - - -#### 重要说明 - -- **分支匹配**:使用基于 Git 的提供商(GitHub、GitLab 等)时,确保 Dokploy 中配置的分支与您打算推送到的分支匹配。不匹配将导致“分支不匹配”错误。 -- 所有提供商的步骤相同。 - -## API 方法 - -通过 Dokploy API 从任何地方以编程方式部署您的应用。 - -### 使用 API 部署的步骤 - -步骤: - -1. **生成令牌**:在 Dokploy 的个人资料设置中创建一个 API 令牌。 -2. **获取 Compose ID**: - -```http -curl -X 'GET' \ - 'https://your-domain/api/project.all' \ - -H 'accept: application/json' \ - -H 'Authorization: Bearer ' -``` - -此命令列出所有项目和服务。确定您要部署的 compose 的 composeId。 - -3. **触发部署**: -```http -curl -X 'POST' \ - 'https://canary.dokploy.com/api/compose.deploy' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -H 'Authorization: Bearer ' \ - -d '{ - "composeId": "string" -}' -``` - -这种 API 方法提供了灵活的、可脚本化的部署选项,适用于自动化系统或无法直接集成存储库的情况。 -通过这种方式,您可以从任何地方部署您的应用,可以使用 webhook URL 或 API。 diff --git a/apps/docs/content/docs/core/docker-compose/domains.cn.mdx b/apps/docs/content/docs/core/docker-compose/domains.cn.mdx deleted file mode 100644 index cb44b52..0000000 --- a/apps/docs/content/docs/core/docker-compose/domains.cn.mdx +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: 域名 -description: 为您的 Docker Compose 应用程序配置域名。 ---- - -在使用 Docker Compose 时,为服务添加域名是一个简单的过程。本指南将引导您完成为应用程序配置域名的必要步骤。 - -关键步骤: - -1. 将服务添加到 `dokploy-network`。 -2. 使用 Traefik 标签配置路由。 - -## 示例场景 - -让我们考虑一个包含三个组件的应用程序:前端、后端和数据库。我们将从一个基本的 Docker Compose 文件开始,然后通过域名配置对其进行增强。 - -```yaml -version: '3.8' - -services: - frontend: - build: - context: ./frontend - dockerfile: Dockerfile - volumes: - - ./frontend:/app - ports: - - "3000:3000" - depends_on: - - backend - - backend: - build: - context: ./backend - dockerfile: Dockerfile - volumes: - - ./backend:/app - ports: - - "5000:5000" - environment: - - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase - depends_on: - - database - - database: - image: postgres:13 - environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: password - POSTGRES_DB: mydatabase - volumes: - - db-data:/var/lib/postgresql/data - -volumes: - db-data: -``` - -## 步骤 1:添加网络 - -首先,我们将 `dokploy-network` 添加到我们的服务中: - -```yaml -version: '3.8' - -services: - frontend: - # ...(之前的配置) - networks: - - dokploy-network - - backend: - # ...(之前的配置) - networks: - - dokploy-network - - database: - # ...(之前的配置) - networks: - - dokploy-network - -volumes: - db-data: - -networks: - dokploy-network: - external: true -``` - -## 步骤 2:配置 Traefik 标签 - -现在,让我们添加 Traefik 标签以将域名路由到我们的服务。我们将专注于前端和后端服务: - -{/* 必须添加这些标签: - -1. `traefik.enable=true` -此标签告诉 Traefik 此服务应由 Traefik 路由。 -2. `traefik.http.routers..rule=Host('your-domain.dokploy.com')` -此标签告诉 Traefik 使用的域名是 `your-domain.dokploy.com` -3. `traefik.http.routers..entrypoints=web` -此标签告诉 Traefik 该服务应通过 `http` 协议访问。 -4. `traefik.http.services..loadbalancer.server.port=3000` -此标签告诉 Traefik 使用的端口是 `3000` - -注意:对于 loadbalancer.server.port,确保分配您服务所使用的端口。请注意,您无需像这样暴露端口: - -注意:在 loadbalancer.server.port 确保分配您服务使用的端口,并且需要注意的是,您无需以这种方式暴露端口: - -`'3000:3000'` 这是不正确的,您只需分配服务正在使用的端口,在这种情况下为 `3000`。 - -确保创建指向您的域名的 `A` 记录,这可以通过您的 DNS 提供商完成。*/} - -```yaml -version: '3.8' - -services: - frontend: - build: - context: ./frontend - dockerfile: Dockerfile - volumes: - - ./frontend:/app - expose: - - 3000 - depends_on: - - backend - networks: - - dokploy-network - labels: - - traefik.enable=true - - traefik.http.routers.frontend-app.rule=Host(`frontend.dokploy.com`) - - traefik.http.routers.frontend-app.entrypoints=web - - traefik.http.services.frontend-app.loadbalancer.server.port=3000 - - backend: - build: - context: ./backend - dockerfile: Dockerfile - volumes: - - ./backend:/app - expose: - - 5000 - environment: - - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase - depends_on: - - database - networks: - - dokploy-network - labels: - - traefik.enable=true - - traefik.http.routers.backend-app.rule=Host(`backend.dokploy.com`) - - traefik.http.routers.backend-app.entrypoints=web - - traefik.http.services.backend-app.loadbalancer.server.port=5000 - - database: - # ...(与之前相同) - -volumes: - db-data: - -networks: - dokploy-network: - external: true -``` - -## 理解 Traefik 标签 - -1. `traefik.enable=true` 启用服务的 Traefik 路由。 -2. `traefik.http.routers..rule=Host('your-domain.dokploy.com')` 指定服务的域名。 -3. `traefik.http.routers..entrypoints=web` 将服务设置为可通过 HTTP 访问。 -4. `traefik.http.services..loadbalancer.server.port=3000` 指定服务内部使用的端口。 - -**注意**:将 `` 替换为每个服务的唯一标识符(例如,frontend-app、backend-app 等)。 - -## 重要考虑事项 - -1. **端口暴露**:使用 `expose` 而不是 `ports` 来暴露主机机器的端口。这确保端口不会暴露给主机机器。 -2. **DNS 配置**:确保您在 DNS 提供商设置中创建指向您域名的 `A` 记录。 -3. **HTTPS**:对于 HTTPS,您可以使用 Let's Encrypt 或其他 SSL/TLS 证书。 - -## 部署 - -有了这些配置,您现在可以使用 Docker Compose 部署您的应用程序。此设置应足以通过 Traefik 使用自定义域路由启动和运行您的服务。 - -## SSL 证书和进一步配置 - -如果您有关于何时使用 Let's Encrypt 或其他 SSL 证书选项的问题,您可以在以下资源中找到更详细的信息: - -1. [证书](/docs/core/domain/certificates) -2. [Docker Compose 域名](/docs/core/domain/docker-compose-setup) -3. [Docker Compose 示例](/docs/core/docker-compose/example) - -如果您有任何进一步的问题或需要帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc),我们很乐意为您提供帮助。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/docker-compose/example.cn.mdx b/apps/docs/content/docs/core/docker-compose/example.cn.mdx deleted file mode 100644 index df05c71..0000000 --- a/apps/docs/content/docs/core/docker-compose/example.cn.mdx +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: "示例" -description: "学习如何在 Dokploy 中使用 Docker Compose" - ---- - -## 教程 - -在本教程中,我们将使用 Docker Compose 创建一个简单的应用程序,并将流量路由到可访问的域名。 - -### 步骤 - -1. 创建一个新项目。 -2. 创建一个新服务 `Compose`,并选择 Compose 类型为 `Docker Compose`。 -3. Fork 这个仓库:[Repo](https://github.com/Dokploy/docker-compose-test)。 -4. 选择提供商类型:GitHub 或 Git。 -5. 选择仓库:`Dokploy/docker-compose-test`。 -6. 选择分支:`main`。 -7. 将 Compose 路径设置为 `./docker-compose.yml` 并保存。 -![Docker compose configuration](/assets/images/compose/setup.png) - -### 更新你的 `docker-compose.yml` - -在现有的 `docker-compose.yml` 文件中添加以下内容: - -1. 为每个服务添加网络 `dokploy-network`。 -2. 添加 Traefik 标签,使服务能够通过域名访问。 - -示例: - -让我们修改以下的 Compose 文件,使其能够在 Dokploy 中运行: -```yaml -version: "3" - -services: - next-app: - build: - context: ./next-app - dockerfile: prod.Dockerfile - args: - ENV_VARIABLE: ${ENV_VARIABLE} - NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE} - restart: always - ports: - - 3000:3000 - networks: - - my_network -networks: - my_network: - external: true -``` - - -更新版本,添加了 dokploy-network 和 Traefik 标签: - -import { Callout } from 'fumadocs-ui/components/callout'; - - -不要为每个服务设置 container_name 属性,否则会导致日志、指标和其他功能出现问题。 - -{/* :::danger -不要为每个服务设置 container_name 属性,否则会导致日志、指标和其他功能出现问题。 - -::: */} - -```yaml -version: "3" - -services: - next-app: - build: - context: ./next-app - dockerfile: prod.Dockerfile - args: - ENV_VARIABLE: ${ENV_VARIABLE} - NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE} - restart: always - ports: - - 3000 - networks: - - dokploy-network - labels: - - "traefik.enable=true" - - "traefik.http.routers..rule=Host(`your-domain.com`)" - - "traefik.http.routers..entrypoints=websecure" - - "traefik.http.routers..tls.certResolver=letsencrypt" - - "traefik.http.services..loadbalancer.server.port=3000" -networks: - dokploy-network: - external: true -``` - -确保将 A 记录指向您希望用于服务的域名。 - - - -通过点击 "deploy" 部署应用程序,等待部署完成。然后给 Traefik 大约 10 秒的时间来生成证书。之后,您就可以通过设置的域名访问应用程序。 - - - -**提示**: - -1. 为每个路由器设置唯一名称:`traefik.http.routers.` -2. 为每个服务设置唯一名称:`traefik.http.services.` -3. 确保网络已连接到 `dokploy-network` -4. 将入口点设置为 websecure,并将证书解析器设置为 letsencrypt,以生成证书。 - diff --git a/apps/docs/content/docs/core/docker-compose/overview.cn.mdx b/apps/docs/content/docs/core/docker-compose/overview.cn.mdx deleted file mode 100644 index 34d83b7..0000000 --- a/apps/docs/content/docs/core/docker-compose/overview.cn.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "概述" -description: "了解如何使用 Docker Compose 和 Dokploy" ---- - -import { Callout } from "fumadocs-ui/components/callout"; - -Dokploy 集成了 Docker Compose 和 Docker Stack,以提供灵活的部署解决方案。无论您是在本地开发还是进行大规模部署,Dokploy 都能通过这些强大的 Docker 工具简化应用管理。 - -### 配置方法 - -Dokploy 提供两种创建 Docker Compose 配置的方法: - -- **Docker Compose**:适用于标准 Docker Compose 配置。 -- **Stack**:旨在使用 Docker Swarm 进行应用编排。请注意,在此模式下,一些 Docker Compose 功能(例如 `build`)不可用。 - -### 一般 - -配置代码来源、应用构建方式,并管理部署、更新、删除应用及停止应用等操作。 - -### 环境 - -Dokploy 内置的代码编辑器允许您为 Docker Compose 文件指定环境变量。默认情况下,Dokploy 会在指定的 Docker Compose 文件路径中创建 `.env` 文件。 - -### 监控 - -在 Dokploy 中可以单独监控每个服务。如果您的应用包含多个服务,可以单独监控每个服务,以确保最佳性能。 - -### 日志 - -通过 Dokploy 日志查看器访问每个服务的详细日志,这可以帮助排除故障并确保服务的稳定性。 - -### 部署 - -您可以查看应用的最近 10 次部署。当您实时部署应用时,将创建一个新的部署记录,并逐渐显示应用的构建过程。 - -我们还提供一个按钮,可以取消排队中的部署。请注意,正在进行的部署无法取消。 - -我们提供了一个 webhook,以便您可以通过推送到 GitHub、Gitea、GitLab、Bitbucket 仓库来触发自己的部署。 - -### 高级 - -本节为经验丰富的用户提供高级配置选项。包括在容器内自定义命令和卷的工具。 - -- **命令**:Dokploy 定义了一个命令来运行 Docker Compose 文件,确保通过 UI 完全控制。不过,您可以向命令添加标志或选项。 -- **卷**:为了确保数据在部署之间持久化,配置应用的存储卷。 - - - - -Docker 卷是一种持久化 Docker 容器生成和使用的数据的方式。它们对于在容器重启之间维护数据或在不同容器之间共享数据尤其有用。 - -要将卷绑定到主机,可以在您的 docker-compose.yml 文件中使用以下语法,但这种方式在新部署时会清理卷: - -```yaml -volumes: - - "/folder:/path/in/container" ❌ -``` - -建议使用 ../files 文件夹,以确保您的数据在部署之间保持持久。例如: - -```yaml -volumes: - - "../files/my-database:/var/lib/mysql" ✅ - - "../files/my-configs:/etc/my-app/config" ✅ -``` - - \ No newline at end of file diff --git a/apps/docs/content/docs/core/docker-compose/providers.cn.mdx b/apps/docs/content/docs/core/docker-compose/providers.cn.mdx deleted file mode 100644 index fca7754..0000000 --- a/apps/docs/content/docs/core/docker-compose/providers.cn.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "提供商" -description: "了解如何在 Dokploy 中使用 Docker Compose。" ---- - -Dokploy 提供几种部署方法,使得无论您是使用 GitHub、任何 Git 提供商、原始方法还是自动部署,流程都更加简化。 - -- GitHub -- Git(任何 Git 提供商) -- 原始方法 - -## GitHub - -通过 GitHub 部署非常简单: - -1. 在 `/dashboard/settings/server` 中配置您的 GitHub 存储库。 -2. 在创建应用程序时,Dokploy 会自动检索可用的存储库和分支。 - -## Git - -对于来自任何 Git 存储库的部署,无论是公共的还是私有的,您可以使用 SSH 或 HTTPS: - -1. 输入存储库 URL。 -2. 指定您希望部署的分支。 - -### 私有存储库 - -对于私有存储库,请使用 SSH 进行身份验证。我们提供一个锁定图标以生成 SSH 密钥。 - - - -然后,您可以复制 SSH 密钥并将其粘贴到您账户的设置中。 - - - -这使您能够从私有存储库中拉取代码,这种方法几乎适用于所有提供商。 - -## 原始方法 - -您可以直接在代码编辑器中指定 Docker Compose 文件并触发部署。 diff --git a/apps/docs/content/docs/core/get-started/architecture.cn.mdx b/apps/docs/content/docs/core/get-started/architecture.cn.mdx deleted file mode 100644 index f9801ff..0000000 --- a/apps/docs/content/docs/core/get-started/architecture.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: '架构' -description: '概述 Dokploy 的核心架构组件。' ---- - -了解 Dokploy 的架构对于部署和扩展应用程序至关重要。以下是核心组件的示意图: - - - -## 安装过程 - -安装 Dokploy 时,它会自动设置以下组件: - -1. **Next.js 应用程序**:作为前端界面。利用 Next.js 提供集成的服务器端渲染体验,将 UI 和后端整合成一个统一的应用程序。 -2. **PostgreSQL 数据库**:作为 Dokploy 的主要数据库,因其稳健性和广泛采用而被选用。它存储所有配置和操作数据。 -3. **Redis 数据库**:用于管理部署队列。确保多个部署不会同时触发,避免服务器负载过高和潜在的冻结问题。 -4. **Traefik**:用作反向代理和负载均衡器。Traefik 促进动态路由和服务发现,通过 UI 允许声明性设置,简化配置过程。 - -## 目的和功能 - -Dokploy 架构中的每个组件都扮演着重要角色: - -- **Next.js**:提供可扩展且易于管理的前端框架,将服务器端和客户端逻辑封装在一个平台中,简化了部署和开发工作流。 -- **PostgreSQL**:提供可靠和安全的数据存储能力。在 Dokploy 中的使用确保了所有数据库操作的一致性和高性能。 -- **Redis**:处理并发和任务调度。通过使用 Redis,Dokploy 可以高效管理部署任务,避免在同时操作期间发生冲突和服务器过载。 -- **Traefik**:增强 Docker 集成。其声明性地读取和写入 Docker 配置的能力,使 Dokploy 能够自动化和简化网络流量管理和服务发现。 - -这种结构确保了 Dokploy 不仅在部署应用程序时高效,而且在处理大规模流量和数据时也具有稳健性。 diff --git a/apps/docs/content/docs/core/get-started/features.cn.mdx b/apps/docs/content/docs/core/get-started/features.cn.mdx deleted file mode 100644 index 355d0b6..0000000 --- a/apps/docs/content/docs/core/get-started/features.cn.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: '特点' -description: '探索 Dokploy 提供的全面功能套件,优化应用程序部署和管理。' ---- - -Dokploy 提供了一套全面的功能,旨在简化和增强应用程序部署过程。 - -## 应用程序部署 - -Dokploy 支持两种主要的应用程序部署方法: - -1. **应用程序**:这种简单的方法允许轻松部署。对于单个应用程序而言,它提供了接近即插即用的体验。 -2. **Docker Compose**:一种更高级的选项,需要创建 Dockerfiles 和 `docker-compose.yml`。此方法提供了更大的部署设置控制权和充分利用 Docker Compose 功能的能力。 - -### 应用程序管理 - -通过以下功能管理您的应用程序: - -**基本操作**: - 1. 部署、停止和删除应用程序。 - 2. 直接在应用程序容器中打开终端。 - -**源代码和构建配置**: - 1. 选择源代码提供商(GitHub、Git、Docker)。 - 2. 选择构建类型(Docker、Nixpacks、Heroku Buildpacks、Paketo Buildpacks)。 - -**环境管理**: - 1. 添加和管理环境变量。 - -**监控工具**: - 1. 监控 CPU、内存、磁盘和网络使用情况。 - -**日志**: - 1. 访问实时日志。 - -**部署**: - 1. 查看和管理部署,可以查看构建应用程序的日志。 - 2. 取消排队的部署,如果您有很多部署在队列中,尤其是在您的存储库中多次推送时,您可以取消即将到来的队列,但不能取消已在运行的部署。 - -**域名管理**: - 1. 添加、删除和生成域名。 - -**高级设置**: - 1. 自定义初始命令和集群设置。 - 2. 设置资源限制和管理数据持久化的卷。 - 3. 配置重定向、安全标头和端口设置。 - 4. 根据具体需求详细配置 Traefik。 - -### Docker Compose 管理 - -通过以下高级功能增强 Docker Compose 体验: - -**生命周期管理**: - 1. 部署、停止和删除 Docker Compose 设置。 - 2. 打开带有服务选择功能的终端。 - -**源代码配置**: - 1. 选择源代码提供商(GitHub、Git、Raw)。 - -**环境管理**: - 1. 添加和管理环境变量。 - -**监控工具**: - 1. 监控每个服务的 CPU、内存、磁盘和网络使用情况。 - -**日志**: - 1. 查看每个服务的实时日志。 - -**部署**: - 1. 查看和管理部署,可以查看构建应用程序的日志。 - 2. 取消排队的部署,如果您有很多部署在队列中,尤其是在您的存储库中多次推送时,您可以取消即将到来的队列,但不能取消已在运行的部署。 - -**高级设置**: - 1. 追加命令,默认情况下我们使用内部命令构建 Docker Compose,但您可以向现有命令追加命令。 - 2. 管理卷和挂载。 - -## 数据库部署 - -部署和管理各种数据库: - -**支持的数据库**: - 1. MySQL、PostgreSQL、MongoDB、Redis、MariaDB。 - -**常规管理**: - 1. 部署、停止和删除数据库。 - 2. 在数据库容器内打开终端。 - -**环境和监控**: - 1. 管理环境变量。 - 2. 监控 CPU、内存、磁盘和网络使用情况。 - -**备份和日志**: - 1. 配置手动和计划备份。 - 2. 查看实时日志。 - -**高级配置**: - 1. 使用自定义 Docker 镜像和初始命令。 - 2. 配置卷和资源限制。 - -这些功能旨在为您的部署环境提供灵活性和控制,确保 Dokploy 满足现代应用程序部署和管理的多样化需求。 diff --git a/apps/docs/content/docs/core/get-started/installation.cn.mdx b/apps/docs/content/docs/core/get-started/installation.cn.mdx deleted file mode 100644 index 5ed9fb2..0000000 --- a/apps/docs/content/docs/core/get-started/installation.cn.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "安装" -description: "借助这本易于上手的安装指南,几分钟内即可在您的服务器上启动并运行Dokploy。" ---- - - -## 设置您的环境 - -按照以下步骤在本地设置 Dokploy 并将其部署到您的服务器, 管理 Docker 容器和应用程序: - -{/* create a list please of the steps */} - -您需要按照顺序执行以下步骤: - -1. [Virtual Private Server (VPS)](#virtual-private-server-vps) -2. [Docker](#docker) - -## Virtual Private Server (VPS) - -有多个 VPS 提供商可供选择。以下是最常见的 VPS 提供商列表: - -我们已经在两个 Linux Distros 上进行了测试: - -- Ubuntu Server 20.04 LTS -- Debian 10 - -### 服务商 - -- [DigitalOcean](https://www.digitalocean.com/pricing/droplets#basic-droplets) -- [Hetzner](https://www.hetzner.com/cloud/) -- [Linode](https://www.linode.com/es/pricing/#compute-shared) -- [Vultr](https://www.vultr.com/pricing/#cloud-compute) -- [Scaleway](https://www.scaleway.com/en/pricing/?tags=baremetal,available) -- [Google Cloud](https://cloud.google.com/) -- [AWS](https://aws.amazon.com/ec2/pricing/) -- [阿里云](https://www.aliyun.com/) -- [腾讯云](https://cloud.tencent.com/) - -### 要求 - -为了确保 Dokploy 的流畅体验,您的服务器应该至少有 2 GB RAM 和 30 GB 磁盘空间。该规范有助于处理 Docker 在构建期间消耗的资源并防止系统假死。 - -import { Callout } from 'fumadocs-ui/components/callout'; - - - -**建议:** 为了实现成本效率和可靠的服务,我们推荐 Hetzner 作为最佳物有所值的 VPS 提供商(需要信用卡)。 - - - -### Docker - -Dokploy 利用 Docker,因此在您的服务器上安装 Docker 至关重要。如果尚未安装 Docker,请使用以下命令自动安装: - -```bash -curl -sSL https://dokploy.com/install.sh | sh -``` - -## 完成设置 - -运行安装脚本后,Dokploy 及其依赖项将在您的服务器上设置。以下是如何完成设置并开始使用 Dokploy: - -### 访问 Dokploy - -打开您的网络浏览器并导航至 `http://your-ip-from-your-vps:3000`。 您将被引导到初始设置页面,在其中您可以配置 Dokploy 的管理帐号。 - -### 初始配置 - -1. **创建管理员帐号:** 填写必要的详细信息以设置您的管理员帐户。 该帐户将成为 Dokploy 的管理员帐户。 - -{/* ![域名 dokpoly 配置](../../../../assets/images/setup.png) */} - \ No newline at end of file diff --git a/apps/docs/content/docs/core/get-started/introduction.cn.mdx b/apps/docs/content/docs/core/get-started/introduction.cn.mdx deleted file mode 100644 index 657728a..0000000 --- a/apps/docs/content/docs/core/get-started/introduction.cn.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Dokploy 文档 -description: "了解如何使用Dokploy部署应用程序, Dokploy是Heroku、Vercel和Netlify的开源替代品。" ---- - -import { Card, Cards } from 'fumadocs-ui/components/card'; - -## 欢迎来到 Dokploy - -Dokploy 是一款稳定、易于使用的部署解决方案,旨在简化应用程序管理流程。 可将 Dokploy 视为 Heroku、Vercel 和 Netliify 等平台的免费可托管替代品, 使用稳定的 [Docker](https://www.docker.com/) 和灵活的 [Traefik](https://traefik.io/) 构建. - -![Logo](/logo.png) - -## 为什么选择 Dokploy? - -- **简单:** 简单的设置、管理、部署。 -- **灵活:** 支持广泛的应用程序和数据库。 -- **开源:** 免费开源软件,可供任何人使用。 - -## 设置 Dokploy - -开始使用 Dokploy 很简单。 遵循我们的指南有效地安装和配置您的应用程序和数据库。 - -## 开始 - -跟随我,一起开始吧。 - - - - - - - - - - - - diff --git a/apps/docs/content/docs/core/get-started/reset-password.cn.mdx b/apps/docs/content/docs/core/get-started/reset-password.cn.mdx deleted file mode 100644 index 4102fb9..0000000 --- a/apps/docs/content/docs/core/get-started/reset-password.cn.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "重置密码" -description: "重置您的密码以访问您的 Dokploy 帐户。" ---- - -## 重置密码 - -要重置密码,请执行以下步骤: - -1. 登录您的 VPS。 -2. 运行`docker ps`获取 dokploy 容器的容器 ID。 -3. 运行 `docker exec -it bash -c "pnpm run reset-password"` 打开 dokploy 容器中的 shell。 -4. 它将显示随机密码。 复制它并使用它再次访问仪表板。 diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index 79de7be..955e703 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -1,4 +1,4 @@ -import createMDX from "fumadocs-mdx/config"; +import { createMDX } from "fumadocs-mdx/next"; const withMDX = createMDX(); diff --git a/biome.json b/biome.json index b6f6c41..a6fa085 100644 --- a/biome.json +++ b/biome.json @@ -1,7 +1,14 @@ { "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "files": { - "ignore": ["node_modules/**", ".next/**", "drizzle/**", ".docker", "dist"] + "ignore": [ + "node_modules/**", + ".source", + ".next/**", + "drizzle/**", + ".docker", + "dist" + ] }, "organizeImports": { "enabled": true diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81800e8..0c709b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,7 +17,7 @@ importers: version: 1.8.3 '@commitlint/cli': specifier: ^19.3.0 - version: 19.3.0(@types/node@18.19.42)(typescript@5.5.3) + version: 19.3.0(@types/node@18.19.42)(typescript@5.6.3) '@commitlint/config-conventional': specifier: ^19.2.2 version: 19.2.2 @@ -35,22 +35,22 @@ importers: dependencies: fumadocs-core: specifier: ^12.5.6 - version: 12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fumadocs-mdx: specifier: ^8.2.34 - version: 8.2.34(fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 8.2.34(acorn@8.12.1)(fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fumadocs-openapi: specifier: ^3.3.0 version: 3.3.0 fumadocs-ui: specifier: ^12.5.6 - version: 12.5.6(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7) + version: 12.5.6(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7) lucide-react: specifier: ^0.394.0 version: 0.394.0(react@18.3.1) next: specifier: ^14.2.4 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -80,6 +80,64 @@ importers: specifier: ^5.4.5 version: 5.5.3 + apps/docs-v2: + dependencies: + fumadocs-core: + specifier: 14.3.1 + version: 14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-mdx: + specifier: 11.1.1 + version: 11.1.1(acorn@8.12.1)(fumadocs-core@14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + fumadocs-openapi: + specifier: 5.5.9 + version: 5.5.9(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.14) + fumadocs-ui: + specifier: 14.3.1 + version: 14.3.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.14) + lucide-react: + specifier: ^0.456.0 + version: 0.456.0(react@18.3.1) + next: + specifier: 15.0.3 + version: 15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + shiki: + specifier: 1.22.2 + version: 1.22.2 + devDependencies: + '@types/mdx': + specifier: ^2.0.13 + version: 2.0.13 + '@types/node': + specifier: 22.9.0 + version: 22.9.0 + '@types/react': + specifier: 18.3.5 + version: 18.3.5 + '@types/react-dom': + specifier: 18.3.0 + version: 18.3.0 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + tailwindcss: + specifier: ^3.4.14 + version: 3.4.14 + tsx: + specifier: ^4.19.2 + version: 4.19.2 + typescript: + specifier: ^5.6.3 + version: 5.6.3 + apps/website: dependencies: '@headlessui/react': @@ -120,7 +178,7 @@ importers: version: 20.4.6 autoprefixer: specifier: ^10.4.12 - version: 10.4.19(postcss@8.4.40) + version: 10.4.19(postcss@8.4.47) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -183,8 +241,8 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@apidevtools/json-schema-ref-parser@11.6.4': - resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==} + '@apidevtools/json-schema-ref-parser@11.7.2': + resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} engines: {node: '>= 16'} '@babel/code-frame@7.24.7': @@ -199,10 +257,6 @@ packages: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} - engines: {node: '>=6.9.0'} - '@biomejs/biome@1.7.0': resolution: {integrity: sha512-mejiRhnAq6UrXtYvjWJUKdstcT58n0/FfKemFf3d2Ou0HxOdS88HQmWtQ/UgyZvOEPD572YbFTb6IheyROpqkw==} engines: {node: '>=14.21.3'} @@ -378,6 +432,297 @@ packages: resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} engines: {node: '>=v18'} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@floating-ui/core@1.6.5': resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==} @@ -408,6 +753,13 @@ packages: '@formatjs/intl-localematcher@0.5.4': resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + '@formatjs/intl-localematcher@0.5.7': + resolution: {integrity: sha512-GGFtfHGQVFe/niOZp24Kal5b2i36eE2bNL0xi9Sg/yd0TR8aLjcteApZdHmismP5QQax1cMnZM9yWySUUjJteA==} + + '@fumari/json-schema-to-typescript@1.1.1': + resolution: {integrity: sha512-vVnuwLqW8WJsg09EanNHnXnzsjYYsZE7JlD4M1sLvDnWGjvYJKNU6VpRqDxOiDChUszDZFKhxQSNYGShF0bKJg==} + engines: {node: '>=18.0.0'} + '@headlessui/react@1.7.19': resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} engines: {node: '>=10'} @@ -421,6 +773,111 @@ packages: peerDependencies: tailwindcss: ^3.0 + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -446,14 +903,23 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@mdx-js/mdx@3.0.1': - resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + '@mdx-js/mdx@3.1.0': + resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + + '@next/env@14.2.17': + resolution: {integrity: sha512-MCgO7VHxXo8sYR/0z+sk9fGyJJU636JyRmkjc7ZJY8Hurl8df35qG5hoAh5KMs75FLjhlEo9bb2LGe89Y/scDA==} '@next/env@14.2.2': resolution: {integrity: sha512-sk72qRfM1Q90XZWYRoJKu/UWlTgihrASiYw/scb15u+tyzcze3bOuJ/UV6TBOQEeUaxOkRqGeuGUdiiuxc5oqw==} - '@next/env@14.2.5': - resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + '@next/env@15.0.3': + resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==} + + '@next/swc-darwin-arm64@14.2.17': + resolution: {integrity: sha512-WiOf5nElPknrhRMTipXYTJcUz7+8IAjOYw3vXzj3BYRcVY0hRHKWgTgQ5439EvzQyHEko77XK+yN9x9OJ0oOog==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] '@next/swc-darwin-arm64@14.2.2': resolution: {integrity: sha512-3iPgMhzbalizGwHNFUcGnDhFPSgVBHQ8aqSTAMxB5BvJG0oYrDf1WOJZlbXBgunOEj/8KMVbejEur/FpvFsgFQ==} @@ -461,32 +927,50 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@14.2.5': - resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + '@next/swc-darwin-arm64@15.0.3': + resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-x64@14.2.17': + resolution: {integrity: sha512-29y425wYnL17cvtxrDQWC3CkXe/oRrdt8ie61S03VrpwpPRI0XsnTvtKO06XCisK4alaMnZlf8riwZIbJTaSHQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-darwin-x64@14.2.2': resolution: {integrity: sha512-x7Afi/jt0ZBRUZHTi49yyej4o8znfIMHO4RvThuoc0P+uli8Jd99y5GKjxoYunPKsXL09xBXEM1+OQy2xEL0Ag==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@14.2.5': - resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + '@next/swc-darwin-x64@15.0.3': + resolution: {integrity: sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-linux-arm64-gnu@14.2.17': + resolution: {integrity: sha512-SSHLZls3ZwNEHsc+d0ynKS+7Af0Nr8+KTUBAy9pm6xz9SHkJ/TeuEg6W3cbbcMSh6j4ITvrjv3Oi8n27VR+IPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-gnu@14.2.2': resolution: {integrity: sha512-zbfPtkk7L41ODMJwSp5VbmPozPmMMQrzAc0HAUomVeVIIwlDGs/UCqLJvLNDt4jpWgc21SjjyIn762lNGrMaUA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@14.2.5': - resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + '@next/swc-linux-arm64-gnu@15.0.3': + resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.17': + resolution: {integrity: sha512-VFge37us5LNPatB4F7iYeuGs9Dprqe4ZkW7lOEJM91r+Wf8EIdViWHLpIwfdDXinvCdLl6b4VyLpEBwpkctJHA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -497,20 +981,32 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.5': - resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + '@next/swc-linux-arm64-musl@15.0.3': + resolution: {integrity: sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-x64-gnu@14.2.17': + resolution: {integrity: sha512-aaQlpxUVb9RZ41adlTYVQ3xvYEfBPUC8+6rDgmQ/0l7SvK8S1YNJzPmDPX6a4t0jLtIoNk7j+nroS/pB4nx7vQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-gnu@14.2.2': resolution: {integrity: sha512-NqWOHqqq8iC9tuHvZxjQ2tX+jWy2X9y8NX2mcB4sj2bIccuCxbIZrU/ThFPZZPauygajZuVQ6zediejQHwZHwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.5': - resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + '@next/swc-linux-x64-gnu@15.0.3': + resolution: {integrity: sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.17': + resolution: {integrity: sha512-HSyEiFaEY3ay5iATDqEup5WAfrhMATNJm8dYx3ZxL+e9eKv10XKZCwtZByDoLST7CyBmyDz+OFJL1wigyXeaoA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -521,34 +1017,46 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.5': - resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + '@next/swc-linux-x64-musl@15.0.3': + resolution: {integrity: sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-win32-arm64-msvc@14.2.17': + resolution: {integrity: sha512-h5qM9Btqv87eYH8ArrnLoAHLyi79oPTP2vlGNSg4CDvUiXgi7l0+5KuEGp5pJoMhjuv9ChRdm7mRlUUACeBt4w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-arm64-msvc@14.2.2': resolution: {integrity: sha512-TZSh/48SfcLEQ4rD25VVn2kdIgUWmMflRX3OiyPwGNXn3NiyPqhqei/BaqCYXViIQ+6QsG9R0C8LftMqy8JPMA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@14.2.5': - resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + '@next/swc-win32-arm64-msvc@15.0.3': + resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-ia32-msvc@14.2.17': + resolution: {integrity: sha512-BD/G++GKSLexQjdyoEUgyo5nClU7er5rK0sE+HlEqnldJSm96CIr/+YOTT063LVTT/dUOeQsNgp5DXr86/K7/A==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-ia32-msvc@14.2.2': resolution: {integrity: sha512-M0tBVNMEBJN2ZNQWlcekMn6pvLria7Sa2Fai5znm7CCJz4pP3lrvlSxhKdkCerk0D9E0bqx5yAo3o2Q7RrD4gA==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.5': - resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + '@next/swc-win32-x64-msvc@14.2.17': + resolution: {integrity: sha512-vkQfN1+4V4KqDibkW2q0sJ6CxQuXq5l2ma3z0BRcfIqkAMZiiW67T9yCpwqJKP68QghBtPEFjPAlaqe38O6frw==} engines: {node: '>= 10'} - cpu: [ia32] + cpu: [x64] os: [win32] '@next/swc-win32-x64-msvc@14.2.2': @@ -557,8 +1065,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@14.2.5': - resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + '@next/swc-win32-x64-msvc@15.0.3': + resolution: {integrity: sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -575,6 +1083,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@orama/orama@3.0.1': + resolution: {integrity: sha512-18hl0MiCLmumODHjrLzSdTb1Ny3Dh8tn44jwgx0LksCdvVAsr3jQvfr+hwrE7bVkap0wPELb/dnuJjvupKxheQ==} + engines: {node: '>= 16.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -582,25 +1094,9 @@ packages: '@radix-ui/number@1.1.0': resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - '@radix-ui/react-accordion@1.2.0': - resolution: {integrity: sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-accordion@1.2.1': resolution: {integrity: sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==} peerDependencies: @@ -640,19 +1136,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.0': - resolution: {integrity: sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-collapsible@1.1.1': resolution: {integrity: sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==} peerDependencies: @@ -679,15 +1162,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-compose-refs@1.1.0': resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: @@ -697,15 +1171,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-context@1.1.0': resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: @@ -724,21 +1189,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dialog@1.1.1': - resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} peerDependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 @@ -759,19 +1211,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dismissable-layer@1.1.0': resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: @@ -798,15 +1237,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-focus-guards@1.1.0': resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} peerDependencies: @@ -816,18 +1246,14 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} peerDependencies: '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true '@radix-ui/react-focus-scope@1.1.0': resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} @@ -842,15 +1268,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-id@1.1.0': resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: @@ -860,8 +1277,21 @@ packages: '@types/react': optional: true - '@radix-ui/react-popover@1.1.1': - resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} peerDependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 @@ -886,19 +1316,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-portal@1.1.1': resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} peerDependencies: @@ -925,32 +1342,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-presence@1.1.1': resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} peerDependencies: @@ -964,19 +1355,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-primitive@2.0.0': resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: @@ -1003,19 +1381,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.1.0': - resolution: {integrity: sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-scroll-area@1.2.0': resolution: {integrity: sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==} peerDependencies: @@ -1042,14 +1407,18 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} peerDependencies: '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': 18.3.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true '@radix-ui/react-slot@1.1.0': resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} @@ -1073,19 +1442,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tabs@1.1.0': - resolution: {integrity: sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==} - peerDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-tabs@1.1.1': resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} peerDependencies: @@ -1112,15 +1468,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-callback-ref@1.1.0': resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: @@ -1130,15 +1477,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-controllable-state@1.1.0': resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: @@ -1148,15 +1486,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-escape-keydown@1.1.0': resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: @@ -1166,15 +1495,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-layout-effect@1.1.0': resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: @@ -1227,18 +1547,33 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@shikijs/core@1.12.0': - resolution: {integrity: sha512-mc1cLbm6UQ8RxLc0dZES7v5rkH+99LxQp/ZvTqV3NLyYsO/fD6JhEflP1H5b2SDq9gI0+0G36AVZWxvounfR9w==} + '@shikijs/core@1.22.2': + resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} - '@shikijs/rehype@1.12.0': - resolution: {integrity: sha512-DX42LdI9OB/0X5euLjRJfgoYZukqGn1GBkgiyvQkv4bHDCST0BzQMcdL80erp5as9R6bp7+2/cKlA+TmQTySbQ==} + '@shikijs/engine-javascript@1.22.2': + resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} - '@shikijs/transformers@1.12.0': - resolution: {integrity: sha512-ZS6RzDCWbnDljViMaeuraGaoMesCzDxzO2Slhpvic6j+Wqq4RXfQgb2ITTSrtBjv2HGCLP22mvXydtWCOKea8g==} + '@shikijs/engine-oniguruma@1.22.2': + resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} + + '@shikijs/rehype@1.22.2': + resolution: {integrity: sha512-A0RHgiYR5uiHvddwHehBN9j8PhOvfT6/GebSTWrapur6M+fD/4i3mlfUv7aFK4b+4GQ1R42L8fC5N98whZjNcg==} + + '@shikijs/transformers@1.22.2': + resolution: {integrity: sha512-8f78OiBa6pZDoZ53lYTmuvpFPlWtevn23bzG+azpPVvZg7ITax57o/K3TC91eYL3OMJOO0onPbgnQyZjRos8XQ==} + + '@shikijs/types@1.22.2': + resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} + + '@shikijs/vscode-textmate@9.3.0': + resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -1250,10 +1585,10 @@ packages: '@tabler/icons@3.21.0': resolution: {integrity: sha512-5+GkkmWCr1wgMor5cOF1/YYflTQdc15y10FUikJ3HW8hDiFjfbuoAHJi17FT1vwsr1sA78rkJMn+fDoOOjnnPA==} - '@tailwindcss/typography@0.5.13': - resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} + '@tailwindcss/typography@0.5.15': + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' '@tanstack/react-virtual@3.8.3': resolution: {integrity: sha512-9ICwbDUUzN99CJIGc373i8NLoj6zFTKI2Hlcmo0+lCSAhPQ5mxq4dGOMKmLYoEFyHcGQ64Bd6ZVbnPpM6lNK5w==} @@ -1285,8 +1620,8 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash@4.17.4': - resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} + '@types/lodash@4.17.13': + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1300,12 +1635,12 @@ packages: '@types/node@18.19.42': resolution: {integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg==} - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} - '@types/node@20.4.6': resolution: {integrity: sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA==} + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -1406,6 +1741,13 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -1428,6 +1770,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -1443,6 +1790,9 @@ packages: caniuse-lite@1.0.30001643: resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} + caniuse-lite@1.0.30001679: + resolution: {integrity: sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1470,6 +1820,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} @@ -1500,11 +1854,11 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - cmdk@1.0.0: - resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + cmdk@1.0.4: + resolution: {integrity: sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -1522,6 +1876,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -1621,6 +1982,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -1643,6 +2008,9 @@ packages: electron-to-chromium@1.5.2: resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==} + electron-to-chromium@1.5.55: + resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} + emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -1677,10 +2045,30 @@ packages: es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -1707,6 +2095,9 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} @@ -1807,6 +2198,33 @@ packages: react: '>= 18' react-dom: '>= 18' + fumadocs-core@14.3.1: + resolution: {integrity: sha512-weYUh75oX610gw0Bq7qqVB1+5Hw6XBdshBO7azUxTejWSUuldW7wdAtGnQMet+5rmj8vWKcGpLWQHYTgciT4vg==} + peerDependencies: + '@oramacloud/client': 1.x.x + algoliasearch: 4.24.0 + next: 14.x.x || 15.x.x + react: '>= 18' + react-dom: '>= 18' + peerDependenciesMeta: + '@oramacloud/client': + optional: true + algoliasearch: + optional: true + next: + optional: true + react: + optional: true + react-dom: + optional: true + + fumadocs-mdx@11.1.1: + resolution: {integrity: sha512-78Nu/PHfBaRnPWTDTGVVZrG+A7rfK3NU7DX1aCEnZHEfwuY0NmuIOtDIYcoidZxjc88DnoewV+cJoBNn7I/D8Q==} + hasBin: true + peerDependencies: + fumadocs-core: ^14.0.0 + next: 14.x.x || 15.x.x + fumadocs-mdx@8.2.34: resolution: {integrity: sha512-vq7gd16z3fxMCjkjzFSTkqbQXbhZ3ucNvXAWdQxhkbhRbx3EAcmokkbcySsqVdqHPDIm0eGmCV33fQJsku1DgA==} peerDependencies: @@ -1816,6 +2234,13 @@ packages: fumadocs-openapi@3.3.0: resolution: {integrity: sha512-a6G1+FoBA4kH2HnjlgwmPpO9z4itrKPRENkVqxJPsOCwpCKdHZc6Tpwogo9CXvEifGqjAvyTbhNPy0N3+YmHLg==} + fumadocs-openapi@5.5.9: + resolution: {integrity: sha512-MDhdF0LogKPfyofbrBX175wi7dZoC+o87SMwalfoxwLo6uL1B9J+mX1maM5AIR31EL4KPOn9YuqUNAfBDtjmhg==} + peerDependencies: + next: 14.x.x || 15.x.x + react: '>= 18' + react-dom: '>= 18' + fumadocs-ui@12.5.6: resolution: {integrity: sha512-8kYsrSCbRuo2rS09xTAb5HejtH8QDsSlqWGC8k+D9GI4WdAW7kAQCg6k9idnhhP/nq3QOsyMtvpoUGkje91bpQ==} peerDependencies: @@ -1823,6 +2248,17 @@ packages: react: '>= 18' react-dom: '>= 18' + fumadocs-ui@14.3.1: + resolution: {integrity: sha512-wN4lt8GzSlxLF/viSWyLzMAGA2l9DtE5yjH/uIjeytAP887Cq/TLKmAXEY2X5IpEuUBdFfHuXfU0objUM5RR5g==} + peerDependencies: + next: 14.x.x || 15.x.x + react: '>= 18' + react-dom: '>= 18' + tailwindcss: ^3.4.14 + peerDependenciesMeta: + tailwindcss: + optional: true + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1842,6 +2278,9 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} engines: {node: '>=16'} @@ -1884,15 +2323,21 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + hast-util-to-jsx-runtime@2.3.2: + resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -1902,6 +2347,11 @@ packages: engines: {node: '>=18'} hasBin: true + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -1909,6 +2359,9 @@ packages: import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -1934,6 +2387,9 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -1987,9 +2443,6 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2130,6 +2583,16 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lucide-react@0.455.0: + resolution: {integrity: sha512-XQoi58X4COfjy6s1P4TVsXMhU2r1KsfUTRFyds/yJvdzBNOfu0F9RRIas626T8UaNZzEv4llF7ivh4uLkYp3rw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + lucide-react@0.456.0: + resolution: {integrity: sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -2309,6 +2772,10 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -2351,6 +2818,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + next-intl@3.19.0: resolution: {integrity: sha512-ciiHYBwR3ztoMdJZgFmt0LII7GYTsLA/MFt3y681q4Lw4fI5EYNCZSYb9XA/BIt3ZX5S1TLUP1uOERy1dIQvMg==} peerDependencies: @@ -2363,9 +2834,33 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 + next-themes@0.4.3: + resolution: {integrity: sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + next@14.2.17: + resolution: {integrity: sha512-hNo/Zy701DDO3nzKkPmsLRlDfNCtb1OJxFUvjGEl04u7SFa3zwC6hqsOUzMajcaEOEV8ey1GjvByvrg0Qr5AiQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + next@14.2.2: resolution: {integrity: sha512-oGwUaa2bCs47FbuxWMpOoXtBMPYpvTPgdZr3UAo+pu7Ns00z9otmYpoeV1HEiYL06AlRQQIA/ypK526KjJfaxg==} engines: {node: '>=18.17.0'} @@ -2384,21 +2879,24 @@ packages: sass: optional: true - next@14.2.5: - resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} - engines: {node: '>=18.17.0'} + next@15.0.3: + resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-66855b96-20241106 + react-dom: ^18.2.0 || 19.0.0-rc-66855b96-20241106 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -2445,6 +2943,9 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + openapi-sampler@1.5.1: resolution: {integrity: sha512-tIWIrZUKNAsbqf3bd9U1oH6JEXo8LNYuDlXw26By67EygpjT+ArFnsxxyTMjFWRfbqo5ozkvgSQDK69Gd8CddA==} @@ -2489,12 +2990,12 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -2561,6 +3062,10 @@ packages: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + prettier-plugin-tailwindcss@0.5.14: resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} engines: {node: '>=14.21.3'} @@ -2624,6 +3129,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + react-dom@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -2637,8 +3145,14 @@ packages: react-ga4@2.1.0: resolution: {integrity: sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==} - react-medium-image-zoom@5.2.8: - resolution: {integrity: sha512-ivnubZi/2GQcMTneQy5gjLxEQLenKu081844qqZ7/JvLxSh5YPF1TLq7s+5rc54dKa0jjPT8Zm2tiC0Sda6eIA==} + react-hook-form@7.53.2: + resolution: {integrity: sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-medium-image-zoom@5.2.10: + resolution: {integrity: sha512-JBYf4u0zsocezIDtrjwStD+8sX+c8XuLsdz+HxPbojRj0sCicua0XOQKysuPetoFyX+YgStfj+vEtZ+699O/pg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2653,26 +3167,6 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.10: - resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': 18.3.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-remove-scroll@2.5.7: resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} engines: {node: '>=10'} @@ -2683,6 +3177,16 @@ packages: '@types/react': optional: true + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': 18.3.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-style-singleton@2.2.1: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -2708,8 +3212,27 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.0: + resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex@4.4.0: + resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} @@ -2720,8 +3243,8 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -2745,6 +3268,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2778,6 +3304,15 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2786,13 +3321,16 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.12.0: - resolution: {integrity: sha512-BuAxWOm5JhRcbSOl7XCei8wGjgJJonnV0oipUupPY58iULxUGyHhW5CF+9FRMuM1pcJ5cGEJGll1LusX6FwpPA==} + shiki@1.22.2: + resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -2805,6 +3343,10 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} @@ -2877,6 +3419,19 @@ packages: babel-plugin-macros: optional: true + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -2898,11 +3453,19 @@ packages: tailwind-merge@2.4.0: resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} + tailwind-merge@2.5.4: + resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' + tailwindcss@3.4.14: + resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + engines: {node: '>=14.0.0'} + hasBin: true + tailwindcss@3.4.7: resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} engines: {node: '>=14.0.0'} @@ -2942,6 +3505,11 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -2955,9 +3523,17 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -2992,6 +3568,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + use-callback-ref@1.3.2: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -3083,7 +3665,7 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@apidevtools/json-schema-ref-parser@11.6.4': + '@apidevtools/json-schema-ref-parser@11.7.2': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 @@ -3103,10 +3685,6 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/runtime@7.25.0': - dependencies: - regenerator-runtime: 0.14.1 - '@biomejs/biome@1.7.0': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.7.0 @@ -3177,11 +3755,11 @@ snapshots: '@biomejs/cli-win32-x64@1.8.3': optional: true - '@commitlint/cli@19.3.0(@types/node@18.19.42)(typescript@5.5.3)': + '@commitlint/cli@19.3.0(@types/node@18.19.42)(typescript@5.6.3)': dependencies: '@commitlint/format': 19.3.0 '@commitlint/lint': 19.2.2 - '@commitlint/load': 19.2.0(@types/node@18.19.42)(typescript@5.5.3) + '@commitlint/load': 19.2.0(@types/node@18.19.42)(typescript@5.6.3) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -3228,15 +3806,15 @@ snapshots: '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 - '@commitlint/load@19.2.0(@types/node@18.19.42)(typescript@5.5.3)': + '@commitlint/load@19.2.0(@types/node@18.19.42)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 19.0.3 '@commitlint/execute-rule': 19.0.0 '@commitlint/resolve-extends': 19.1.0 '@commitlint/types': 19.0.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.5.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.42)(cosmiconfig@9.0.0(typescript@5.5.3))(typescript@5.5.3) + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.42)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -3288,6 +3866,155 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.6.3 + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.24.0': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.24.0': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.24.0': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.24.0': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.24.0': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.24.0': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.24.0': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.24.0': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.24.0': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.24.0': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.24.0': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.24.0': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.24.0': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.24.0': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.24.0': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.24.0': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.24.0': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.24.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.24.0': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.24.0': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.24.0': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.24.0': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.24.0': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.24.0': + optional: true + '@floating-ui/core@1.6.5': dependencies: '@floating-ui/utils': 0.2.5 @@ -3335,6 +4062,16 @@ snapshots: dependencies: tslib: 2.6.3 + '@formatjs/intl-localematcher@0.5.7': + dependencies: + tslib: 2.6.3 + + '@fumari/json-schema-to-typescript@1.1.1': + dependencies: + '@apidevtools/json-schema-ref-parser': 11.7.2 + js-yaml: 4.1.0 + prettier: 3.3.3 + '@headlessui/react@1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@tanstack/react-virtual': 3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -3346,6 +4083,81 @@ snapshots: dependencies: tailwindcss: 3.4.7 + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3374,7 +4186,7 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@mdx-js/mdx@3.0.1': + '@mdx-js/mdx@3.1.0(acorn@8.12.1)': dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.5 @@ -3382,17 +4194,18 @@ snapshots: '@types/mdx': 2.0.13 collapse-white-space: 2.1.0 devlop: 1.1.0 - estree-util-build-jsx: 3.0.1 estree-util-is-identifier-name: 3.0.0 - estree-util-to-js: 2.0.0 + estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 - periscopic: 3.1.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.0(acorn@8.12.1) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 remark-mdx: 3.0.1 remark-parse: 11.0.0 - remark-rehype: 11.1.0 + remark-rehype: 11.1.1 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 @@ -3400,64 +4213,91 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.2 transitivePeerDependencies: + - acorn - supports-color + '@next/env@14.2.17': {} + '@next/env@14.2.2': {} - '@next/env@14.2.5': {} + '@next/env@15.0.3': {} + + '@next/swc-darwin-arm64@14.2.17': + optional: true '@next/swc-darwin-arm64@14.2.2': optional: true - '@next/swc-darwin-arm64@14.2.5': + '@next/swc-darwin-arm64@15.0.3': + optional: true + + '@next/swc-darwin-x64@14.2.17': optional: true '@next/swc-darwin-x64@14.2.2': optional: true - '@next/swc-darwin-x64@14.2.5': + '@next/swc-darwin-x64@15.0.3': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.17': optional: true '@next/swc-linux-arm64-gnu@14.2.2': optional: true - '@next/swc-linux-arm64-gnu@14.2.5': + '@next/swc-linux-arm64-gnu@15.0.3': + optional: true + + '@next/swc-linux-arm64-musl@14.2.17': optional: true '@next/swc-linux-arm64-musl@14.2.2': optional: true - '@next/swc-linux-arm64-musl@14.2.5': + '@next/swc-linux-arm64-musl@15.0.3': + optional: true + + '@next/swc-linux-x64-gnu@14.2.17': optional: true '@next/swc-linux-x64-gnu@14.2.2': optional: true - '@next/swc-linux-x64-gnu@14.2.5': + '@next/swc-linux-x64-gnu@15.0.3': + optional: true + + '@next/swc-linux-x64-musl@14.2.17': optional: true '@next/swc-linux-x64-musl@14.2.2': optional: true - '@next/swc-linux-x64-musl@14.2.5': + '@next/swc-linux-x64-musl@15.0.3': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.17': optional: true '@next/swc-win32-arm64-msvc@14.2.2': optional: true - '@next/swc-win32-arm64-msvc@14.2.5': + '@next/swc-win32-arm64-msvc@15.0.3': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.17': optional: true '@next/swc-win32-ia32-msvc@14.2.2': optional: true - '@next/swc-win32-ia32-msvc@14.2.5': + '@next/swc-win32-x64-msvc@14.2.17': optional: true '@next/swc-win32-x64-msvc@14.2.2': optional: true - '@next/swc-win32-x64-msvc@14.2.5': + '@next/swc-win32-x64-msvc@15.0.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -3472,34 +4312,15 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@orama/orama@3.0.1': {} + '@pkgjs/parseargs@0.11.0': optional: true '@radix-ui/number@1.1.0': {} - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-accordion@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -3517,6 +4338,23 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 + '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -3547,22 +4385,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-collapsible@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -3579,6 +4401,22 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 + '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) @@ -3603,13 +4441,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: react: 18.2.0 @@ -3622,13 +4453,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-context@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-context@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: react: 18.2.0 @@ -3647,47 +4471,30 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-context@1.1.1(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.5)(react@18.3.1) - aria-hidden: 1.2.4 react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.5)(react@18.3.1) optionalDependencies: '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.5)(react@18.3.1) '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.5)(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1) optionalDependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 @@ -3704,20 +4511,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -3731,19 +4524,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -3757,12 +4537,18 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.5)(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: @@ -3770,24 +4556,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.5)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.5)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) @@ -3810,14 +4584,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-id@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-id@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.2.0) @@ -3832,25 +4598,47 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.5)(react@18.3.1) '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.5)(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1) optionalDependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 @@ -3891,16 +4679,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -3911,16 +4689,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -3931,20 +4699,9 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3962,10 +4719,10 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: @@ -4024,23 +4781,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-scroll-area@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-scroll-area@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/number': 1.1.0 @@ -4058,6 +4798,23 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 + '@radix-ui/react-scroll-area@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + '@radix-ui/react-select@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/number': 1.1.0 @@ -4087,13 +4844,34 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-slot@1.0.2(@types/react@18.3.5)(react@18.3.1)': + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1) optionalDependencies: '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 '@radix-ui/react-slot@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: @@ -4124,22 +4902,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-tabs@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -4156,6 +4918,22 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + '@radix-ui/react-tooltip@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -4176,13 +4954,6 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: react: 18.2.0 @@ -4195,14 +4966,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.2.0) @@ -4217,14 +4980,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.5)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.2.0) @@ -4239,13 +4994,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.5 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: react: 18.2.0 @@ -4264,6 +5012,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.5)(react@18.2.0)': dependencies: '@radix-ui/rect': 1.1.0 @@ -4301,27 +5055,63 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + '@radix-ui/rect@1.1.0': {} - '@shikijs/core@1.12.0': + '@shikijs/core@1.22.2': dependencies: + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 - '@shikijs/rehype@1.12.0': + '@shikijs/engine-javascript@1.22.2': dependencies: - '@shikijs/transformers': 1.12.0 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + + '@shikijs/rehype@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 '@types/hast': 3.0.4 - hast-util-to-string: 3.0.0 - shiki: 1.12.0 + hast-util-to-string: 3.0.1 + shiki: 1.22.2 unified: 11.0.5 unist-util-visit: 5.0.0 - '@shikijs/transformers@1.12.0': + '@shikijs/transformers@1.22.2': dependencies: - shiki: 1.12.0 + shiki: 1.22.2 + + '@shikijs/types@1.22.2': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.0': {} '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.6.3 + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 @@ -4334,7 +5124,15 @@ snapshots: '@tabler/icons@3.21.0': {} - '@tailwindcss/typography@0.5.13(tailwindcss@3.4.7)': + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.14 + + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.7)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 @@ -4356,7 +5154,7 @@ snapshots: '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.14.10 + '@types/node': 18.19.42 '@types/debug@4.1.12': dependencies: @@ -4374,7 +5172,7 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/lodash@4.17.4': {} + '@types/lodash@4.17.13': {} '@types/mdast@4.0.4': dependencies: @@ -4388,12 +5186,12 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.14.10': - dependencies: - undici-types: 5.26.5 - '@types/node@20.4.6': {} + '@types/node@22.9.0': + dependencies: + undici-types: 6.19.8 + '@types/prop-types@15.7.12': {} '@types/react-dom@18.3.0': @@ -4480,14 +5278,24 @@ snapshots: postcss: 8.4.40 postcss-value-parser: 4.2.0 - autoprefixer@10.4.19(postcss@8.4.40): + autoprefixer@10.4.19(postcss@8.4.47): dependencies: browserslist: 4.23.2 caniuse-lite: 1.0.30001643 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001679 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.47 postcss-value-parser: 4.2.0 bail@2.0.2: {} @@ -4511,6 +5319,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.2) + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001679 + electron-to-chromium: 1.5.55 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -4521,6 +5336,8 @@ snapshots: caniuse-lite@1.0.30001643: {} + caniuse-lite@1.0.30001679: {} + ccount@2.0.1: {} chalk@2.4.2: @@ -4551,6 +5368,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + class-variance-authority@0.7.0: dependencies: clsx: 2.0.0 @@ -4584,12 +5405,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + cmdk@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + use-sync-external-store: 1.2.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -4608,6 +5431,18 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + colorette@2.0.20: {} comma-separated-tokens@2.0.3: {} @@ -4638,21 +5473,21 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.42)(cosmiconfig@9.0.0(typescript@5.5.3))(typescript@5.5.3): + cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.42)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: '@types/node': 18.19.42 - cosmiconfig: 9.0.0(typescript@5.5.3) + cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 - typescript: 5.5.3 + typescript: 5.6.3 - cosmiconfig@9.0.0(typescript@5.5.3): + cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.6.3 cross-spawn@7.0.3: dependencies: @@ -4687,6 +5522,9 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.0.3: + optional: true + detect-node-es@1.1.0: {} devlop@1.1.0: @@ -4705,6 +5543,8 @@ snapshots: electron-to-chromium@1.5.2: {} + electron-to-chromium@1.5.55: {} + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} @@ -4744,8 +5584,78 @@ snapshots: es6-iterator: 2.0.3 es6-symbol: 3.1.4 + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.12.1 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.2 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + esbuild@0.24.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + escalade@3.1.2: {} + escalade@3.2.0: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@5.0.0: {} @@ -4772,6 +5682,11 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -4876,78 +5791,179 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@formatjs/intl-localematcher': 0.5.4 - '@shikijs/rehype': 1.12.0 - '@shikijs/transformers': 1.12.0 + '@formatjs/intl-localematcher': 0.5.7 + '@shikijs/rehype': 1.22.2 + '@shikijs/transformers': 1.22.2 flexsearch: 0.7.21 github-slugger: 2.0.0 negotiator: 0.6.3 - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) npm-to-yarn: 2.2.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.10(@types/react@18.3.5)(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1) remark: 15.0.1 remark-gfm: 4.0.0 remark-mdx: 3.0.1 scroll-into-view-if-needed: 3.1.0 - shiki: 1.12.0 + shiki: 1.22.2 swr: 2.2.5(react@18.3.1) unist-util-visit: 5.0.0 transitivePeerDependencies: - '@types/react' - supports-color - fumadocs-mdx@8.2.34(fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + fumadocs-core@14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@mdx-js/mdx': 3.0.1 + '@formatjs/intl-localematcher': 0.5.7 + '@orama/orama': 3.0.1 + '@shikijs/rehype': 1.22.2 + github-slugger: 2.0.0 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.2 + image-size: 1.1.1 + negotiator: 1.0.0 + react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1) + remark: 15.0.1 + remark-gfm: 4.0.0 + scroll-into-view-if-needed: 3.1.0 + shiki: 1.22.2 + unist-util-visit: 5.0.0 + optionalDependencies: + next: 15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - supports-color + + fumadocs-mdx@11.1.1(acorn@8.12.1)(fumadocs-core@14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + dependencies: + '@mdx-js/mdx': 3.1.0(acorn@8.12.1) + chokidar: 4.0.1 + cross-spawn: 7.0.3 + esbuild: 0.24.0 + estree-util-value-to-estree: 3.1.2 + fast-glob: 3.3.2 + fumadocs-core: 14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + gray-matter: 4.0.3 + micromatch: 4.0.8 + next: 15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + zod: 3.23.8 + transitivePeerDependencies: + - acorn + - supports-color + + fumadocs-mdx@8.2.34(acorn@8.12.1)(fumadocs-core@12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + dependencies: + '@mdx-js/mdx': 3.1.0(acorn@8.12.1) cross-spawn: 7.0.3 estree-util-value-to-estree: 3.1.2 fast-glob: 3.3.2 - fumadocs-core: 12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-core: 12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) gray-matter: 4.0.3 - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) zod: 3.23.8 transitivePeerDependencies: + - acorn - supports-color fumadocs-openapi@3.3.0: dependencies: - '@apidevtools/json-schema-ref-parser': 11.6.4 + '@apidevtools/json-schema-ref-parser': 11.7.2 fast-glob: 3.3.2 js-yaml: 4.1.0 json-schema-to-typescript: 14.1.0 openapi-sampler: 1.5.1 - fumadocs-ui@12.5.6(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7): + fumadocs-openapi@5.5.9(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.14): dependencies: - '@radix-ui/react-accordion': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) - '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-scroll-area': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tabs': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tailwindcss/typography': 0.5.13(tailwindcss@3.4.7) + '@apidevtools/json-schema-ref-parser': 11.7.2 + '@fumari/json-schema-to-typescript': 1.1.1 + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) class-variance-authority: 0.7.0 - cmdk: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fumadocs-core: 12.5.6(@types/react@18.3.5)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fast-glob: 3.3.2 + fumadocs-core: 14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-ui: 14.3.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.14) + github-slugger: 2.0.0 + hast-util-to-jsx-runtime: 2.3.2 + js-yaml: 4.1.0 + next: 15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + openapi-sampler: 1.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-hook-form: 7.53.2(react@18.3.1) + remark: 15.0.1 + remark-rehype: 11.1.1 + shiki: 1.22.2 + transitivePeerDependencies: + - '@oramacloud/client' + - '@types/react' + - '@types/react-dom' + - algoliasearch + - supports-color + - tailwindcss + + fumadocs-ui@12.5.6(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7): + dependencies: + '@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tailwindcss/typography': 0.5.15(tailwindcss@3.4.7) + class-variance-authority: 0.7.0 + cmdk: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-core: 12.5.6(@types/react@18.3.5)(next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lucide-react: 0.414.0(react@18.3.1) - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-medium-image-zoom: 5.2.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-medium-image-zoom: 5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) swr: 2.2.5(react@18.3.1) - tailwind-merge: 2.4.0 + tailwind-merge: 2.5.4 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - supports-color - tailwindcss + fumadocs-ui@14.3.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.14): + dependencies: + '@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tailwindcss/typography': 0.5.15(tailwindcss@3.4.14) + class-variance-authority: 0.7.0 + fumadocs-core: 14.3.1(@types/react@18.3.5)(next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lucide-react: 0.455.0(react@18.3.1) + next: 15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-themes: 0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-medium-image-zoom: 5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: 2.5.4 + optionalDependencies: + tailwindcss: 3.4.14 + transitivePeerDependencies: + - '@oramacloud/client' + - '@types/react' + - '@types/react-dom' + - algoliasearch + - supports-color + function-bind@1.1.2: {} get-caller-file@2.0.5: {} @@ -4958,6 +5974,10 @@ snapshots: get-stream@8.0.1: {} + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + git-raw-commits@4.0.0: dependencies: dargs: 8.1.0 @@ -5023,7 +6043,21 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-jsx-runtime@2.3.0: + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.2: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 @@ -5043,7 +6077,7 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-string@3.0.0: + hast-util-to-string@3.0.1: dependencies: '@types/hast': 3.0.4 @@ -5051,10 +6085,16 @@ snapshots: dependencies: '@types/hast': 3.0.4 + html-void-elements@3.0.0: {} + human-signals@5.0.0: {} husky@9.1.6: {} + image-size@1.1.1: + dependencies: + queue: 6.0.2 + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -5062,6 +6102,8 @@ snapshots: import-meta-resolve@4.1.0: {} + inherits@2.0.4: {} + ini@4.1.1: {} inline-style-parser@0.1.1: {} @@ -5088,6 +6130,9 @@ snapshots: is-arrayish@0.2.1: {} + is-arrayish@0.3.2: + optional: true + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -5124,10 +6169,6 @@ snapshots: is-promise@2.2.2: {} - is-reference@3.0.2: - dependencies: - '@types/estree': 1.0.5 - is-stream@3.0.0: {} is-text-path@2.0.0: @@ -5163,9 +6204,9 @@ snapshots: json-schema-to-typescript@14.1.0: dependencies: - '@apidevtools/json-schema-ref-parser': 11.6.4 + '@apidevtools/json-schema-ref-parser': 11.7.2 '@types/json-schema': 7.0.15 - '@types/lodash': 4.17.4 + '@types/lodash': 4.17.13 cli-color: 2.0.4 glob: 10.4.5 is-glob: 4.0.3 @@ -5270,6 +6311,14 @@ snapshots: dependencies: react: 18.3.1 + lucide-react@0.455.0(react@18.3.1): + dependencies: + react: 18.3.1 + + lucide-react@0.456.0(react@18.3.1): + dependencies: + react: 18.3.1 + markdown-extensions@2.0.0: {} markdown-table@3.0.3: {} @@ -5723,6 +6772,11 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -5751,6 +6805,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@1.0.0: {} + next-intl@3.19.0(next@14.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): dependencies: '@formatjs/intl-localematcher': 0.5.4 @@ -5764,8 +6820,38 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + next-themes@0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + next-tick@1.1.0: {} + next@14.2.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@next/env': 14.2.17 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001679 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.17 + '@next/swc-darwin-x64': 14.2.17 + '@next/swc-linux-arm64-gnu': 14.2.17 + '@next/swc-linux-arm64-musl': 14.2.17 + '@next/swc-linux-x64-gnu': 14.2.17 + '@next/swc-linux-x64-musl': 14.2.17 + '@next/swc-win32-arm64-msvc': 14.2.17 + '@next/swc-win32-ia32-msvc': 14.2.17 + '@next/swc-win32-x64-msvc': 14.2.17 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@14.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 14.2.2 @@ -5791,27 +6877,27 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.5 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 caniuse-lite: 1.0.30001643 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.5 - '@next/swc-darwin-x64': 14.2.5 - '@next/swc-linux-arm64-gnu': 14.2.5 - '@next/swc-linux-arm64-musl': 14.2.5 - '@next/swc-linux-x64-gnu': 14.2.5 - '@next/swc-linux-x64-musl': 14.2.5 - '@next/swc-win32-arm64-msvc': 14.2.5 - '@next/swc-win32-ia32-msvc': 14.2.5 - '@next/swc-win32-x64-msvc': 14.2.5 + '@next/swc-darwin-arm64': 15.0.3 + '@next/swc-darwin-x64': 15.0.3 + '@next/swc-linux-arm64-gnu': 15.0.3 + '@next/swc-linux-arm64-musl': 15.0.3 + '@next/swc-linux-x64-gnu': 15.0.3 + '@next/swc-linux-x64-musl': 15.0.3 + '@next/swc-win32-arm64-msvc': 15.0.3 + '@next/swc-win32-x64-msvc': 15.0.3 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -5848,6 +6934,10 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.4.0 + openapi-sampler@1.5.1: dependencies: '@types/json-schema': 7.0.15 @@ -5898,14 +6988,10 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 - picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} pidtree@0.6.0: {} @@ -5921,11 +7007,23 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.8 + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + postcss-js@4.0.1(postcss@8.4.40): dependencies: camelcase-css: 2.0.1 postcss: 8.4.40 + postcss-js@4.0.1(postcss@8.4.47): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.47 + postcss-load-config@4.0.2(postcss@8.4.40): dependencies: lilconfig: 3.1.2 @@ -5933,11 +7031,23 @@ snapshots: optionalDependencies: postcss: 8.4.40 + postcss-load-config@4.0.2(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + yaml: 2.4.5 + optionalDependencies: + postcss: 8.4.47 + postcss-nested@6.2.0(postcss@8.4.40): dependencies: postcss: 8.4.40 postcss-selector-parser: 6.1.1 + postcss-nested@6.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.1 + postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 @@ -5962,6 +7072,12 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier-plugin-tailwindcss@0.5.14(prettier@3.3.3): dependencies: prettier: 3.3.3 @@ -5972,6 +7088,10 @@ snapshots: queue-microtask@1.2.3: {} + queue@6.0.2: + dependencies: + inherits: 2.0.4 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 @@ -5986,7 +7106,11 @@ snapshots: react-ga4@2.1.0: {} - react-medium-image-zoom@5.2.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-hook-form@7.53.2(react@18.3.1): + dependencies: + react: 18.3.1 + + react-medium-image-zoom@5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6007,28 +7131,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - react-remove-scroll@2.5.10(@types/react@18.3.5)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.5)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.5)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.5)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - - react-remove-scroll@2.5.5(@types/react@18.3.5)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.5)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.5)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.5)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.5 - react-remove-scroll@2.5.7(@types/react@18.3.5)(react@18.2.0): dependencies: react: 18.2.0 @@ -6040,7 +7142,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - react-remove-scroll@2.5.7(@types/react@18.3.5)(react@18.3.1): + react-remove-scroll@2.6.0(@types/react@18.3.5)(react@18.3.1): dependencies: react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.5)(react@18.3.1) @@ -6085,7 +7187,47 @@ snapshots: dependencies: picomatch: 2.3.1 - regenerator-runtime@0.14.1: {} + readdirp@4.0.2: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.5 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.2 + + recma-jsx@1.0.0(acorn@8.12.1): + dependencies: + acorn-jsx: 5.3.2(acorn@8.12.1) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - acorn + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.5 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.2 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.5 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.2 + + regex@4.4.0: {} + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.0 + transitivePeerDependencies: + - supports-color remark-gfm@4.0.0: dependencies: @@ -6114,7 +7256,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.0: + remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -6145,6 +7287,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.8: dependencies: is-core-module: 2.15.0 @@ -6179,19 +7323,58 @@ snapshots: semver@7.6.2: {} + semver@7.6.3: + optional: true + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} - shiki@1.12.0: + shiki@1.22.2: dependencies: - '@shikijs/core': 1.12.0 + '@shikijs/core': 1.22.2 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 signal-exit@4.1.0: {} + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -6204,6 +7387,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map@0.7.4: {} space-separated-tokens@2.0.2: {} @@ -6269,6 +7454,11 @@ snapshots: client-only: 0.0.1 react: 18.3.1 + styled-jsx@5.1.6(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -6293,10 +7483,39 @@ snapshots: tailwind-merge@2.4.0: {} + tailwind-merge@2.5.4: {} + tailwindcss-animate@1.0.7(tailwindcss@3.4.7): dependencies: tailwindcss: 3.4.7 + tailwindcss@3.4.14: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tailwindcss@3.4.7: dependencies: '@alloc/quick-lru': 5.2.0 @@ -6353,14 +7572,25 @@ snapshots: tslib@2.6.3: {} + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + type@2.7.3: {} typescript@5.1.6: {} typescript@5.5.3: {} + typescript@5.6.3: {} + undici-types@5.26.5: {} + undici-types@6.19.8: {} + unicorn-magic@0.1.0: {} unified@11.0.5: @@ -6411,6 +7641,12 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.1 + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + use-callback-ref@1.3.2(@types/react@18.3.5)(react@18.2.0): dependencies: react: 18.2.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2322ef0..a8ae607 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,2 @@ packages: - - "apps/docs" - - "apps/website" + - "apps/**"