Compare commits

..

32 Commits

Author SHA1 Message Date
a226b9dcd3 Merge branch 'dev' into arthur.wambst/action-fix
All checks were successful
Build / build-check (pull_request) Successful in 3m8s
2025-09-06 23:11:29 +02:00
Arthur Wambst
6859228c03
small fix to avoid to build twice
All checks were successful
Build / build-check (pull_request) Successful in 1m49s
2025-09-06 21:56:41 +02:00
4d48533359 Merge pull request 'arthur.wambst/content-refactoring' (#29) from arthur.wambst/content-refactoring into dev
All checks were successful
Build / build-check (push) Successful in 2m49s
Build / build-check (pull_request) Successful in 2m13s
Reviewed-on: #29
2025-09-06 21:27:46 +02:00
Arthur Wambst
cdc71d528a
fix: build and changed main subtitle
All checks were successful
Build / build-check (pull_request) Successful in 10m16s
2025-09-06 21:03:24 +02:00
sahamone
bd42196f54 refactoring & UI improvment
Some checks failed
Build / build-check (pull_request) Failing after 26s
2025-07-10 18:35:45 +02:00
d3ec4524a7 Merge branch 'dev' into arthur.wambst/content-refactoring
All checks were successful
Build / build-check (pull_request) Successful in 51s
2025-06-21 18:11:14 +02:00
5e42042077 Merge pull request 'content-update' (#26) from content-update into dev
All checks were successful
Build / build-check (push) Successful in 54s
Reviewed-on: #26
Reviewed-by: malopieds <malopieds@la-banquise.fr>
2025-06-21 18:08:16 +02:00
Arthur Wambst
5b354d15a6 fix: changed on push and action name
All checks were successful
Build / build-check (pull_request) Successful in 2m59s
2025-06-18 19:21:37 +02:00
Arthur Wambst
3d0efdb15c fix: discord link to count website joins
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 2m11s
2025-06-18 19:20:05 +02:00
Arthur Wambst
81dad2b6ba wip: started to add translations
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 35s
2025-06-18 04:01:37 +02:00
Arthur Wambst
34531fd2cf init
Some checks failed
Build / Explore-Gitea-Actions (push) Failing after 21s
2025-06-18 03:37:04 +02:00
Arthur Wambst
b14490da1b fix: updated discord link
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 23s
2025-06-18 03:05:18 +02:00
Arthur Wambst
4ec4d6ccb2 fix: ssp desc
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 24s
2025-06-18 02:12:29 +02:00
Arthur Wambst
0f2d0fdb40 merged
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 39s
2025-06-18 01:37:34 +02:00
Arthur Wambst
ff5984a727 fix: now it build, not sure why 2025-06-18 01:29:00 +02:00
Arthur Wambst
978e46d0a7 fix: added missing , 2025-06-18 00:59:17 +02:00
Arthur Wambst
a563a04c65 feat: added actions tests
Some checks failed
Build / Explore-Gitea-Actions (push) Failing after 21s
2025-06-11 16:21:51 +02:00
Arthur Wambst
a6d054a09a test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 59s
2025-06-11 16:14:51 +02:00
Arthur Wambst
04d87e6113 test in cd 2025-06-11 16:12:58 +02:00
Arthur Wambst
11c26e1ba9 test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
2025-06-11 16:10:03 +02:00
Arthur Wambst
e327231b8a test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 44s
2025-06-11 16:07:31 +02:00
Arthur Wambst
cd6ef409f1 test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
2025-06-11 16:02:58 +02:00
Arthur Wambst
80ee14b7da test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 59s
2025-06-11 15:59:08 +02:00
Arthur Wambst
870c9ac0d8 test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1m24s
2025-06-11 15:55:16 +02:00
Arthur Wambst
bdf1124cf6 test in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 10s
2025-06-11 15:53:45 +02:00
Arthur Wambst
ed775ee3e5 fix: forgot npm install
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
2025-06-11 15:39:59 +02:00
Arthur Wambst
549a95e797 fix: wrong path in cd
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 10s
2025-06-11 15:33:59 +02:00
Arthur Wambst
a5268d3714 fix: wrong actions file path
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 10s
2025-06-11 15:32:59 +02:00
Arthur Wambst
88d7694647 tests actions 2025-06-11 15:29:19 +02:00
976e7af488 Merge pull request 'Add new links' (#25) from content-update into dev
Reviewed-on: #25
2025-06-11 10:03:33 +02:00
Arthur Wambst
6bebedb515 changed some content 2025-06-11 10:01:45 +02:00
sahamone
65ea4ac0be Add new links
Ajout de nouveaux services au site web
2025-06-10 20:03:41 +02:00
10 changed files with 119 additions and 129 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View File

@ -5,12 +5,14 @@ import type { Service } from '../../types/service';
interface ServiceCardProps { interface ServiceCardProps {
service: Service; service: Service;
onServiceClick: (service: Service) => void; onServiceClick: (service: Service) => void;
discoverFeaturesText: string;
className?: string; className?: string;
} }
export const ServiceCard: React.FC<ServiceCardProps> = ({ export const ServiceCard: React.FC<ServiceCardProps> = ({
service, service,
onServiceClick, onServiceClick,
discoverFeaturesText,
className = '', className = '',
}) => { }) => {
const cardClasses = mergeClasses( const cardClasses = mergeClasses(
@ -29,16 +31,7 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({
<div className={cardClasses} onClick={handleClick}> <div className={cardClasses} onClick={handleClick}>
{/* Icon */} {/* Icon */}
<div className="mb-6 sm:mb-8 w-20 h-20 sm:w-24 sm:h-24 bg-gradient-to-br from-banquise-blue to-banquise-blue-light rounded-2xl flex items-center justify-center text-3xl sm:text-4xl shadow-lg group-hover:scale-110 transition-transform duration-300 mx-auto"> <div className="mb-6 sm:mb-8 w-20 h-20 sm:w-24 sm:h-24 bg-gradient-to-br from-banquise-blue to-banquise-blue-light rounded-2xl flex items-center justify-center text-3xl sm:text-4xl shadow-lg group-hover:scale-110 transition-transform duration-300 mx-auto">
<img {service.icon}
src={service.image}
alt={service.icon}
className="h-10 sm:h-12 lg:h-14 w-auto relative z-10 transition-transform duration-300 group-hover:scale-130 m-10"
style={
{
filter: 'drop-shadow(0 0 12px rgba(168, 218, 255, 0.4))',
}
}
/>
</div> </div>
{/* Service name */} {/* Service name */}
@ -47,10 +40,15 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({
</h3> </h3>
{/* Short description */} {/* Short description */}
<p className="text-banquise-gray/80 leading-relaxed text-center text-sm sm:text-base"> <p className="text-banquise-gray/80 leading-relaxed mb-6 sm:mb-8 text-center text-sm sm:text-base">
{service.description.split('.')[0]}. {service.description.split('.')[0]}.
</p> </p>
{/* CTA */}
<div className="flex items-center justify-center text-banquise-blue-light font-bold group-hover:text-banquise-blue-lightest transition-colors duration-300 text-sm sm:text-base">
<span className="text-center">{discoverFeaturesText}</span>
<span className="ml-2 text-lg transition-transform duration-300 group-hover:translate-x-2"></span>
</div>
{/* Hover effect */} {/* Hover effect */}
<div className="absolute inset-0 bg-gradient-to-br from-banquise-blue-lightest/10 to-banquise-blue/5 rounded-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none"></div> <div className="absolute inset-0 bg-gradient-to-br from-banquise-blue-lightest/10 to-banquise-blue/5 rounded-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none"></div>

View File

@ -51,11 +51,7 @@ export const Footer: React.FC = () => (
className="w-10 h-10 bg-banquise-blue/20 hover:bg-banquise-blue/30 rounded-full flex items-center justify-center transition-all duration-200 hover:scale-110" className="w-10 h-10 bg-banquise-blue/20 hover:bg-banquise-blue/30 rounded-full flex items-center justify-center transition-all duration-200 hover:scale-110"
aria-label="Discord" aria-label="Discord"
> >
<span className="text-banquise-blue-lightest text-sm"> <span className="text-banquise-blue-lightest text-sm">💬</span>
<svg className="w-4 h-4 lg:w-5 lg:h-5" fill="currentColor" viewBox="0 0 24 24">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.211.375-.445.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
</svg>
</span>
</a> </a>
<a <a
href={URLS.contact.email} href={URLS.contact.email}
@ -70,12 +66,12 @@ export const Footer: React.FC = () => (
{/* Bottom Bar */} {/* Bottom Bar */}
<div className="flex flex-col sm:flex-row justify-between items-center gap-4 pt-6 border-t border-banquise-blue-lightest/5"> <div className="flex flex-col sm:flex-row justify-between items-center gap-4 pt-6 border-t border-banquise-blue-lightest/5">
<p className="text-banquise-gray/60 text-xs text-center sm:text-left"> <p className="text-banquise-gray/60 text-xs text-center sm:text-left">
© 2025 {SITE_CONFIG.name}. Hébergement communautaire pour développeurs et gamers. © 2024 {SITE_CONFIG.name}. Hébergement communautaire pour développeurs et gamers.
</p> </p>
<div className="flex items-center gap-4 text-xs text-banquise-gray/60"> <div className="flex items-center gap-4 text-xs text-banquise-gray/60">
<span>Fait avec par Banquise</span> <span>Fait avec par la communauté</span>
<div className="w-1 h-1 bg-banquise-gray/40 rounded-full"></div> <div className="w-1 h-1 bg-banquise-gray/40 rounded-full"></div>
<span>EPITA 2025</span> <span>EPITA 2024</span>
</div> </div>
</div> </div>
</div> </div>

View File

@ -96,10 +96,10 @@ export const Navigation: React.FC<NavigationProps> = ({ translations, languageSw
> >
<div className={`absolute inset-0 ${commonStyles.gradients.discordHover} opacity-0 group-hover:opacity-100 transition-opacity duration-300`}></div> <div className={`absolute inset-0 ${commonStyles.gradients.discordHover} opacity-0 group-hover:opacity-100 transition-opacity duration-300`}></div>
<div className="relative z-10 flex items-center space-x-2"> <div className="relative z-10 flex items-center space-x-2">
<svg className="w-4 h-4 lg:w-5 lg:h-5" fill="currentColor" viewBox="0 0 24 24"> <svg className="w-4 h-4 lg:w-5 lg:h-5" fill="currentColor" viewBox="0 0 24 24">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.211.375-.445.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/> <path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.211.375-.445.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
</svg> </svg>
<span>Discord</span> <span>Discord</span>
</div> </div>
</a> </a>
<a <a

View File

@ -13,7 +13,8 @@ interface ServicesSectionProps {
export const ServicesSection: React.FC<ServicesSectionProps> = ({ export const ServicesSection: React.FC<ServicesSectionProps> = ({
services, services,
onServiceClick onServiceClick,
translations
}) => ( }) => (
<section id="services" className="relative z-2 py-12 sm:py-16 md:py-20 w-full max-w-6xl mx-auto px-4 sm:px-6 md:px-8"> <section id="services" className="relative z-2 py-12 sm:py-16 md:py-20 w-full max-w-6xl mx-auto px-4 sm:px-6 md:px-8">
<div className="w-20 h-1 bg-gradient-to-r from-banquise-blue-lightest to-banquise-blue mx-auto mb-6 sm:mb-8 rounded-full"></div> <div className="w-20 h-1 bg-gradient-to-r from-banquise-blue-lightest to-banquise-blue mx-auto mb-6 sm:mb-8 rounded-full"></div>
@ -30,6 +31,7 @@ export const ServicesSection: React.FC<ServicesSectionProps> = ({
key={service.name} key={service.name}
service={service} service={service}
onServiceClick={onServiceClick} onServiceClick={onServiceClick}
discoverFeaturesText={translations.discoverFeatures}
/> />
))} ))}
</div> </div>

View File

@ -1,16 +1,12 @@
import type { Translation } from '../../types/i18n'; import type { Translation } from '../../types/i18n';
import { URLS } from '../../config/constants'; import { URLS } from '../../config/constants';
import logoGitea from '/src/assets/Gitea_Logo.png';
import logoWiki from '/src/assets/wikijs.png';
import logoPelican from '/src/assets/pelican.png';
import logoOpencloud from '/src/assets/opencloud_logo_white.png';
export const en: Translation = { export const en: Translation = {
services: [ services: [
{ {
name: "Wiki", name: "Wiki",
url: URLS.services.wiki, url: URLS.services.wiki,
image: logoWiki, image: "/path/to/wiki-image.jpg",
icon: "📚", icon: "📚",
description: "Collaborative technical documentation and knowledge sharing platform. Create, edit and organize your guides, tutorials and documentation as a team with integrated versioning system.", description: "Collaborative technical documentation and knowledge sharing platform. Create, edit and organize your guides, tutorials and documentation as a team with integrated versioning system.",
features: [ features: [
@ -27,7 +23,7 @@ export const en: Translation = {
{ {
name: "Gitea", name: "Gitea",
url: URLS.services.gitea, url: URLS.services.gitea,
image: logoGitea, image: "/path/to/gitea-image.jpg",
icon: "🔧", icon: "🔧",
description: "Lightweight and performant self-hosted Git service for your development projects. Open-source alternative to GitHub with all essential features for managing your repositories.", description: "Lightweight and performant self-hosted Git service for your development projects. Open-source alternative to GitHub with all essential features for managing your repositories.",
features: [ features: [
@ -42,12 +38,13 @@ export const en: Translation = {
] ]
}, },
{ {
name: "Pelican", name: "Gaming Panel",
url: URLS.services.pelican, url: URLS.services.panel,
image: logoPelican, image: "/path/to/panel-image.jpg",
icon: "🐧", icon: "🎮",
description: "Game server management with dedicated servers (Minecraft, CS2, Palworld, and many others)", description: "Centralized management interface for all your game servers. Easily deploy, configure and monitor your Minecraft, CS2, Garry's Mod and many other servers.",
features: [ features: [
"Support for 20+ popular games (Minecraft, CS2, GMod...)",
"One-click deployment with pre-configured templates", "One-click deployment with pre-configured templates",
"Real-time administration console", "Real-time administration console",
"File management with integrated editor", "File management with integrated editor",
@ -57,33 +54,19 @@ export const en: Translation = {
] ]
}, },
{ {
name: "Password Change", name: "Pelican",
url: URLS.services.ssp, url: URLS.services.pelican,
image: "/path/to/ssp-image.jpg", image: "/path/to/pelican-image.jpg",
icon: "🔐", icon: "🐧",
description: "Secure interface for autonomous password management. Easily change your credentials safely.", description: "Ultra-fast and flexible Python static site generator. Create blogs, portfolios or documentation sites with optimal performance and simplified deployment.",
features: [ features: [
"Secure interface to change your password", "Game server management with dedicated servers (Minecraft, CS2, Palworld...)",
"Password complexity validation", "One-click deployment with pre-configured templates",
"Email notifications of changes", "Real-time administration console",
"Modification history" "File management with integrated editor",
] "Performance and resource monitoring",
}, "Automatic backup system",
{ "Automated task scheduler"
name: "OpenCloud",
url: URLS.services.opencloud,
image: logoOpencloud,
icon: "☁️",
description: "Open-source collaborative cloud platform for file storage, sharing and synchronization. Free alternative to Google Drive with full control over your data.",
features: [
"Secure and encrypted cloud storage",
"Multi-device synchronization",
"File sharing with secure links",
"Collaborative document editing",
"Automatic file versioning",
"Native mobile applications",
"Integration with external tools",
"Geo-redundant data backup"
] ]
}, },
{ {
@ -103,22 +86,6 @@ export const en: Translation = {
"Archive of decisions and minutes" "Archive of decisions and minutes"
] ]
}, },
{
name: "Gaming Panel",
url: URLS.services.panel,
image: "/path/to/panel-image.jpg",
icon: "🎮",
description: "Centralized management interface for all your game servers. Easily deploy, configure and monitor your Minecraft, CS2, Garry's Mod and many other servers.",
features: [
"Support for 20+ popular games (Minecraft, CS2, GMod...)",
"One-click deployment with pre-configured templates",
"Real-time administration console",
"File management with integrated editor",
"Performance and resource monitoring",
"Automatic backup system",
"Automated task scheduler"
]
},
{ {
name: "Mails", name: "Mails",
url: URLS.services.mails, url: URLS.services.mails,
@ -135,6 +102,36 @@ export const en: Translation = {
"Communication encryption", "Communication encryption",
"Automatic data backup" "Automatic data backup"
] ]
},
{
name: "Password Change",
url: URLS.services.ssp,
image: "/path/to/ssp-image.jpg",
icon: "🔐",
description: "Secure interface for autonomous password management. Easily change your credentials safely.",
features: [
"Secure interface to change your password",
"Password complexity validation",
"Email notifications of changes",
"Modification history"
]
},
{
name: "OpenCloud",
url: URLS.services.opencloud,
image: "/path/to/opencloud-image.jpg",
icon: "☁️",
description: "Open-source collaborative cloud platform for file storage, sharing and synchronization. Free alternative to Google Drive with full control over your data.",
features: [
"Secure and encrypted cloud storage",
"Multi-device synchronization",
"File sharing with secure links",
"Collaborative document editing",
"Automatic file versioning",
"Native mobile applications",
"Integration with external tools",
"Geo-redundant data backup"
]
} }
], ],
hero: { hero: {

View File

@ -1,16 +1,12 @@
import type { Translation } from '../../types/i18n'; import type { Translation } from '../../types/i18n';
import { URLS } from '../../config/constants'; import { URLS } from '../../config/constants';
import logoGitea from '/src/assets/Gitea_Logo.png';
import logoWiki from '/src/assets/wikijs.png';
import logoPelican from '/src/assets/pelican.png';
import logoOpencloud from '/src/assets/opencloud_logo_white.png';
export const fr: Translation = { export const fr: Translation = {
services: [ services: [
{ {
name: "Wiki", name: "Wiki",
url: URLS.services.wiki, url: URLS.services.wiki,
image: logoWiki, image: "/path/to/wiki-image.jpg",
icon: "📚", icon: "📚",
description: "Plateforme collaborative de documentation technique et de partage de connaissances. Créez, modifiez et organisez vos guides, tutoriels et documentations en équipe avec un système de versioning intégré.", description: "Plateforme collaborative de documentation technique et de partage de connaissances. Créez, modifiez et organisez vos guides, tutoriels et documentations en équipe avec un système de versioning intégré.",
features: [ features: [
@ -27,7 +23,7 @@ export const fr: Translation = {
{ {
name: "Gitea", name: "Gitea",
url: URLS.services.gitea, url: URLS.services.gitea,
image: logoGitea, image: "/path/to/gitea-image.jpg",
icon: "🔧", icon: "🔧",
description: "Service Git auto-hébergé lightweight et performant pour vos projets de développement. Alternative open-source à GitHub avec toutes les fonctionnalités essentielles pour gérer vos repositories.", description: "Service Git auto-hébergé lightweight et performant pour vos projets de développement. Alternative open-source à GitHub avec toutes les fonctionnalités essentielles pour gérer vos repositories.",
features: [ features: [
@ -42,12 +38,13 @@ export const fr: Translation = {
] ]
}, },
{ {
name: "Pelican", name: "Panel Gaming",
url: URLS.services.pelican, url: URLS.services.panel,
image: logoPelican, image: "/path/to/panel-image.jpg",
icon: "🐧", icon: "🎮",
description: "Gestion de serveurs de jeux avec serveurs dédiés (Minecraft, CS2, Palworld, et bien d'autres)", description: "Interface de gestion centralisée pour tous vos serveurs de jeux. Déployez, configurez et surveillez facilement vos serveurs Minecraft, CS2, Garry's Mod et bien d'autres.",
features: [ features: [
"Support de 20+ jeux populaires (Minecraft, CS2, GMod...)",
"Déploiement en un clic avec templates préconfigurés", "Déploiement en un clic avec templates préconfigurés",
"Console d'administration en temps réel", "Console d'administration en temps réel",
"Gestion des fichiers avec éditeur intégré", "Gestion des fichiers avec éditeur intégré",
@ -57,33 +54,19 @@ export const fr: Translation = {
] ]
}, },
{ {
name: "Changement de mot de passe", name: "Pelican",
url: URLS.services.ssp, url: URLS.services.pelican,
image: "/path/to/ssp-image.jpg", image: "/path/to/pelican-image.jpg",
icon: "🔐", icon: "🐧",
description: "Interface sécurisée pour la gestion autonome de vos mots de passe. Changez facilement vos identifiants en toute sécurité.", description: "Générateur de sites statiques Python ultra-rapide et flexible. Créez des blogs, portfolios ou sites de documentation avec une performance optimale et un déploiement simplifié.",
features: [ features: [
"Interface sécurisée pour changer votre mot de passe", "Gestion de serveurs de jeux avec serveurs dédiés (Minecraft, CS2, Palworld...)",
"Validation de la complexité des mots de passe", "Déploiement en un clic avec templates préconfigurés",
"Notifications par email des changements", "Console d'administration en temps réel",
"Historique des modifications" "Gestion des fichiers avec éditeur intégré",
] "Monitoring des performances et ressources",
}, "Système de sauvegarde automatique",
{ "Planificateur de tâches automatisées"
name: "OpenCloud",
url: URLS.services.opencloud,
image: logoOpencloud,
icon: "☁️",
description: "Plateforme cloud collaborative open-source pour le stockage, le partage et la synchronisation de fichiers. Alternative libre à Google Drive avec contrôle total sur vos données.",
features: [
"Stockage cloud sécurisé et chiffré",
"Synchronisation multi-appareils",
"Partage de fichiers avec liens sécurisés",
"Édition collaborative de documents",
"Versioning automatique des fichiers",
"Applications mobiles natives",
"Intégration avec outils externes",
"Sauvegarde géoredondante des données"
] ]
}, },
{ {
@ -103,22 +86,6 @@ export const fr: Translation = {
"Archive des décisions et procès-verbaux" "Archive des décisions et procès-verbaux"
] ]
}, },
{
name: "Panel Gaming",
url: URLS.services.panel,
image: "/path/to/panel-image.jpg",
icon: "🎮",
description: "Interface de gestion centralisée pour tous vos serveurs de jeux. Déployez, configurez et surveillez facilement vos serveurs Minecraft, CS2, Garry's Mod et bien d'autres.",
features: [
"Support de 20+ jeux populaires (Minecraft, CS2, GMod...)",
"Déploiement en un clic avec templates préconfigurés",
"Console d'administration en temps réel",
"Gestion des fichiers avec éditeur intégré",
"Monitoring des performances et ressources",
"Système de sauvegarde automatique",
"Planificateur de tâches automatisées"
]
},
{ {
name: "Mails", name: "Mails",
url: URLS.services.mails, url: URLS.services.mails,
@ -135,6 +102,36 @@ export const fr: Translation = {
"Chiffrement des communications", "Chiffrement des communications",
"Sauvegarde automatique des données" "Sauvegarde automatique des données"
] ]
},
{
name: "Changement de mot de passe",
url: URLS.services.ssp,
image: "/path/to/ssp-image.jpg",
icon: "🔐",
description: "Interface sécurisée pour la gestion autonome de vos mots de passe. Changez facilement vos identifiants en toute sécurité.",
features: [
"Interface sécurisée pour changer votre mot de passe",
"Validation de la complexité des mots de passe",
"Notifications par email des changements",
"Historique des modifications"
]
},
{
name: "OpenCloud",
url: URLS.services.opencloud,
image: "/path/to/opencloud-image.jpg",
icon: "☁️",
description: "Plateforme cloud collaborative open-source pour le stockage, le partage et la synchronisation de fichiers. Alternative libre à Google Drive avec contrôle total sur vos données.",
features: [
"Stockage cloud sécurisé et chiffré",
"Synchronisation multi-appareils",
"Partage de fichiers avec liens sécurisés",
"Édition collaborative de documents",
"Versioning automatique des fichiers",
"Applications mobiles natives",
"Intégration avec outils externes",
"Sauvegarde géoredondante des données"
]
} }
], ],
hero: { hero: {