Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,4 @@ packages/manager/apps/pci-project
packages/manager/apps/hub
packages/manager/apps/pci-file-storage
packages/manager/apps/network-vrack
packages/manager/apps/hpc-backup-licenses
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ packages/manager/apps/pci-project
packages/manager/apps/hub
packages/manager/apps/pci-file-storage
packages/manager/apps/network-vrack
packages/manager/apps/hpc-backup-licenses
1 change: 1 addition & 0 deletions .stylelintignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ packages/manager/apps/zimbra
packages/manager/apps/hub
packages/manager/apps/pci-file-storage
packages/manager/apps/network-vrack
packages/manager/apps/hpc-backup-licenses
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,6 @@
"packages/manager/apps/web-domains",
"packages/manager/core/shell-client",
"packages/manager/modules/logs-to-customer",
"packages/manager/modules/metrics-to-customer"
]
"packages/manager/modules/metrics-to-customer",
"packages/manager/apps/hpc-backup-licenses"
]
19 changes: 19 additions & 0 deletions packages/manager/apps/hpc-backup-licenses/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# hpc-backup-licenses — OVHcloud Manager Application

## Overview

The hpc-backup-licenses app lets customers choose and link a Veeam licence to a VBR server. Customers can manage multiple VBRs, each with multiple vaults to store their backups.

---

## 📚 Useful Links

- Forge CLI: https://github.com/ovh/manager/tree/master/packages/manager-tools/manager-forge-cli#readme
- Manager React Shell Client: https://github.com/ovh/manager
- React Router Docs: https://reactrouter.com/
- Iceberg API Guide: https://github.com/ovh/manager-core-api
- OVHcloud Public API Explorer: https://api.ovh.com/

---

**Generated with ❤️ by OVHcloud Forge CLI**
41 changes: 41 additions & 0 deletions packages/manager/apps/hpc-backup-licenses/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { a11yEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/a11y';
import {
complexityJsxTsxConfig,
complexityTsJsConfig,
} from '@ovh-ux/manager-static-analysis-kit/eslint/complexity';
import { htmlEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/html';
import { javascriptEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/javascript';
import { prettierEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/prettier';
import { reactEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/react';
import { tailwindJsxConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/tailwind-jsx';
import { tanStackQueryEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/tanstack';
import { vitestEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/tests';
import { typescriptEslintConfig } from '@ovh-ux/manager-static-analysis-kit/eslint/typescript';

export default [
javascriptEslintConfig,
typescriptEslintConfig,
reactEslintConfig,
a11yEslintConfig,
htmlEslintConfig,
tailwindJsxConfig,
tanStackQueryEslintConfig,
vitestEslintConfig,
prettierEslintConfig,
complexityJsxTsxConfig,
complexityTsJsConfig,
{
files: ['**/__tests__/**/*.{js,jsx,ts,tsx}'],
rules: {
...Object.fromEntries(
Object.keys({ ...complexityJsxTsxConfig.rules, ...complexityTsJsConfig.rules }).map(
(rule) => [rule, 'off'],
),
),
'react/no-multi-comp': 'off',
},
},
{
ignores: ['**/*.md', '**/coverage/**', '**/dist/**', '**/*.d.ts'],
},
];
22 changes: 22 additions & 0 deletions packages/manager/apps/hpc-backup-licenses/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="mobile-web-app-capable" content="yes" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>OVHcloud</title>
<link rel="shortcut icon" href="images/favicon.png" />
<link rel="apple-touch-icon" href="images/touchicon-180.png" />
</head>
<body>
<noscript>
<strong>
We're sorry but this application doesn't work properly without
JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div id="root"></div>
<script type="module" src="./src/index.tsx"></script>
</body>
</html>
68 changes: 68 additions & 0 deletions packages/manager/apps/hpc-backup-licenses/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"name": "@ovh-ux/manager-hpc-backup-licenses-app",
"version": "0.0.0",
"private": true,
"description": "The hpc-backup-licenses app lets customers choose and link a Veeam licence to a VBR server. Customers can manage multiple VBRs, each with multiple vaults to store their backups.",
"repository": {
"type": "git",
"url": "git+https://github.com/ovh/manager.git",
"directory": "packages/manager/apps/hpc-backup-licenses"
},
"license": "BSD-3-Clause",
"author": "OVH SAS",
"scripts": {
"build": "tsc && vite build",
"lint": "manager-lint --config eslint.config.mjs ./src",
"lint:fix": "manager-lint --fix --config eslint.config.mjs ./src",
"start": "vite",
"test": "manager-test run",
"test:coverage": "manager-test run --coverage"
},
"dependencies": {
"@hookform/resolvers": "5.2.1",
"@ovh-ux/manager-common-translations": "*",
"@ovh-ux/manager-config": "*",
"@ovh-ux/manager-core-api": "*",
"@ovh-ux/manager-core-utils": "*",
"@ovh-ux/manager-react-components": "2.42.4",
"@ovh-ux/manager-react-core-application": "*",
"@ovh-ux/manager-react-shell-client": "*",
"@ovh-ux/request-tagger": "*",
"@ovh-ux/shell": "^4.5.7",
"@ovhcloud/ods-components": "~18.6.2",
"@ovhcloud/ods-themes": "~18.6.2",
"@tanstack/react-query": "5.51.21",
"axios": "^1.13.2",
"element-internals-polyfill": "^3.0.0",
"i18next": "23.8.2",
"i18next-http-backend": "2.4.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "7.54.2",
"react-i18next": "14.1.0",
"react-router-dom": "6.16.0",
"tailwindcss": "^4.1.17",
"zod": "4.1.12"
},
"devDependencies": {
"@ovh-ux/manager-static-analysis-kit": "0.12.0",
"@ovh-ux/manager-tailwind-config": "*",
"@ovh-ux/manager-tests-setup": "^0.6.1",
"@ovh-ux/manager-vite-config": "*",
"@tailwindcss/postcss": "^4.1.17",
"@tanstack/react-query-devtools": "5.51.21",
"@testing-library/react": "^16.0.0",
"@types/react": "^18.2.45",
"@types/react-dom": "^18.3.0",
"msw": "2.12.1",
"typescript": "5.9.3",
"vite": "7.2.2",
"vitest": "3.2.4"
},
"regions": [
"CA",
"EU",
"US"
],
"universes": []
}
6 changes: 6 additions & 0 deletions packages/manager/apps/hpc-backup-licenses/postcss.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import tailwindcss from '@tailwindcss/postcss';
import autoprefixer from 'autoprefixer';

export default {
plugins: [tailwindcss(), autoprefixer()],
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Willkommen bei {{productName}}",
"description_part1": "Entdecken Sie, wie Sie {{productName}} optimal nutzen können.",
"description_part2": "Befolgen Sie unsere Guides für einen schnellen Einstieg.",
"guides": {
"guide1": {
"category": "Entdecken",
"title": "Erste Schritte mit {{productName}}",
"description": "Lernen Sie die Grundlagen für den Einstieg.",
"cta": "Jetzt entdecken"
},
"guide2": {
"category": "Tutorials",
"title": "Umgebung konfigurieren",
"description": "Folgen Sie unserem Guide Schritt für Schritt.",
"cta": "Zum Tutorial"
},
"guide3": {
"category": "FAQ",
"title": "Häufig gestellte Fragen",
"description": "Finden Sie Antworten auf häufig gestellte Fragen.",
"cta": "FAQs lesen"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Welcome to {{productName}}",
"description_part1": "Find out how to get the most out of {{productName}}.",
"description_part2": "Follow our guides to get started quickly.",
"guides": {
"guide1": {
"category": "Discovery",
"title": "Get started with {{productName}}",
"description": "Learn the basics to get started.",
"cta": "Get started"
},
"guide2": {
"category": "Tutorials",
"title": "Configure your environment",
"description": "Follow our step-by-step guide.",
"cta": "See tutorial"
},
"guide3": {
"category": "FAQs",
"title": "Frequently asked questions",
"description": "Find answers to frequently asked questions.",
"cta": "Read the FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Bienvenido/a a {{productName}}",
"description_part1": "Descubra cómo sacar el máximo partido de {{productName}}.",
"description_part2": "Siga nuestras guías para empezar rápidamente.",
"guides": {
"guide1": {
"category": "Discovery",
"title": "Empezar con {{productName}}",
"description": "Descubra los aspectos clave para empezar.",
"cta": "Descubrir"
},
"guide2": {
"category": "Guías",
"title": "Configurar su entorno",
"description": "Siga nuestra guía paso a paso.",
"cta": "Ver el tutorial"
},
"guide3": {
"category": "FAQ",
"title": "Preguntas frecuentes",
"description": "Encuentre la respuesta a sus preguntas.",
"cta": "Leer las FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Bienvenue sur {{productName}}",
"description_part1": "Découvrez comment tirer le meilleur parti de {{productName}}.",
"description_part2": "Suivez nos guides pour démarrer rapidement.",
"guides": {
"guide1": {
"category": "Découverte",
"title": "Commencer avec {{productName}}",
"description": "Apprenez les bases pour démarrer.",
"cta": "Découvrir"
},
"guide2": {
"category": "Tutoriels",
"title": "Configurer votre environnement",
"description": "Suivez notre guide pas à pas.",
"cta": "Voir le tutoriel"
},
"guide3": {
"category": "FAQ",
"title": "Questions fréquentes",
"description": "Trouvez les réponses aux questions courantes.",
"cta": "Lire la FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Bienvenue sur {{productName}}.",
"description_part1": "Découvrez comment tirer le meilleur parti de {{productName}}.",
"description_part2": "Suivez nos guides pour démarrer rapidement.",
"guides": {
"guide1": {
"category": "Découverte",
"title": "Commencer avec {{productName}}",
"description": "Apprenez les bases pour démarrer.",
"cta": "Découvrir"
},
"guide2": {
"category": "Tutoriels",
"title": "Configurer votre environnement",
"description": "Suivez notre guide pas à pas.",
"cta": "Voir le tutoriel"
},
"guide3": {
"category": "FAQ",
"title": "Questions fréquentes",
"description": "Trouvez les réponses aux questions courantes.",
"cta": "Lire la FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Benvenuto su {{productName}}",
"description_part1": "Scopri come ottenere il massimo da {{productName}}.",
"description_part2": "Segui le nostre guide per iniziare rapidamente.",
"guides": {
"guide1": {
"category": "Discovery",
"title": "Iniziare a utilizzare {{productName}}",
"description": "Concetti base per iniziare.",
"cta": "Scopri"
},
"guide2": {
"category": "Tutorial",
"title": "Configurare il tuo ambiente",
"description": "Segui la nostra guida passo per passo.",
"cta": "Guarda il tutorial"
},
"guide3": {
"category": "FAQ",
"title": "Domande frequenti",
"description": "Trova le risposte alle domande più frequenti.",
"cta": "Leggi le FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Witamy w {{productName}}",
"description_part1": "Dowiedz się, jak najlepiej wykorzystać {{productName}}.",
"description_part2": "Zapoznaj się z naszymi przewodnikami, aby szybko wystartować.",
"guides": {
"guide1": {
"category": "Pierwsze kroki",
"title": "Rozpocznij pracę z {{productName}}",
"description": "Poznaj podstawy i przejdź do działania.",
"cta": "Sprawdź"
},
"guide2": {
"category": "Tutoriale",
"title": "Konfiguracja środowiska",
"description": "Postępuj zgodnie z instrukcjami z naszego przewodnika",
"cta": "Sprawdź tutorial"
},
"guide3": {
"category": "FAQ",
"title": "Najczęściej zadawane pytania",
"description": "Znajdź odpowiedzi na często zadawane pytania.",
"cta": "Przeczytaj FAQ"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"title_fallback": "Bem-vindo ao {{productName}}",
"description_part1": "Saiba como tirar o máximo partido da {{productName}}.",
"description_part2": "Siga os nossos guias para começar rapidamente.",
"guides": {
"guide1": {
"category": "Descoberta",
"title": "Começar com {{productName}}",
"description": "Aprenda o básico para começar.",
"cta": "Descobrir"
},
"guide2": {
"category": "Tutoriais",
"title": "Configurar o seu ambiente",
"description": "Siga o nosso guia passo a passo.",
"cta": "Consultar o tutorial"
},
"guide3": {
"category": "FAQ",
"title": "Perguntas frequentes",
"description": "Encontre as respostas para as perguntas mais habituais.",
"cta": "Ler a FAQ"
}
}
}
Loading
Loading