update last version of the website
14
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Ignore all Markdown files
|
||||
# *.md
|
||||
.**claude**
|
||||
.gemini/
|
||||
.env
|
||||
.env.*
|
||||
config.local.php
|
||||
config.prod.php
|
||||
secrets.php
|
||||
credentials.json
|
||||
.vscode/
|
||||
.idea/
|
||||
*.log
|
||||
node_modules/
|
||||
125
.htaccess
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# OMEGAKUBE — Configuration de sécurité renforcée Apache (.htaccess)
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# 1. Désactiver l'exploration des répertoires (Directory Browsing)
|
||||
Options -Indexes
|
||||
|
||||
# 2. Masquer les informations du serveur
|
||||
ServerSignature Off
|
||||
|
||||
# 3. Restriction d'accès aux fichiers sensibles, cachés et de données
|
||||
|
||||
# A. Bloquer les fichiers commençant par un point (comme .git, .env, .htaccess)
|
||||
<FilesMatch "^\.">
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
# Exception explicite pour le fichier security.txt du dossier .well-known
|
||||
<Files "security.txt">
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all granted
|
||||
</IfModule>
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</IfModule>
|
||||
</Files>
|
||||
|
||||
# B. Bloquer les extensions sensibles (Configuration, scripts, logs, bases de données)
|
||||
<FilesMatch "\.(env|md|sql|log|sh|cfg|ini|db|bak|conf)$">
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
# C. Protection intelligente des fichiers .json
|
||||
# On bloque TOUS les .json du serveur par défaut, SAUF ceux situés dans assets/data/
|
||||
<FilesMatch "\.json$">
|
||||
<IfModule mod_authz_core.c>
|
||||
<If "%{REQUEST_URI} =~ m#^/assets/data/.*\.json$#">
|
||||
Require all granted
|
||||
</If>
|
||||
<Else>
|
||||
Require all denied
|
||||
</Else>
|
||||
</IfModule>
|
||||
<IfModule !mod_authz_core.c>
|
||||
# Sécurité de secours pour les versions d'Apache très anciennes
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
# 4. Exécution CGI activée par assets/python/.htaccess (plus fiable que FilesMatch racine)
|
||||
|
||||
|
||||
# 5. En-têtes de sécurité HTTP (Recommandations Mozilla Observatory)
|
||||
<IfModule mod_headers.c>
|
||||
# HSTS (Strict-Transport-Security) : Force l'utilisation du HTTPS pour le domaine et les sous-domaines (durée 1 an)
|
||||
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||
|
||||
# X-Frame-Options : Interdit le chargement du site dans une iframe (protection Clickjacking)
|
||||
Header always set X-Frame-Options "DENY"
|
||||
|
||||
# X-Content-Type-Options : Force le navigateur à respecter le type MIME envoyé (protection contre le sniffing de contenu)
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
|
||||
# Referrer-Policy : Ne transmet le referer complet que pour les origines de confiance (HTTPS vers HTTPS interne)
|
||||
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||
|
||||
# Permissions-Policy : Restreint l'utilisation de fonctionnalités matérielles du navigateur pour la vie privée
|
||||
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
|
||||
|
||||
# Content-Security-Policy (CSP) : Contrôle les sources d'où le site peut charger ses scripts, styles et médias.
|
||||
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://unpkg.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' https://cdn.discordapp.com data:; frame-src 'self' https://www.youtube.com https://www.youtube-nocookie.com; connect-src 'self'"
|
||||
|
||||
# X-XSS-Protection : Filtre XSS existant dans les anciens navigateurs (mode blocage actif)
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
</IfModule>
|
||||
|
||||
# 6. Règles de réécriture d'URL (mod_rewrite)
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
||||
# A. Redirection HTTPS automatique et robuste (compatible reverse proxies comme Cloudflare)
|
||||
RewriteCond %{HTTPS} off [OR]
|
||||
RewriteCond %{HTTP:X-Forwarded-Proto} !https
|
||||
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# B. Pare-feu applicatif de base (WAF) contre les attaques par injection courantes
|
||||
RewriteCond %{QUERY_STRING} concat.*\( [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} union.*select [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} base64_encode.*\( [NC,OR]
|
||||
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
|
||||
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
|
||||
RewriteRule ^(.*)$ - [F,L]
|
||||
|
||||
# C. Redirection des pages inexistantes ou dossiers sans fichier index vers une page 404 personnalisée
|
||||
# Si le fichier demandé n'existe pas
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
# Et s'il ne s'agit pas d'un dossier
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^ pages/404.php [L]
|
||||
|
||||
# Si le dossier demandé n'a aucun fichier d'index valide (index.html ou index.php)
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteCond %{REQUEST_FILENAME}/index.html !-f
|
||||
RewriteCond %{REQUEST_FILENAME}/index.php !-f
|
||||
RewriteRule ^ pages/404.php [L]
|
||||
</IfModule>
|
||||
|
||||
# 7. Pages d'erreur Apache natives (fallback de sécurité si mod_rewrite est absent)
|
||||
ErrorDocument 404 /pages/404.php
|
||||
ErrorDocument 403 /pages/404.php
|
||||
6
.well-known/security.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Contact: mailto:contact@omegakube.fr
|
||||
Preferred-Languages: fr, en
|
||||
Expires: 2027-05-17T12:00:00.000Z
|
||||
Encryption: https://omegakube.fr/pgp-key.txt
|
||||
Acknowledgements: https://omegakube.fr/remerciements
|
||||
Policy: https://omegakube.fr/security-policy
|
||||
258
README.md
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
# OmégaKube — Site Web
|
||||
|
||||
Site vitrine officiel d'OmégaKube — plateforme de création d'expériences Role Play immersives : bots Discord personnalisés, maps Fortnite UEFN, graphisme et consulting.
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Architecture
|
||||
|
||||
```
|
||||
website/
|
||||
├── index.html # Page d'accueil
|
||||
├── .htaccess # Config Apache (404, redirections)
|
||||
├── pages/
|
||||
│ ├── services.html # Nos services
|
||||
│ ├── realisations.html # Portfolio complet
|
||||
│ ├── faq.html # Questions fréquentes
|
||||
│ ├── mentions-legales.html
|
||||
│ ├── cgv.html
|
||||
│ └── 404.php # Page 404 (CSS/JS inline, chemin-indépendant)
|
||||
├── components/
|
||||
│ ├── header.html # Navbar (data-include)
|
||||
│ ├── footer.html # Footer + réseaux sociaux (data-include)
|
||||
│ ├── background.html # Fond géométrique animé
|
||||
│ ├── contact.html # Formulaire de contact réutilisable
|
||||
│ ├── favicons.html
|
||||
│ └── index/
|
||||
│ ├── hero.html
|
||||
│ ├── apropos.html
|
||||
│ └── services.html
|
||||
├── assets/
|
||||
│ ├── css/
|
||||
│ │ ├── main.css # Styles globaux (thème dark/light, composants)
|
||||
│ │ ├── 404.css # Styles page 404
|
||||
│ │ └── legal.css # Styles pages légales
|
||||
│ ├── js/
|
||||
│ │ ├── main.js # ⭐ Config globale, thème, includes, social links
|
||||
│ │ ├── home.js # Accueil : portfolio, team carousel, partners, easter egg
|
||||
│ │ └── pages/
|
||||
│ │ ├── realisations.js # Portfolio + modal projet + galerie images/vidéo
|
||||
│ │ ├── services.js # Onglets services
|
||||
│ │ ├── services-process.js # Animation timeline processus
|
||||
│ │ ├── legal.js # Pages légales
|
||||
│ │ └── 404.js # Easter egg page 404 (Game of Life)
|
||||
│ ├── data/
|
||||
│ │ ├── projects.json # ⭐ Projets (images, vidéos, stats, tech, social)
|
||||
│ │ ├── team.json # ⭐ Membres de l'équipe
|
||||
│ │ ├── partners.json # ⭐ Partenaires
|
||||
│ │ ├── services.json # Détail des services et tarifs
|
||||
│ │ └── faq.json # Questions / réponses FAQ
|
||||
│ ├── images/
|
||||
│ │ ├── projects/ # Images et vidéos des projets
|
||||
│ │ │ ├── kuby/
|
||||
│ │ │ ├── victorias-vice-1/ # Inclut TrailerOfficielVV1.mp4
|
||||
│ │ │ ├── vicy/
|
||||
│ │ │ ├── site-omega/
|
||||
│ │ │ └── branding-omega-kube/
|
||||
│ │ ├── team/ # Photos membres : {id_discord}.png ou .jpg
|
||||
│ │ ├── partners/ # Logos partenaires — champ "logo" dans partners.json
|
||||
│ │ ├── social/ # Icônes réseaux gaming (fortnite.svg, epicgames.svg)
|
||||
│ │ └── favicon/
|
||||
│ ├── fonts/ # OmegaLarge, OmegaSmall, Montserrat
|
||||
│ └── python/
|
||||
│ └── send_mail.py # Formulaire de contact CGI (JSON POST)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration rapide
|
||||
|
||||
### 1. Réseaux sociaux — un seul endroit
|
||||
|
||||
Dans `assets/js/main.js`, modifier `window.OK_SOCIAL` :
|
||||
|
||||
```js
|
||||
window.OK_SOCIAL = {
|
||||
discord: 'https://discord.gg/FwvNkvu5dy',
|
||||
fortnite: 'https://www.fortnite.com/@omega_kube_team',
|
||||
epicgames: '', // laisser vide pour masquer le lien
|
||||
twitter: 'https://x.com/Omegakube',
|
||||
instagram: 'https://www.instagram.com/omegakube/',
|
||||
youtube: 'https://www.youtube.com/@OmegaKube',
|
||||
tiktok: 'https://www.tiktok.com/@omegakube',
|
||||
facebook: '',
|
||||
bluesky: '',
|
||||
email: 'contact@omegakube.fr'
|
||||
};
|
||||
```
|
||||
|
||||
Tous les liens du site (footer, contact, modals) se mettent à jour automatiquement. Les entrées vides `''` sont masquées automatiquement.
|
||||
|
||||
Les icônes gaming (Fortnite, Epic Games) sont des SVG locaux dans `assets/images/social/` — ils s'adaptent automatiquement au thème dark/light.
|
||||
|
||||
---
|
||||
|
||||
### 2. Ajouter / modifier un projet
|
||||
|
||||
Éditer `assets/data/projects.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"id": 6,
|
||||
"category": "bot",
|
||||
"title": "Nom du projet",
|
||||
"desc": "Description complète...",
|
||||
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
||||
"year": "2025",
|
||||
"duration": "2 mois",
|
||||
"images": "assets/images/projects/nom-du-projet/",
|
||||
"files": [
|
||||
"trailer.mp4", // vidéo locale (avec bouton mute)
|
||||
"https://youtube.com/watch?v=VIDEO_ID", // URL YouTube complète
|
||||
"yt:VIDEO_ID", // shortcode YouTube
|
||||
"img-1.png",
|
||||
"img-2.jpg"
|
||||
],
|
||||
"features": ["Feature 1", "Feature 2"],
|
||||
"tech": [
|
||||
{ "name": "Python", "icon": "code" }
|
||||
],
|
||||
"stats": [
|
||||
{ "icon": "users", "value": "500+", "label": "Utilisateurs" }
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/...",
|
||||
"twitter": "",
|
||||
"instagram": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Déposer les fichiers dans `assets/images/projects/nom-du-projet/`. Les noms doivent correspondre exactement au champ `files`.
|
||||
|
||||
**Catégories valides** : `"bot"` | `"map"` | `"graphisme"`
|
||||
|
||||
---
|
||||
|
||||
### 3. Ajouter un membre de l'équipe
|
||||
|
||||
Éditer `assets/data/team.json`. Photo optionnelle : `assets/images/team/{id_discord}.png` ou `.jpg` (fallback automatique).
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "123456789",
|
||||
"name": "Pseudo",
|
||||
"role": "Rôle",
|
||||
"avatar": "P",
|
||||
"bio": "...",
|
||||
"stats": [
|
||||
{ "value": "3", "label": "Ans d'exp." }
|
||||
],
|
||||
"skills": ["Skill 1", "Skill 2"],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"github": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Ajouter un partenaire
|
||||
|
||||
Éditer `assets/data/partners.json`. Le champ `logo` doit pointer vers le fichier image avec la **bonne extension** (`.png` ou `.jpg`).
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "nom-slug",
|
||||
"displayName": "Nom Affiché",
|
||||
"description": "Courte description (carousel)",
|
||||
"longDesc": "Description complète (modal)",
|
||||
"gradient": "linear-gradient(...)",
|
||||
"logo": "assets/images/partners/nom-slug.png",
|
||||
"since": "2025",
|
||||
"services": ["Service rendu"],
|
||||
"stats": [
|
||||
{ "icon": "users", "value": "100+", "label": "Membres" }
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"website": "",
|
||||
"twitter": "",
|
||||
"youtube": "",
|
||||
"instagram": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. FAQ
|
||||
|
||||
Éditer `assets/data/faq.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "ma-categorie",
|
||||
"icon": "help-circle",
|
||||
"title": "Ma catégorie",
|
||||
"questions": [
|
||||
{ "q": "La question ?", "a": "La réponse." }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Les icônes sont issues de [Feather Icons](https://feathericons.com/).
|
||||
|
||||
---
|
||||
|
||||
## 🌐 Déploiement
|
||||
|
||||
- **Serveur** : PHP requis pour `404.php`, Python CGI requis pour `send_mail.py`
|
||||
- **Contact** : configurer l'adresse email destinataire dans `assets/python/send_mail.py` (`TO_EMAIL`)
|
||||
- **Apache** : le `.htaccess` gère la 404 et désactive le listing de dossiers
|
||||
- **Thème** : dark par défaut, toggle persisté en `localStorage`
|
||||
- **WAMP local** : utiliser `http://localhost/nom-du-dossier/` — les chemins assets sont relatifs
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Thème dark/light
|
||||
|
||||
Le site supporte deux thèmes via l'attribut `data-theme` sur `<html>` :
|
||||
|
||||
- `data-theme="dark"` (défaut)
|
||||
- `data-theme="light"`
|
||||
|
||||
Toutes les couleurs sont des variables CSS définies dans `main.css`. Les textes sur images (cartes portfolio, bento projets phares) restent toujours blancs grâce à des gradients sombres en bas, que ce soit en dark ou light.
|
||||
|
||||
---
|
||||
|
||||
## 🥚 Easter Eggs
|
||||
|
||||
- **PC** : Konami Code `↑ ↑ ↓ ↓ ← → ← → B A`
|
||||
- **Mobile** : 10 taps rapides sur le logo navbar ou footer
|
||||
- **Page 404** : 10 taps sur le "404" → Game of Life de Conway
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Stack technique
|
||||
|
||||
| Technologie | Usage |
|
||||
|---|---|
|
||||
| HTML5 / CSS3 | Structure et styles, thème dark/light |
|
||||
| JavaScript ES6+ | Logique, composants, données JSON |
|
||||
| PHP / Python | Page 404 (PHP), Formulaire de contact (Python CGI) |
|
||||
| Feather Icons | Icônes UI (CDN) |
|
||||
| Simple Icons | Icônes réseaux sociaux gaming (SVG locaux) |
|
||||
| Montserrat | Police secondaire |
|
||||
| OmegaLarge / OmegaSmall | Polices custom OmégaKube |
|
||||
|
||||
---
|
||||
|
||||
**Version** : 1.6.0
|
||||
**Dernière mise à jour** : Avril 2026
|
||||
**Mainteneur** : KIRITO_KMA / L'équipe OmégaKube
|
||||
271
SMTP_CONFIG_GUIDE.md
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
# ⚡ Guide de Configuration SMTP pour send_mail.py (Auto-hébergement Linux + Apache)
|
||||
|
||||
*Dernière mise à jour : 2025-05-20*
|
||||
*Fichier : `assets/python/send_mail.py`*
|
||||
|
||||
---
|
||||
|
||||
## 📋 **CHECKLIST RAPIDE**
|
||||
|
||||
- [ ] Postfix installé et démarré
|
||||
- [ ] Apache configuré pour CGI Python
|
||||
- [ ] send_mail.py a les permissions d'exécution
|
||||
- [ ] Configuration SMTP correcte dans send_mail.py
|
||||
- [ ] Test de connexion SMTP réussi
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **ÉTAPES COMPLÈTES**
|
||||
|
||||
### **Partie 1 : Installation de Postfix (Serveur SMTP)**
|
||||
|
||||
```bash
|
||||
# 1. Installer Postfix
|
||||
sudo apt update && sudo apt install postfix mailutils -y
|
||||
|
||||
# 2. Pendant l'installation :
|
||||
# - Sélectionner : "Site Internet"
|
||||
# - Nom de domaine : omegakube.fr
|
||||
|
||||
# 3. Configurer Postfix
|
||||
sudo nano /etc/postfix/main.cf
|
||||
```
|
||||
|
||||
**Dans `/etc/postfix/main.cf`, modifier/modifier :**
|
||||
```ini
|
||||
myhostname = omegakube.fr
|
||||
mydomain = omegakube.fr
|
||||
myorigin = $mydomain
|
||||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
inet_interfaces = loopback-only
|
||||
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
|
||||
```
|
||||
|
||||
```bash
|
||||
# 4. Redémarrer Postfix
|
||||
sudo systemctl restart postfix
|
||||
|
||||
# 5. Vérifier que Postfix écoute sur le port 25
|
||||
sudo netstat -tulnp | grep 25
|
||||
# → Doit afficher : tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
|
||||
|
||||
# 6. Tester l'envoi local
|
||||
sudo apt install mailutils -y # Si pas déjà installé
|
||||
echo "Test email" | mail -s "Test Postfix" votre@email.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **Partie 2 : Configuration Apache pour CGI Python**
|
||||
|
||||
```bash
|
||||
# 1. Activer le module CGI
|
||||
sudo a2enmod cgi
|
||||
|
||||
# 2. Donner les permissions au script
|
||||
chmod +x /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python/send_mail.py
|
||||
|
||||
# 3. Donner la propriété à www-data (utilisateur Apache)
|
||||
sudo chown -R www-data:www-data /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python/
|
||||
|
||||
# 4. Configurer Apache pour permettre CGI dans le répertoire Python
|
||||
sudo nano /etc/apache2/sites-available/omegakube.conf
|
||||
```
|
||||
|
||||
**Ajouter dans la configuration Apache :**
|
||||
```apache
|
||||
<Directory "/home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python">
|
||||
Options +ExecCGI
|
||||
AddHandler cgi-script .py
|
||||
Require all granted
|
||||
</Directory>
|
||||
```
|
||||
|
||||
```bash
|
||||
# 5. Redémarrer Apache
|
||||
sudo systemctl restart apache2
|
||||
|
||||
# 6. Vérifier que CGI est activé
|
||||
sudo apache2ctl -M | grep cgi
|
||||
# → Doit afficher : cgi_module (shared)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **Partie 3 : Configurer send_mail.py**
|
||||
|
||||
**Éditer le fichier :**
|
||||
```bash
|
||||
nano /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python/send_mail.py
|
||||
```
|
||||
|
||||
**Configurer ces lignes (pour Postfix local) :**
|
||||
```python
|
||||
TO_EMAIL = "contact@omegakube.fr"
|
||||
FROM_EMAIL = "noreply@omegakube.fr"
|
||||
SMTP_HOST = "localhost" # Ou "127.0.0.1"
|
||||
SMTP_PORT = 25
|
||||
SMTP_SSL = False # Pas de SSL pour localhost
|
||||
SMTP_USER = "" # Pas d'authentification
|
||||
SMTP_PASSWORD = "" # Pas d'authentification
|
||||
```
|
||||
|
||||
**Pour d'autres fournisseurs (Gmail, OVH, etc.) :**
|
||||
```python
|
||||
# Exemple pour Gmail
|
||||
SMTP_HOST = "smtp.gmail.com"
|
||||
SMTP_PORT = 587
|
||||
SMTP_SSL = False
|
||||
SMTP_USER = "votre@gmail.com"
|
||||
SMTP_PASSWORD = "votre_app_password" # Utilisez un "App Password" si 2FA
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **Partie 4 : Tests**
|
||||
|
||||
#### **Test 1 : Vérifier Postfix**
|
||||
```bash
|
||||
# Vérifier le statut
|
||||
sudo systemctl status postfix
|
||||
|
||||
# Vérifier les logs SMTP
|
||||
tail -f /var/log/mail.log
|
||||
```
|
||||
|
||||
#### **Test 2 : Tester send_mail.py manuellement**
|
||||
```bash
|
||||
# Créer un fichier de test
|
||||
cd /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python
|
||||
echo '{"name": "Test", "email": "votre@email.com", "subject": "Test SMTP", "message": "Ceci est un test"}' > /tmp/test_data.json
|
||||
|
||||
# Exécuter avec simulation de requête POST
|
||||
REQUEST_METHOD=POST CONTENT_LENGTH=85 HTTP_ORIGIN="https://omegakube.fr" python3 send_mail.py < /tmp/test_data.json
|
||||
```
|
||||
|
||||
**Résultat attendu :**
|
||||
```json
|
||||
{"success": true, "message": "Votre message a bien été envoyé ! Nous vous répondrons rapidement."}
|
||||
```
|
||||
|
||||
#### **Test 3 : Tester via le formulaire web**
|
||||
1. Ouvrir le site dans un navigateur
|
||||
2. Remplir le formulaire de contact
|
||||
3. Soumettre
|
||||
4. **Vérifier les logs :**
|
||||
```bash
|
||||
tail -f /var/log/mail.log
|
||||
tail -f /var/log/apache2/error.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 **DÉPANNAGE**
|
||||
|
||||
### **Problème : "Connection refused" sur localhost:25**
|
||||
```bash
|
||||
# Solution 1 : Vérifier que Postfix écoute
|
||||
sudo netstat -tulnp | grep 25
|
||||
|
||||
# Solution 2 : Redémarrer Postfix
|
||||
sudo systemctl restart postfix
|
||||
|
||||
# Solution 3 : Vérifier la configuration
|
||||
sudo postconf -n mynetworks
|
||||
# → Doit contenir : 127.0.0.0/8
|
||||
```
|
||||
|
||||
### **Problème : "Relay access denied"**
|
||||
```bash
|
||||
# Modifier la configuration Postfix
|
||||
sudo nano /etc/postfix/main.cf
|
||||
```
|
||||
```ini
|
||||
# Remplacer par :
|
||||
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
|
||||
```
|
||||
```bash
|
||||
sudo systemctl restart postfix
|
||||
```
|
||||
|
||||
### **Problème : send_mail.py retourne 500 Error**
|
||||
```bash
|
||||
# Vérifier les permissions
|
||||
ls -l /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python/send_mail.py
|
||||
# → Doit afficher : -rwxr-xr-x
|
||||
|
||||
# Vérifier que CGI est activé
|
||||
sudo apache2ctl -M | grep cgi
|
||||
|
||||
# Vérifier le shebang dans send_mail.py
|
||||
head -1 /home/gameurpro12/Documents/Mes_projets/site_Omega_Kube/website-main/assets/python/send_mail.py
|
||||
# → Doit être : #!/usr/bin/env python3
|
||||
```
|
||||
|
||||
### **Problème : Emails marqués comme spam**
|
||||
```bash
|
||||
# Configurer SPF (DNS)
|
||||
# Ajouter cet enregistrement TXT pour omegakube.fr :
|
||||
# v=spf1 a mx ~all
|
||||
|
||||
# Vérifier votre IP sur les blacklists
|
||||
# https://mxtoolbox.com/blacklists.aspx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 **CONFIGURATIONS SMTP PAR FOURNISSEUR**
|
||||
|
||||
| Fournisseur | SMTP_HOST | SMTP_PORT | SMTP_SSL | Authentification | User | Password |
|
||||
|------------|-----------|-----------|----------|-----------------|------|----------|
|
||||
| **Local (Postfix)** | localhost | 25 | False | Non | - | - |
|
||||
| **Gmail** | smtp.gmail.com | 587 | False | Oui | email@gmail.com | App Password |
|
||||
| **Gmail SSL** | smtp.gmail.com | 465 | True | Oui | email@gmail.com | App Password |
|
||||
| **OVH** | ssl0.ovh.net | 587 | False | Oui | contact@omegakube.fr | mot de passe |
|
||||
| **Mailjet** | in-v3.mailjet.com | 587 | False | Oui | API Key | API Secret |
|
||||
| **SendGrid** | smtp.sendgrid.net | 587 | False | Oui | apikey | API Key |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **RÉSUMÉ DES COMMANDES CLÉS**
|
||||
|
||||
```bash
|
||||
# Installer Postfix
|
||||
sudo apt install postfix mailutils -y
|
||||
|
||||
# Activer CGI dans Apache
|
||||
sudo a2enmod cgi && sudo systemctl restart apache2
|
||||
|
||||
# Permissions
|
||||
chmod +x assets/python/send_mail.py
|
||||
sudo chown -R www-data:www-data assets/python/
|
||||
|
||||
# Redémarrer les services
|
||||
sudo systemctl restart postfix apache2
|
||||
|
||||
# Vérifier
|
||||
sudo systemctl status postfix apache2
|
||||
sudo netstat -tulnp | grep 25
|
||||
sudo apache2ctl -M | grep cgi
|
||||
|
||||
# Tester
|
||||
REQUEST_METHOD=POST CONTENT_LENGTH=85 HTTP_ORIGIN="https://omegakube.fr" python3 assets/python/send_mail.py < /tmp/test_data.json
|
||||
|
||||
# Voir les logs
|
||||
tail -f /var/log/mail.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📌 **NOTES IMPORTANTES**
|
||||
|
||||
1. **Pour Gmail** : Activez "App Password" si vous avez la 2FA : [https://myaccount.google.com/apppasswords](https://myaccount.google.com/apppasswords)
|
||||
2. **Sécurité** : Ne jamais utiliser votre mot de passe Gmail normal, toujours un "App Password"
|
||||
3. **SPF/DKIM** : Configurez ces enregistrements DNS pour éviter que vos emails aient comme spam
|
||||
4. **Backups** : Sauvegardez `/etc/postfix/main.cf` avant toute modification
|
||||
|
||||
---
|
||||
|
||||
**✅ Une fois tout configuré, votre formulaire de contact devrait fonctionner parfaitement !**
|
||||
|
||||
*Besoin d'aide ? Vérifiez les logs avec `tail -f /var/log/mail.log` et `tail -f /var/log/apache2/error.log`*
|
||||
51
TODO.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# TODO - Correctifs "créateurs" + bugs multiples
|
||||
|
||||
## Étape 1
|
||||
- [x] Ajouter des garde-fous stricts dans `assets/js/home.js` pour empêcher qu'une erreur JS bloque l'affichage de la section "Les créateurs".
|
||||
|
||||
|
||||
## Étape 2
|
||||
- [x] Sécuriser le rendu social : fallback **sans injection non contrôlée** si `window.renderSocialLinks` n'existe pas.
|
||||
- Vérification que `window.renderSocialLinks` est une fonction valide (contient 'escapeHTML')
|
||||
- Try/catch autour de l'appel à `renderSocialLinks`
|
||||
- Fallback vide si la fonction est compromise ou absente
|
||||
|
||||
## Étape 3
|
||||
- [x] Ajouter des logs et messages d'erreurs clairs (console) + try/catch autour de l'init team.
|
||||
- Logs ajoutés pour le chargement des données (team, portfolio, partners)
|
||||
- try/catch autour de `initTeamSection`, `openMemberModal`, `openPartnerModal`
|
||||
- Fallback visuel avec messages d'erreur si chargement échoué
|
||||
|
||||
## Étape 4
|
||||
- [x] Vérifier qu'aucune insertion de contenu non échappé n'est faite (XSS-safe) : uniquement `escapeHTML` sur les valeurs et aucune insertion depuis le JSON sans échappement.
|
||||
- Toutes les données JSON sont échappées avec `window.escapeHTML()` avant insertion via innerHTML
|
||||
- Vérification des données (Array.isArray, typeof) avant traitement
|
||||
- Correction appliquée à : `home.js`, `realisations.js`
|
||||
|
||||
## Étape 5
|
||||
- [x] Tester sur la page `index.html` : affichage cards + ouverture modal + fallback si liens manquants.
|
||||
- Tests manuels à effectuer (les corrections sont en place)
|
||||
|
||||
---
|
||||
|
||||
## Résumé des corrections appliquées
|
||||
|
||||
### Fichiers modifiés :
|
||||
1. **`assets/js/home.js`** :
|
||||
- Garde-fous stricts pour les sections Portfolio, Partners, Team
|
||||
- Vérification des réponses HTTP (`res.ok`)
|
||||
- Validation des types de données (Array.isArray, typeof)
|
||||
- try/catch autour de toutes les fonctions critiques
|
||||
- Fallback visuel avec messages d'erreur si échec
|
||||
- Sécurisation de `window.renderSocialLinks` avec vérification de signature
|
||||
|
||||
2. **`assets/js/pages/realisations.js`** :
|
||||
- Sécurisation de `window.renderSocialLinks` pour les liens sociaux des projets
|
||||
- Mêmes vérifications que dans home.js
|
||||
|
||||
### Points vérifiés (déjà conformes) :
|
||||
- `assets/js/main.js` : `escapeHTML` déjà utilisé, fonction sécurisée
|
||||
- `assets/js/services.js` : toutes les données échappées avec `escapeHTML`
|
||||
- `assets/js/services-process.js` : pas de rendu HTML dynamique
|
||||
- `assets/js/pages/legal.js` : pas de rendu HTML dynamique avec données externes
|
||||
- `assets/js/pages/404.js` : pas de rendu HTML dynamique avec données externes
|
||||
331
assets/css/404.css
Normal file
|
|
@ -0,0 +1,331 @@
|
|||
:root {
|
||||
--bg-deep: #0a0a0f;
|
||||
--bg-primary: #12121a;
|
||||
--bg-secondary: #1a1a25;
|
||||
--accent-primary: #8b3a62;
|
||||
--accent-secondary: #5e2a8b;
|
||||
--accent-light: #d4a5c9;
|
||||
--text-primary: #ffffff;
|
||||
--text-secondary: #b8b8c8;
|
||||
--text-muted: #6b6b7b;
|
||||
--glass-bg: rgba(255, 255, 255, 0.03);
|
||||
--glass-border: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
background: var(--bg-deep);
|
||||
color: var(--text-primary);
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bg-grid {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-image:
|
||||
linear-gradient(rgba(139, 58, 98, 0.03) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(139, 58, 98, 0.03) 1px, transparent 1px);
|
||||
background-size: 50px 50px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.bg-glow {
|
||||
position: fixed;
|
||||
width: 600px;
|
||||
height: 600px;
|
||||
border-radius: 50%;
|
||||
filter: blur(150px);
|
||||
opacity: 0.15;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.bg-glow-1 {
|
||||
top: -200px;
|
||||
left: -200px;
|
||||
background: var(--accent-primary);
|
||||
animation: float 8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.bg-glow-2 {
|
||||
bottom: -200px;
|
||||
right: -200px;
|
||||
background: var(--accent-secondary);
|
||||
animation: float 8s ease-in-out infinite reverse;
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% { transform: translate(0, 0); }
|
||||
50% { transform: translate(30px, 30px); }
|
||||
}
|
||||
|
||||
.particles {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.particle {
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
background: var(--accent-light);
|
||||
border-radius: 50%;
|
||||
opacity: 0.3;
|
||||
animation: rise 10s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes rise {
|
||||
0% { transform: translateY(100vh) scale(0); opacity: 0; }
|
||||
10% { opacity: 0.3; }
|
||||
90% { opacity: 0.3; }
|
||||
100% { transform: translateY(-100vh) scale(1); opacity: 0; }
|
||||
}
|
||||
|
||||
.container {
|
||||
text-align: center;
|
||||
z-index: 10;
|
||||
padding: 2rem;
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.error-code {
|
||||
font-size: clamp(8rem, 25vw, 14rem);
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
margin-bottom: 1rem;
|
||||
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary), var(--accent-light));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
animation: glitch 3s infinite;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
transition: transform 0.3s ease, filter 0.3s ease;
|
||||
}
|
||||
|
||||
.error-code:hover {
|
||||
transform: scale(1.05);
|
||||
filter: brightness(1.2);
|
||||
}
|
||||
|
||||
.error-code:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.error-code::before,
|
||||
.error-code::after {
|
||||
content: '404';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.error-code::before {
|
||||
animation: glitch-1 0.3s infinite linear alternate-reverse;
|
||||
clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%);
|
||||
}
|
||||
|
||||
.error-code::after {
|
||||
animation: glitch-2 0.3s infinite linear alternate-reverse;
|
||||
clip-path: polygon(0 65%, 100% 65%, 100% 100%, 0 100%);
|
||||
}
|
||||
|
||||
@keyframes glitch {
|
||||
0%, 90%, 100% { transform: translate(0); }
|
||||
92% { transform: translate(-2px, 2px); }
|
||||
94% { transform: translate(2px, -2px); }
|
||||
96% { transform: translate(-2px, -2px); }
|
||||
98% { transform: translate(2px, 2px); }
|
||||
}
|
||||
|
||||
@keyframes glitch-1 {
|
||||
0% { transform: translate(0); }
|
||||
100% { transform: translate(-3px, 1px); }
|
||||
}
|
||||
|
||||
@keyframes glitch-2 {
|
||||
0% { transform: translate(0); }
|
||||
100% { transform: translate(3px, -1px); }
|
||||
}
|
||||
|
||||
.error-icon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
margin: 0 auto 2rem;
|
||||
background: var(--glass-bg);
|
||||
border: 1px solid var(--glass-border);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
animation: pulse-icon 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.error-icon svg {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
color: var(--accent-light);
|
||||
}
|
||||
|
||||
@keyframes pulse-icon {
|
||||
0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(139, 58, 98, 0.4); }
|
||||
50% { transform: scale(1.05); box-shadow: 0 0 0 15px rgba(139, 58, 98, 0); }
|
||||
}
|
||||
|
||||
.error-title {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.error-message {
|
||||
font-size: 1rem;
|
||||
color: var(--text-muted);
|
||||
line-height: 1.7;
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
|
||||
.error-message span {
|
||||
color: var(--accent-light);
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.875rem 1.75rem;
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn svg { width: 18px; height: 18px; }
|
||||
|
||||
.btn-primary {
|
||||
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
|
||||
color: white;
|
||||
box-shadow: 0 4px 20px rgba(139, 58, 98, 0.3);
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 30px rgba(139, 58, 98, 0.4);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background: var(--glass-bg);
|
||||
border: 1px solid var(--glass-border);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-color: var(--accent-primary);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.portal {
|
||||
position: absolute;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
pointer-events: none;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.portal-left { left: -100px; top: 50%; transform: translateY(-50%); }
|
||||
.portal-right { right: -100px; top: 50%; transform: translateY(-50%); }
|
||||
|
||||
.portal-ring {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border: 2px solid var(--accent-primary);
|
||||
border-radius: 50%;
|
||||
animation: rotate 10s linear infinite;
|
||||
}
|
||||
|
||||
.portal-ring:nth-child(2) { inset: 20px; border-color: var(--accent-secondary); animation-duration: 8s; animation-direction: reverse; }
|
||||
.portal-ring:nth-child(3) { inset: 40px; border-color: var(--accent-light); animation-duration: 6s; }
|
||||
|
||||
@keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
||||
|
||||
.footer {
|
||||
position: fixed;
|
||||
bottom: 2rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
color: var(--text-muted);
|
||||
font-size: 0.85rem;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.footer a { color: var(--accent-light); text-decoration: none; transition: color 0.3s ease; }
|
||||
.footer a:hover { color: var(--text-primary); }
|
||||
|
||||
.logo-mini {
|
||||
font-weight: 700;
|
||||
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
/* Responsive 404 */
|
||||
@media (max-width: 768px) {
|
||||
.error-code { font-size: clamp(5rem, 20vw, 8rem); }
|
||||
.error-icon { width: 60px; height: 60px; margin-bottom: 1.5rem; }
|
||||
.error-icon svg { width: 30px; height: 30px; }
|
||||
.error-title { font-size: 1.4rem; }
|
||||
.error-message { font-size: 0.9rem; padding: 0 1rem; }
|
||||
.buttons { flex-direction: column; width: 100%; padding: 0 1rem; }
|
||||
.btn { width: 100%; justify-content: center; padding: 1rem 1.5rem; }
|
||||
.portal { display: none; }
|
||||
.footer { bottom: 1rem; font-size: 0.75rem; }
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.container { padding: 1rem; }
|
||||
.error-code { font-size: clamp(4rem, 18vw, 6rem); margin-bottom: 0.5rem; }
|
||||
.error-icon { width: 50px; height: 50px; margin-bottom: 1rem; }
|
||||
.error-icon svg { width: 24px; height: 24px; }
|
||||
.error-title { font-size: 1.2rem; }
|
||||
.error-message { font-size: 0.85rem; margin-bottom: 2rem; }
|
||||
.btn { font-size: 0.9rem; padding: 0.875rem 1.25rem; }
|
||||
}
|
||||
|
||||
@media (max-height: 600px) {
|
||||
.error-icon { display: none; }
|
||||
.error-code { margin-bottom: 0.5rem; }
|
||||
.error-title { font-size: 1.2rem; margin-bottom: 0.5rem; }
|
||||
.error-message { margin-bottom: 1.5rem; }
|
||||
}
|
||||
46
assets/css/legal.css
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/* assets/css/legal.css - styles pour les pages légales */
|
||||
|
||||
/* Hero */
|
||||
.page-hero {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 3rem 1rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.page-hero .hero-content { max-width: 1100px; text-align: center; }
|
||||
.page-hero .hero-content h1 { margin-bottom: 0.5rem; }
|
||||
.page-hero .hero-content p { margin: 0; }
|
||||
|
||||
/* Legal content */
|
||||
.legal-content { padding: 2.5rem 1rem 4rem; }
|
||||
.legal-container { max-width: 900px; margin: 0 auto; }
|
||||
.legal-section { margin-bottom: 2rem; }
|
||||
.legal-section h2 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 700;
|
||||
margin: 0 0 1rem 0;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.legal-section h2 svg { width: 18px; height: 18px; flex-shrink: 0; }
|
||||
.legal-card {
|
||||
background: var(--card-bg);
|
||||
padding: 1.5rem;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 20px var(--shadow-color);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
.legal-card p,
|
||||
.legal-card ul {
|
||||
margin: 0 0 0.75rem 0;
|
||||
line-height: 1.7;
|
||||
font-size: 1rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.legal-card p:last-child,
|
||||
.legal-card ul:last-child { margin-bottom: 0; }
|
||||
.legal-card ul { padding-left: 1.5rem; }
|
||||
.legal-card ul li { margin-bottom: 0.25rem; }
|
||||
4353
assets/css/main.css
Normal file
78
assets/data/faq.json
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
[
|
||||
{
|
||||
"id": "delais",
|
||||
"icon": "clock",
|
||||
"title": "Délais & Process",
|
||||
"questions": [
|
||||
{
|
||||
"q": "Quels sont les délais habituels pour un bot Discord ?",
|
||||
"a": "Un bot Discord RP complet demande généralement entre 2 et 4 semaines selon la complexité des systèmes (économie, combat, inventaire…). Nous établissons un planning détaillé dès la validation du devis."
|
||||
},
|
||||
{
|
||||
"q": "Et pour une map Fortnite ?",
|
||||
"a": "La création d'une map UEFN prend entre 3 et 6 semaines. Ce délai inclut le design, la construction, les scripts Verse et les tests de performance. Des points réguliers sont organisés pour valider chaque étape."
|
||||
},
|
||||
{
|
||||
"q": "Comment se déroule le processus du début à la fin ?",
|
||||
"a": "Notre processus se déroule en 4 étapes : <strong>Contact</strong> (échange sur vos besoins), <strong>Devis</strong> (proposition détaillée et validation), <strong>Création</strong> (développement avec suivi régulier) et <strong>Livraison</strong> (tests, ajustements et remise des fichiers). Vous êtes impliqué à chaque étape."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "tarifs",
|
||||
"icon": "dollar-sign",
|
||||
"title": "Tarifs & Devis",
|
||||
"questions": [
|
||||
{
|
||||
"q": "Comment sont calculés vos tarifs ?",
|
||||
"a": "Chaque projet est unique, nos tarifs sont donc établis sur devis selon la complexité, le nombre de fonctionnalités et les délais souhaités. Le devis est gratuit, détaillé et sans engagement."
|
||||
},
|
||||
{
|
||||
"q": "Le consulting est-il vraiment gratuit ?",
|
||||
"a": "Oui, la première consultation est entièrement gratuite et sans engagement. Elle permet de cerner vos besoins, évaluer votre projet et vous orienter vers la solution la plus adaptée, qu'elle soit payante ou non."
|
||||
},
|
||||
{
|
||||
"q": "Y a-t-il des frais cachés ?",
|
||||
"a": "Non. Le devis que nous soumettons est exhaustif. Les éventuels ajouts de fonctionnalités en cours de projet font l'objet d'un avenant écrit et validé par les deux parties avant toute réalisation."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "revisions",
|
||||
"icon": "refresh-cw",
|
||||
"title": "Révisions & Support",
|
||||
"questions": [
|
||||
{
|
||||
"q": "Que signifient les « révisions illimitées* » en graphisme ?",
|
||||
"a": "Les révisions illimitées s'appliquent aux ajustements dans le cadre du brief initial : couleurs, proportions, typo, espacement. Elles ne couvrent pas les changements de direction créative complète (nouveau concept, refonte totale), qui sont facturés séparément."
|
||||
},
|
||||
{
|
||||
"q": "Que se passe-t-il si mon bot plante après livraison ?",
|
||||
"a": "Un mois de support est inclus après chaque livraison. Durant cette période, tout bug lié à notre code est corrigé gratuitement et en priorité. Passé ce délai, un contrat de maintenance peut être négocié."
|
||||
},
|
||||
{
|
||||
"q": "Puis-je modifier moi-même le projet après livraison ?",
|
||||
"a": "Oui, vous recevez les fichiers sources complets. Nous livrons également une documentation pour vous permettre d'effectuer des modifications de base. Pour des évolutions plus complexes, notre équipe reste disponible."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "technique",
|
||||
"icon": "code",
|
||||
"title": "Technique",
|
||||
"questions": [
|
||||
{
|
||||
"q": "Quelles technologies utilisez-vous pour les bots Discord ?",
|
||||
"a": "Nos bots sont développés principalement en Python avec discord.py, couplés à une base de données MySQL. Pour l'hébergement, nous pouvons vous guider vers des solutions adaptées (VPS, serveur dédié) ou gérer l'hébergement pour vous."
|
||||
},
|
||||
{
|
||||
"q": "Les maps Fortnite sont-elles compatibles avec les dernières mises à jour du jeu ?",
|
||||
"a": "Oui. Nous développons exclusivement via UEFN (Unreal Editor for Fortnite), l'outil officiel d'Epic Games, ce qui garantit une compatibilité optimale et l'accès aux dernières fonctionnalités disponibles."
|
||||
},
|
||||
{
|
||||
"q": "Pouvez-vous reprendre un projet existant ?",
|
||||
"a": "Oui, nous réalisons des audits de projets existants. Après analyse du code ou de la map, nous vous soumettons un rapport et un plan d'action. C'est d'ailleurs inclus dans notre offre de consulting gratuit."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
119
assets/data/partners.json
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
[
|
||||
{
|
||||
"name": "victorias-vice",
|
||||
"displayName": " Victoria's Vice",
|
||||
"description": "Serveur RP whitelist Fortnite sur thème italien. L'une de nos collaborations les plus abouties.",
|
||||
"longDesc": "Victoria's Vice est un serveur RP whitelist Fortnite immersif basé sur une esthétique italienne unique. OmégaKube a développé l'intégralité de la map UEFN, le bot RP Vicy et l'identité visuelle du projet.",
|
||||
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
||||
"since": "2025",
|
||||
"services": [
|
||||
"Sessions RP Victoria's Vice 2"
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "70",
|
||||
"label": "Joueurs max"
|
||||
},
|
||||
{
|
||||
"icon": "home",
|
||||
"value": "30+",
|
||||
"label": "Bâtiments"
|
||||
},
|
||||
{
|
||||
"icon": "play",
|
||||
"value": "30+",
|
||||
"label": "Sessions"
|
||||
}
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/8D564jm2SD",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "https://www.youtube.com/@VictoriasVice",
|
||||
"tiktok": "",
|
||||
"website": "#",
|
||||
"epicgames": "https://www.fortnite.com/@omega_kube_team"
|
||||
},
|
||||
"logo": "assets/images/partners/victorias-vice.png"
|
||||
},
|
||||
{
|
||||
"name": "red-dust-redemption",
|
||||
"displayName": "Red Dust Redemption",
|
||||
"description": "Plongez au cœur du Far West en 1884, dans l’Ouest des États-Unis où chaque choix compte.",
|
||||
"longDesc": "Bienvenue sur Red Dust Redemption RP WL.Plongez au cœur du Far West en 1884, dans l’Ouest des États-Unis où chaque choix compte. Une multitude de possibilités s'offrent à vous. Notamment en travaillant au saloon avec piano en fond, ambiance chaleureuse et rencontres garanties, c'est l’endroit idéal pour ceux qui aiment la convivialité. Et si le danger vous attire, sachez que plusieurs organisations criminelles n’attendent que vous. Si l’aventure vous tente, n’attendez plus et foncez-nous rejoindre dès maintenant.",
|
||||
"gradient": "linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))",
|
||||
"since": "2025",
|
||||
"services": [
|
||||
"Sessions RP Red Dust Redemption 2"
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "45+",
|
||||
"label": "Joueurs max"
|
||||
},
|
||||
{
|
||||
"icon": "home",
|
||||
"value": "+6",
|
||||
"label": "Paysages uniques"
|
||||
},
|
||||
{
|
||||
"icon": "play",
|
||||
"value": "+50",
|
||||
"label": "Sessions"
|
||||
}
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/FUamNpf7hq",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"website": "#",
|
||||
"epicgames": "https://www.fortnite.com/@kayrix"
|
||||
},
|
||||
"logo": "assets/images/partners/red-dust-redemption.jpg"
|
||||
},
|
||||
{
|
||||
"name": "site-omega",
|
||||
"displayName": " Site Omega",
|
||||
"description": "Site dans l'univers SCP entièrement en UEFN.",
|
||||
"longDesc": "Site Omega est un projet ambitieux qui vise à recréer l'univers de la Fondation SCP dans Fortnite en utilisant UEFN. Les joueurs peuvent explorer des installations secrètes, interagir avec des anomalies et vivre des expériences uniques inspirées de l'univers SCP.",
|
||||
"gradient": "linear-gradient(135deg, #1a3a5e, #3a5e8b)",
|
||||
"since": "2025",
|
||||
"services": [
|
||||
"Map UEFN",
|
||||
"Bot Discord",
|
||||
"Branding"
|
||||
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "star",
|
||||
"value": "?",
|
||||
"label": "Stat 1"
|
||||
},
|
||||
{
|
||||
"icon": "zap",
|
||||
"value": "?",
|
||||
"label": "Stat 2"
|
||||
},
|
||||
{
|
||||
"icon": "heart",
|
||||
"value": "?",
|
||||
"label": "Stat 3"
|
||||
}
|
||||
],
|
||||
"social": {
|
||||
"discord": "#",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
||||
"tiktok": "",
|
||||
"website": "#",
|
||||
"epicgames": "https://www.fortnite.com/@omega_kube_team"
|
||||
},
|
||||
"logo": "assets/images/partners/site-omega.png"
|
||||
}
|
||||
]
|
||||
491
assets/data/projects.json
Normal file
|
|
@ -0,0 +1,491 @@
|
|||
[
|
||||
{
|
||||
"id": 1,
|
||||
"category": "bot",
|
||||
"title": "Kuby",
|
||||
"desc": "Un bot multifonction, de sécurité, d'administration et utilitaire.",
|
||||
"gradient": "linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))",
|
||||
"year": "2025",
|
||||
"duration": "3 semaines",
|
||||
"features": [
|
||||
"Système d'absences staff",
|
||||
"Systèmes de sécurité et logs",
|
||||
"Gestion de sanctions",
|
||||
"Système de convocations",
|
||||
"Tickets avec stats",
|
||||
"Et bien plus à venir"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Python",
|
||||
"icon": "code"
|
||||
},
|
||||
{
|
||||
"name": "Discord.py",
|
||||
"icon": "message-circle"
|
||||
},
|
||||
{
|
||||
"name": "MySQL",
|
||||
"icon": "database"
|
||||
},
|
||||
{
|
||||
"name": "Bash",
|
||||
"icon": "terminal"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "1075+",
|
||||
"label": "Utilisateurs"
|
||||
},
|
||||
{
|
||||
"icon": "terminal",
|
||||
"value": "150+",
|
||||
"label": "Commandes"
|
||||
},
|
||||
{
|
||||
"icon": "activity",
|
||||
"value": "97%",
|
||||
"label": "Uptime"
|
||||
},
|
||||
{
|
||||
"icon": "clock",
|
||||
"value": "3",
|
||||
"label": "Semaines de dev"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/kuby/",
|
||||
"files": [
|
||||
"imgk-1.png",
|
||||
"yt:dQw4w9WgXcQ"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/FwvNkvu5dy",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"category": "map",
|
||||
"title": "Victoria's Vice",
|
||||
"desc": "Victoria's Vice est serveur RP whitelist Fortnite, Victoria's Vice, qui est basé sur un thème italien ! Plongez-vous dans un univers authentique où chaque partie est une immersion dans les rues, la culture, et l'ambiance unique italienne.",
|
||||
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
||||
"year": "2025",
|
||||
"duration": "4 mois",
|
||||
"features": [
|
||||
"économie réaliste",
|
||||
"30+ bâtiments",
|
||||
"Système jour/nuit",
|
||||
"Serveur Whitelist",
|
||||
"Métiers légaux variés",
|
||||
"Bot RP Vicy exclusif"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Fortnite Creative",
|
||||
"icon": "map"
|
||||
},
|
||||
{
|
||||
"name": "UEFN",
|
||||
"icon": "layers"
|
||||
},
|
||||
{
|
||||
"name": "Verse",
|
||||
"icon": "cpu"
|
||||
},
|
||||
{
|
||||
"name": "Texturing",
|
||||
"icon": "image"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "play",
|
||||
"value": "30+",
|
||||
"label": "Sessions"
|
||||
},
|
||||
{
|
||||
"icon": "home",
|
||||
"value": "30+",
|
||||
"label": "Bâtiments"
|
||||
},
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "70",
|
||||
"label": "Joueurs max"
|
||||
},
|
||||
{
|
||||
"icon": "calendar",
|
||||
"value": "4",
|
||||
"label": "Mois de dev"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/victorias-vice-1/",
|
||||
"files": [
|
||||
"imgvv1-1.jpg",
|
||||
"imgvv1-2.jpg",
|
||||
"imgvv1-3.jpg",
|
||||
"imgvv1-4.jpg",
|
||||
"imgvv1-5.jpg",
|
||||
"imgvv1-6.jpg",
|
||||
"imgvv1-7.jpg",
|
||||
"imgvv1-8.jpg",
|
||||
"TrailerOfficielVV1.mp4"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/8D564jm2SD",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": "",
|
||||
"epicgames": "https://www.fortnite.com/@omega_kube_team"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"category": "bot",
|
||||
"title": "Vicy",
|
||||
"desc": "Bot RP ville avec économie réaliste, tickets whitelist automatisé et cartes d'identités.",
|
||||
"gradient": "linear-gradient(135deg, #3a1f5e, #8b3a62)",
|
||||
"year": "2024",
|
||||
"duration": "",
|
||||
"features": [
|
||||
"Économie réaliste",
|
||||
"Gestion ticket Whitelist",
|
||||
"Carte d'identités",
|
||||
"Prise de RDV",
|
||||
"système de comptes avec RIB",
|
||||
"Fonctionnalités bonus"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Python",
|
||||
"icon": "code"
|
||||
},
|
||||
{
|
||||
"name": "Discord.py",
|
||||
"icon": "message-circle"
|
||||
},
|
||||
{
|
||||
"name": "MySQL",
|
||||
"icon": "database"
|
||||
},
|
||||
{
|
||||
"name": "Pillow",
|
||||
"icon": "image"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "300+",
|
||||
"label": "Utilisateurs"
|
||||
},
|
||||
{
|
||||
"icon": "terminal",
|
||||
"value": "100+",
|
||||
"label": "Commandes"
|
||||
},
|
||||
{
|
||||
"icon": "credit-card",
|
||||
"value": "60+",
|
||||
"label": "RIB générés"
|
||||
},
|
||||
{
|
||||
"icon": "activity",
|
||||
"value": "99%",
|
||||
"label": "Uptime"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/vicy/",
|
||||
"files": [
|
||||
"imgvicy-1.png"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/8D564jm2SD",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"category": "graphisme",
|
||||
"title": "Branding Omega Kube",
|
||||
"desc": "Identité visuelle complète incluant logo, bannières, emojis personnalisés et templates pour Omega Kube.",
|
||||
"gradient": "linear-gradient(135deg, #2d1b5e, #5E2040)",
|
||||
"year": "2024",
|
||||
"duration": "1 semaine",
|
||||
"features": [
|
||||
"Logo principal",
|
||||
"Charte graphique",
|
||||
"Bannières",
|
||||
"Animations After Effects"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Photoshop",
|
||||
"icon": "edit"
|
||||
},
|
||||
{
|
||||
"name": "Illustrator",
|
||||
"icon": "pen-tool"
|
||||
},
|
||||
{
|
||||
"name": "After Effects",
|
||||
"icon": "film"
|
||||
},
|
||||
{
|
||||
"name": "Figma",
|
||||
"icon": "pen-tool"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "layers",
|
||||
"value": "5+",
|
||||
"label": "Éléments"
|
||||
},
|
||||
{
|
||||
"icon": "clock",
|
||||
"value": "2h",
|
||||
"label": "After Effects"
|
||||
},
|
||||
{
|
||||
"icon": "pen-tool",
|
||||
"value": "3h",
|
||||
"label": "Illustrator"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/branding-omega-kube/",
|
||||
"files": [
|
||||
"imgk-1.png",
|
||||
"imgk-2.png",
|
||||
"videok-3.mp4"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/FwvNkvu5dy",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"category": "map",
|
||||
"title": "Site Omega",
|
||||
"desc": "Site dans l'univers SCP entièrement en UEFN avec des systèmes innovants jamais vus dans le fortnite RP.",
|
||||
"gradient": "linear-gradient(135deg, #1a3a5e, #3a5e8b)",
|
||||
"year": "2026",
|
||||
"duration": "4 mois",
|
||||
"features": [
|
||||
"Intégration de SCP",
|
||||
"Cinématiques",
|
||||
"Modèles 3D",
|
||||
"Site Souterrain",
|
||||
"Terraforming extérieur"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Fortnite Creative",
|
||||
"icon": "map"
|
||||
},
|
||||
{
|
||||
"name": "UEFN",
|
||||
"icon": "layers"
|
||||
},
|
||||
{
|
||||
"name": "Verse",
|
||||
"icon": "cpu"
|
||||
},
|
||||
{
|
||||
"name": "Custom Props",
|
||||
"icon": "box"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "grid",
|
||||
"value": "6+",
|
||||
"label": "Secteurs"
|
||||
},
|
||||
{
|
||||
"icon": "shield",
|
||||
"value": "15+",
|
||||
"label": "SCP"
|
||||
},
|
||||
{
|
||||
"icon": "cpu",
|
||||
"value": "30+",
|
||||
"label": "Systèmes"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/site-omega/",
|
||||
"files": [
|
||||
"imgso-1.png",
|
||||
"imgso-2.png",
|
||||
"imgso-3.png",
|
||||
"imgso-4.png",
|
||||
"imgso-5.png",
|
||||
"imgso-6.png",
|
||||
"imgso-7.png",
|
||||
"imgso-8.png",
|
||||
"imgso-9.jpg"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
||||
"twitter": "",
|
||||
"epicgames": "https://www.fortnite.com/@omega_kube_team"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"category": "map",
|
||||
"title":"Victoria's Vice 2",
|
||||
"desc": "Suite de Victoria's Vice, avec une map plus grande, plus de bâtiments, plus de systèmes et une immersion encore plus poussée dans l'univers italien.",
|
||||
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
||||
"year": "2026",
|
||||
"duration": "en cours...",
|
||||
"features": [
|
||||
"économie réaliste",
|
||||
"50+ bâtiments",
|
||||
"Système jour/nuit",
|
||||
"Serveur Whitelist",
|
||||
"Métiers légaux variés",
|
||||
"Bot RP Vicy exclusif"
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Fortnite Creative",
|
||||
"icon": "map"
|
||||
},
|
||||
{
|
||||
"name": "UEFN",
|
||||
"icon": "layers"
|
||||
},
|
||||
{
|
||||
"name": "Verse",
|
||||
"icon": "cpu"
|
||||
},
|
||||
{
|
||||
"name": "Texturing",
|
||||
"icon": "image"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "play",
|
||||
"value": "en cours...",
|
||||
"label": "Sessions"
|
||||
},
|
||||
{
|
||||
"icon": "home",
|
||||
"value": "en cours...",
|
||||
"label": "Bâtiments"
|
||||
},
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "en cours...",
|
||||
"label": "Joueurs max"
|
||||
},
|
||||
{
|
||||
"icon": "calendar",
|
||||
"value": "en cours...",
|
||||
"label": "Mois de dev"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/victorias-vice-2/",
|
||||
"files": [
|
||||
"imgvv2-1.jpg",
|
||||
"imgvv2-2.jpg",
|
||||
"imgvv2-3.jpg",
|
||||
"https://www.youtube.com/watch?v=Lx-1FWOJN9E"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/AM3e58cZvX",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": "",
|
||||
"epicgames": "https://www.fortnite.com/@omega_kube_team"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"category": "bot",
|
||||
"title": "Beta",
|
||||
"desc": "En cours de développement chez Omega Kube.",
|
||||
"gradient": "linear-gradient(135deg, #000000, #434343)",
|
||||
"year": "2026",
|
||||
"duration": "en cours...",
|
||||
"features": [
|
||||
"en cours..."
|
||||
],
|
||||
"tech": [
|
||||
{
|
||||
"name": "Python",
|
||||
"icon": "code"
|
||||
},
|
||||
{
|
||||
"name": "Discord.py",
|
||||
"icon": "message-circle"
|
||||
},
|
||||
{
|
||||
"name": "MySQL",
|
||||
"icon": "database"
|
||||
},
|
||||
{
|
||||
"name": "Pillow",
|
||||
"icon": "image"
|
||||
},
|
||||
{
|
||||
"name": "Autre tech",
|
||||
"icon": "tool"
|
||||
}
|
||||
],
|
||||
"stats": [
|
||||
{
|
||||
"icon": "users",
|
||||
"value": "en cours...",
|
||||
"label": "Utilisateurs"
|
||||
},
|
||||
{
|
||||
"icon": "terminal",
|
||||
"value": "en cours...",
|
||||
"label": "Commandes"
|
||||
},
|
||||
{
|
||||
"icon": "credit-card",
|
||||
"value": "en cours...",
|
||||
"label": "RP menés"
|
||||
},
|
||||
{
|
||||
"icon": "activity",
|
||||
"value": "en cours...",
|
||||
"label": "Uptime"
|
||||
}
|
||||
],
|
||||
"images": "assets/images/projects/beta/",
|
||||
"files": [
|
||||
"imgb-1.png",
|
||||
"imgb-2.png",
|
||||
"yt:dQw4w9WgXcQ"
|
||||
],
|
||||
"social": {
|
||||
"discord": "https://discord.gg/FwvNkvu5dy",
|
||||
"instagram": "",
|
||||
"tiktok": "",
|
||||
"youtube": "",
|
||||
"twitter": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
174
assets/data/services.json
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
[
|
||||
{
|
||||
"id": "bots",
|
||||
"nav": {
|
||||
"label": "Bots Discord",
|
||||
"icon": "code",
|
||||
"stamp": {"type": "popular","text": "Populaire"}
|
||||
},
|
||||
"visual": {
|
||||
"accentFrom": "#8b3a62",
|
||||
"accentTo": "#a64d79",
|
||||
"stamp": {"type": "popular","text": "★ Populaire","animated": true}
|
||||
},
|
||||
"title": "Bots Discord RP",
|
||||
"description": "Des bots entièrement personnalisés pour animer et gérer vos serveurs Role Play. Nous développons des systèmes complets adaptés à votre univers et à vos mécaniques de jeu.",
|
||||
"highlights": [
|
||||
{"value": "2-4","label": "Semaines de dev"},
|
||||
{"value": "1 mois","label": "Support inclus"},
|
||||
{"value": "100%", "label": "Personnalisable"}
|
||||
],
|
||||
"features": [
|
||||
{"icon": "dollar-sign", "title": "Économie virtuelle","desc": "Monnaie, banque, transactions"},
|
||||
{"icon": "briefcase","title": "Système de métiers","desc": "Jobs, skills, progression"},
|
||||
{"icon": "shield","title": "Combat & Stats","desc": "PvP, PvE, attributs"},
|
||||
{"icon": "box","title": "Inventaire avancé","desc": "Items, crafting, échanges"},
|
||||
{"icon": "flag","title": "Factions & Guildes","desc": "Clans, territoires, guerres"},
|
||||
{"icon": "settings", "title": "Panel Admin","desc": "Interface web de gestion"}
|
||||
],
|
||||
"cta": [
|
||||
{"label": "Demander un devis","href": "../index.html#contact", "style": "primary","icon": "message-circle"},
|
||||
{"label": "Voir nos réalisations","href": "realisations.html","style": "secondary","icon": "eye"}
|
||||
],
|
||||
"note": []
|
||||
},
|
||||
{
|
||||
"id": "maps",
|
||||
"nav": {
|
||||
"label": "Maps RP",
|
||||
"icon": "map",
|
||||
"stamp": {"type": "soon","text": "Bientôt dispo"}
|
||||
},
|
||||
"visual": {
|
||||
"accentFrom": "#1a5e8b",
|
||||
"accentTo": "#3a8bb5",
|
||||
"stamp": { "type": "soon","text": "✦ Bientôt dispo","animated": true }
|
||||
},
|
||||
"title": "Maps RP",
|
||||
"description": "Des environnements immersifs créés sur mesure pour vos sessions Role Play. De la ville moderne au village médiéval, nous donnons vie à tous les univers.",
|
||||
"highlights": [
|
||||
{"value": "3-6","label": "Semaines de création"},
|
||||
{"value": "50+","label": "Joueurs supportés"},
|
||||
{"value": "UEFN","label": "Compatible"}
|
||||
],
|
||||
"features": [
|
||||
{"icon": "home","title": "Bâtiments détaillés","desc": "Intérieurs accessibles et déco"},
|
||||
{"icon": "sun","title": "Cycle jour/nuit","desc": "Ambiance dynamique"},
|
||||
{"icon": "zap","title": "Zones interactives","desc": "Scripts et triggers"},
|
||||
{"icon": "cpu","title": "Optimisation","desc": "Performance garantie"},
|
||||
{"icon": "map-pin","title": "Points d'intérêt","desc": "Lieux uniques et mémorables"},
|
||||
{"icon": "edit-3","title": "Modifications","desc": "Ajustements post-livraison"}
|
||||
],
|
||||
"cta": [
|
||||
{"label": "Demander un devis","href": "../index.html#contact","style": "primary","icon": "message-circle"},
|
||||
{"label": "Voir nos maps","href": "realisations.html","style": "secondary","icon": "eye"}
|
||||
],
|
||||
"note": []
|
||||
},
|
||||
{
|
||||
"id": "graphisme",
|
||||
"nav": {
|
||||
"label": "Graphisme",
|
||||
"icon": "image",
|
||||
"stamp": null
|
||||
},
|
||||
"visual": {
|
||||
"accentFrom": "#8b5e3a",
|
||||
"accentTo": "#b58a5a",
|
||||
"stamp": null
|
||||
},
|
||||
"title": "Créations Graphiques",
|
||||
"description": "Une identité visuelle forte et cohérente pour vos projets. Du logo aux bannières, nous créons des visuels qui marquent les esprits et attirent votre communauté.",
|
||||
"highlights": [
|
||||
{"value": "1-2","label": "Semaines"},
|
||||
{"value": "∞","label": "Révisions*"},
|
||||
{"value": "HD","label": "Qualité"}
|
||||
],
|
||||
"features": [
|
||||
{"icon": "hexagon","title": "Logo & Branding","desc": "Identité visuelle complète"},
|
||||
{"icon": "layout","title": "Bannières Discord","desc": "Server banner, splash, icône"},
|
||||
{"icon": "smile","title": "Emojis custom","desc": "Pack emojis personnalisés"},
|
||||
{"icon": "grid","title": "Icônes & Assets","desc": "Items, skills, badges"},
|
||||
{"icon": "play-circle","title": "Animations","desc": "GIFs et motion design"},
|
||||
{"icon": "book-open","title": "Guide de style","desc": "Charte graphique fournie"}
|
||||
],
|
||||
"cta": [
|
||||
{"label": "Demander un devis","href": "../index.html#contact","style": "primary","icon": "message-circle" },
|
||||
{"label": "Voir nos créations","href": "realisations.html","style": "secondary","icon": "eye"}
|
||||
],
|
||||
"note": [
|
||||
{"value": "*","label": "Révisions illimitées sous conditions, voir FAQ"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "consulting",
|
||||
"nav": {
|
||||
"label": "Consulting",
|
||||
"icon": "users",
|
||||
"stamp": {"type": "free","text": "Gratuit"}
|
||||
},
|
||||
"visual": {
|
||||
"accentFrom": "#3a8b5e",
|
||||
"accentTo": "#5ab57a",
|
||||
"stamp": {"type": "free","text": "✓ Gratuit","animated": true}
|
||||
},
|
||||
"title": "Consulting & Suivi",
|
||||
"titleStamp": {"type": "free","text": "Gratuit"},
|
||||
"description": "Bénéficiez de notre expérience pour structurer, lancer et développer votre projet RP. Conseils stratégiques et accompagnement personnalisé.",
|
||||
"highlights": [
|
||||
{"value": "50+","label": "Projets accompagnés" },
|
||||
{"value": "3 ans","label": "D'expérience"},
|
||||
{"value": "24/7","label": "Support Discord"}
|
||||
],
|
||||
"features": [
|
||||
{"icon": "search","title": "Audit serveur","desc": "Analyse de l'existant"},
|
||||
{"icon": "trending-up","title": "Stratégie croissance","desc": "Plan de développement"},
|
||||
{"icon": "user-check","title": "Formation staff","desc": "Équipe modération"},
|
||||
{"icon": "heart","title": "Expérience joueur","desc": "Optimisation UX"},
|
||||
{"icon": "calendar","title": "Planning events","desc": "Calendrier d'animations"},
|
||||
{"icon": "dollar-sign","title": "Monétisation","desc": "Conseils revenus"}
|
||||
],
|
||||
"cta": [
|
||||
{"label": "Prendre rendez-vous","href": "../index.html#contact","style": "primary","icon": "message-circle"}
|
||||
],
|
||||
"note": [
|
||||
{"value": "✓","label": "Première consultation gratuite et sans engagement"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pack",
|
||||
"nav": {
|
||||
"label": "Pack Complet",
|
||||
"icon": "package",
|
||||
"stamp": {"type": "best","text": "Meilleur choix"}
|
||||
},
|
||||
"visual": {
|
||||
"accentFrom": "#8b3a8b",
|
||||
"accentTo": "#b55ab5",
|
||||
"stamp": {"type": "best","text": "✓ Meilleur choix","animated": true}
|
||||
},
|
||||
"title": "Pack Serveur Complet",
|
||||
"titleStamp": {"type": "promo","text": "-20%"},
|
||||
"description": "La solution tout-en-un pour lancer votre projet RP. Bot personnalisé, map Fortnite, identité visuelle et accompagnement : tout est inclus pour un lancement réussi.",
|
||||
"highlights": [
|
||||
{"value": "-20%","label": "VS services séparés*"},
|
||||
{"value": "3 mois","label": "Support inclus"},
|
||||
{"value": "Clé en main","label": "Prêt à lancer"}
|
||||
],
|
||||
"features": [
|
||||
{"icon": "code","title": "Bot Discord RP","desc": "Système complet personnalisé"},
|
||||
{"icon": "map","title": "Map RP","desc": "Environnement sur mesure"},
|
||||
{"icon": "image","title": "Pack graphique","desc": "Logo, bannières, emojis"},
|
||||
{"icon": "server","title": "Config Discord","desc": "Serveur prêt à l'emploi"},
|
||||
{"icon": "book","title": "Documentation","desc": "Guides et tutoriels"},
|
||||
{"icon": "headphones","title": "Support 3 mois","desc": "Accompagnement lancement"}
|
||||
],
|
||||
"cta": [
|
||||
{"label": "Demander un devis pack","href": "../index.html#contact","style": "primary","icon": "message-circle"},
|
||||
{"label": "Voir nos packs livrés","href": "realisations.html","style": "secondary","icon": "eye"}
|
||||
],
|
||||
"note": [
|
||||
{"value": "*","label": "Réduction de 20% appliquée automatiquement vs services séparés"}
|
||||
]
|
||||
}
|
||||
]
|
||||
264
assets/data/team.json
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
[
|
||||
{
|
||||
"id": "534003230435442690",
|
||||
"name": "Nixfix",
|
||||
"role": "Directeur",
|
||||
"avatar": "N",
|
||||
"bio": "Président de l'association et coordinateur des équipes d'Omega Kube, Nixfix donne vie aux identités visuelles des projets RP. Passionné de design graphique, il excelle aussi bien dans la création de logos que dans la gestion de projets. Son style unique allie une esthétique gaming affirmée à un véritable professionnalisme, afin de proposer des visuels percutants et cohérents.",
|
||||
"stats": [
|
||||
{
|
||||
"value": "6",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "15+",
|
||||
"label": "Projets"
|
||||
},
|
||||
{
|
||||
"value": "★★★",
|
||||
"label": "Expert"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Polyvalent",
|
||||
"Gestion de projets",
|
||||
"Illustrator",
|
||||
"After Effects",
|
||||
"Figma",
|
||||
"UEFN",
|
||||
"Photoshop",
|
||||
"Verse"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "353942721997832195",
|
||||
"name": "MG",
|
||||
"role": "Co-Directeur",
|
||||
"avatar": "M",
|
||||
"bio": "Je suis un développeur UEFN et Builder Minecraft polyvalent avec une solide expérience dans la création de systèmes pour divers Serveurs RP. J'ai travaillé sur des projets de plus ou moins grande envergure sur diverses plateformes de jeux. J'ai aussi une certaine expérience en gestion de projet et je me montre polyvalent pour beaucoup de tâches",
|
||||
"stats": [
|
||||
{
|
||||
"value": "6",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "25+",
|
||||
"label": "Systèmes"
|
||||
},
|
||||
{
|
||||
"value": "∞",
|
||||
"label": "Fan de Louis de Funès"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Polyvalent",
|
||||
"Gestion de projets",
|
||||
"UEFN",
|
||||
"Builder Minecraft"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "971446412690722826",
|
||||
"name": "Gameur",
|
||||
"role": "Agent - Développeur Principal",
|
||||
"avatar": "G",
|
||||
"bio": "Avec plus de 3 ans d'expérience dans le self-hosting, j'ai créé des bots pour des communautés de toutes tailles, allant de petits serveurs à des projets d'envergure. Mon expertise couvre la création de commandes personnalisées, l'intégration d'API tierces et la gestion de bases de données pour offrir des fonctionnalités avancées et une expérience utilisateur fluide.",
|
||||
"stats": [
|
||||
{
|
||||
"value": "3",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "50+",
|
||||
"label": "Projets"
|
||||
},
|
||||
{
|
||||
"value": "★★★★",
|
||||
"label": "Intermédiaire - Avancé"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Python",
|
||||
"Discord.py",
|
||||
"API REST",
|
||||
"Docker",
|
||||
"self-hosting",
|
||||
"Linux",
|
||||
"Gestion de projets"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "561485865562406914",
|
||||
"name": "KIRITO_KMA",
|
||||
"role": "Agent - Développeur Full-Stack",
|
||||
"avatar": "K",
|
||||
"bio": "Développeur Full-Stack passionné, maîtrisent une large gamme de technologies pour créer des solutions complètes et performantes. Mon expertise s'étend du développement backend robuste à la création d'interfaces utilisateur intuitives, en passant par la gestion de bases de données et l'intégration d'API tierces. Mon panel de compétences s'étend également à la mise en place d'environnements de développement et de déploiement efficaces, garantissant ainsi la qualité et la fiabilité de chaque projet sur lequel je travaille.",
|
||||
"stats": [
|
||||
{
|
||||
"value": "4",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "50+",
|
||||
"label": "Projets menés"
|
||||
},
|
||||
{
|
||||
"value": "1000%",
|
||||
"label": "Maîtrise du shifoumi"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Dev Full-Stack",
|
||||
"SEO",
|
||||
"Map-Maker",
|
||||
"Bot Discord",
|
||||
"Scénariste",
|
||||
"Shifoumi",
|
||||
"Command Blocks Minecraft"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "1324439906046574693",
|
||||
"name": "Lowei",
|
||||
"role": "Agent - Développeur Backend",
|
||||
"avatar": "L",
|
||||
"bio": "Salut ! Je suis un développeur backend passionné par la création de systèmes robustes, performants et dans l'automatisation de tâches. N'hésite pas à checker mes réseaux ci-dessous !",
|
||||
"stats": [
|
||||
{
|
||||
"value": "5",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "20+",
|
||||
"label": "Systèmes"
|
||||
},
|
||||
{
|
||||
"value": "∞",
|
||||
"label": "Disponibilité"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Python",
|
||||
"HTML",
|
||||
"CSS",
|
||||
"C, C++",
|
||||
"Java",
|
||||
"Blender"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "899299051080663050",
|
||||
"name": "Ryou",
|
||||
"role": "Agent - Modélisation 3D",
|
||||
"avatar": "R",
|
||||
"bio": "Hey, je suis Ryou, créatif et développeur passionné par la création sous toutes ses formes : code, 3D, concept art ou musique/sound design. J'aime construire des applications esthétiquement belles et utiles, ou des jeux harmonieux et amusants. Je conçois également des modèles 3D pour VTubers, animations ou jeux vidéo. Mes commissions sont ouvertes, n'hésitez pas à me follow sur mes réseaux !",
|
||||
"stats": [
|
||||
{
|
||||
"value": "6",
|
||||
"label": "Ans d'exp."
|
||||
},
|
||||
{
|
||||
"value": "5+",
|
||||
"label": "Projets"
|
||||
},
|
||||
{
|
||||
"value": "15+",
|
||||
"label": "Commissions réalisées"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Blender",
|
||||
"HTML",
|
||||
"TypeScript",
|
||||
"JavaScript",
|
||||
"C, C#, C++",
|
||||
"Fl Studio",
|
||||
"Piano, Guitare, Bass"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "https://x.com/ryoucafe_1",
|
||||
"instagram": "https://www.instagram.com/ryoucafe/",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": "https://github.com/ryoucafe"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "1151495567256584253",
|
||||
"name": "Kuby",
|
||||
"role": "Bot Discord",
|
||||
"avatar": "K",
|
||||
"bio": "Kuby est le gardien de la qualité du moindre octets au quetta-octets chez OmégaKube. Aucune commande ne lui échappe. Il execute méticuleusement chaque instructions, chaque commande, chaque interaction pour garantir une expérience sans accroc aux utilisateurs finaux.",
|
||||
"stats": [
|
||||
{
|
||||
"value": "2",
|
||||
"label": "Yotta d'exp sur Discord"
|
||||
},
|
||||
{
|
||||
"value": "500+",
|
||||
"label": "Commandes réalisées"
|
||||
},
|
||||
{
|
||||
"value": "0",
|
||||
"label": "Vulnérabilités"
|
||||
}
|
||||
],
|
||||
"skills": [
|
||||
"Moderation",
|
||||
"Events",
|
||||
"Documentation",
|
||||
"Serveur Discord",
|
||||
"Administration",
|
||||
"Bot"
|
||||
],
|
||||
"social": {
|
||||
"discord": "",
|
||||
"twitter": "",
|
||||
"instagram": "",
|
||||
"youtube": "",
|
||||
"tiktok": "",
|
||||
"github": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
BIN
assets/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf
Normal file
BIN
assets/fonts/Montserrat/Montserrat-VariableFont_wght.ttf
Normal file
93
assets/fonts/Montserrat/OFL.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
Copyright 2024 The Montserrat.Git Project Authors (https://github.com/JulietaUla/Montserrat.git)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
81
assets/fonts/Montserrat/README.txt
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
Montserrat Variable Font
|
||||
========================
|
||||
|
||||
This download contains Montserrat as both variable fonts and static fonts.
|
||||
|
||||
Montserrat is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Montserrat-VariableFont_wght.ttf
|
||||
Montserrat-Italic-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Montserrat:
|
||||
static/Montserrat-Thin.ttf
|
||||
static/Montserrat-ExtraLight.ttf
|
||||
static/Montserrat-Light.ttf
|
||||
static/Montserrat-Regular.ttf
|
||||
static/Montserrat-Medium.ttf
|
||||
static/Montserrat-SemiBold.ttf
|
||||
static/Montserrat-Bold.ttf
|
||||
static/Montserrat-ExtraBold.ttf
|
||||
static/Montserrat-Black.ttf
|
||||
static/Montserrat-ThinItalic.ttf
|
||||
static/Montserrat-ExtraLightItalic.ttf
|
||||
static/Montserrat-LightItalic.ttf
|
||||
static/Montserrat-Italic.ttf
|
||||
static/Montserrat-MediumItalic.ttf
|
||||
static/Montserrat-SemiBoldItalic.ttf
|
||||
static/Montserrat-BoldItalic.ttf
|
||||
static/Montserrat-ExtraBoldItalic.ttf
|
||||
static/Montserrat-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
BIN
assets/fonts/Montserrat/static/Montserrat-Black.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-BlackItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Bold.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-BoldItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-ExtraBoldItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-ExtraLight.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-ExtraLightItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Italic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Light.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-LightItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Medium.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-MediumItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Regular.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-SemiBold.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-SemiBoldItalic.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-Thin.ttf
Normal file
BIN
assets/fonts/Montserrat/static/Montserrat-ThinItalic.ttf
Normal file
BIN
assets/fonts/custom_font_large.otf
Normal file
BIN
assets/fonts/custom_font_small.otf
Normal file
BIN
assets/images/favicon/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/images/favicon/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
assets/images/favicon/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/images/favicon/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
assets/images/favicon/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/images/favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
13
assets/images/favicon/site.webmanifest
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "Omega Kube",
|
||||
"short_name": "Omega Kube",
|
||||
"description": "L'univers du Role Play réinventé",
|
||||
"icons": [
|
||||
{ "src": "/assets/images/favicon/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
|
||||
{ "src": "/assets/images/favicon/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
|
||||
],
|
||||
"theme_color": "#0a0a0f",
|
||||
"background_color": "#0a0a0f",
|
||||
"display": "standalone",
|
||||
"start_url": "/"
|
||||
}
|
||||
BIN
assets/images/imgrd-1.jpg
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
assets/images/imgrd-2.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/images/logo.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/images/old-logo.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/images/partners/red-dust-redemption.jpg
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
assets/images/partners/rickroll.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
assets/images/partners/site-omega.png
Normal file
|
After Width: | Height: | Size: 921 KiB |
BIN
assets/images/partners/the-last-refuge.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/images/partners/victorias-vice.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
assets/images/partners/victorias-vicebis.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/images/projects/beta/imgb-1.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
assets/images/projects/beta/imgb-2.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
assets/images/projects/branding-omega-kube/gifk-4.gif
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/images/projects/branding-omega-kube/imgk-1.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
BIN
assets/images/projects/branding-omega-kube/imgk-2.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/images/projects/branding-omega-kube/videok-3.mp4
Normal file
BIN
assets/images/projects/kuby/imgk-1.png
Normal file
|
After Width: | Height: | Size: 9 KiB |
BIN
assets/images/projects/kuby/imgk-1bis.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
assets/images/projects/site-omega/imgso-1.png
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
assets/images/projects/site-omega/imgso-2.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
assets/images/projects/site-omega/imgso-3.png
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
assets/images/projects/site-omega/imgso-4.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
assets/images/projects/site-omega/imgso-5.png
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
assets/images/projects/site-omega/imgso-6.png
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/images/projects/site-omega/imgso-7.png
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
assets/images/projects/site-omega/imgso-8.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/images/projects/site-omega/imgso-9.jpg
Normal file
|
After Width: | Height: | Size: 437 KiB |
BIN
assets/images/projects/victorias-vice-1/TrailerOfficielVV1.mp4
Normal file
BIN
assets/images/projects/victorias-vice-1/imgvv1-1.jpg
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-2.jpg
Normal file
|
After Width: | Height: | Size: 196 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-3.jpg
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-4.jpg
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-5.jpg
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-6.jpg
Normal file
|
After Width: | Height: | Size: 302 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-7.jpg
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
assets/images/projects/victorias-vice-1/imgvv1-8.jpg
Normal file
|
After Width: | Height: | Size: 600 KiB |
BIN
assets/images/projects/victorias-vice-2/imgvv2-1.jpg
Normal file
|
After Width: | Height: | Size: 352 KiB |
BIN
assets/images/projects/victorias-vice-2/imgvv2-2.jpg
Normal file
|
After Width: | Height: | Size: 478 KiB |
BIN
assets/images/projects/victorias-vice-2/imgvv2-3.jpg
Normal file
|
After Width: | Height: | Size: 720 KiB |
BIN
assets/images/projects/vicy/imgvicy-1.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
assets/images/social/discord1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/images/social/discord2.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
assets/images/social/discord3.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
1
assets/images/social/epicgames.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><title>Epic Games</title><path fill="white" d="M3.537 0C2.165 0 1.66.506 1.66 1.879V18.44a4.262 4.262 0 00.02.433c.031.3.037.59.316.92.027.033.311.245.311.245.153.075.258.13.43.2l8.335 3.491c.433.199.614.276.928.27h.002c.314.006.495-.071.928-.27l8.335-3.492c.172-.07.277-.124.43-.2 0 0 .284-.211.311-.243.28-.33.285-.621.316-.92a4.261 4.261 0 00.02-.434V1.879c0-1.373-.506-1.88-1.878-1.88zm13.366 3.11h.68c1.138 0 1.688.553 1.688 1.696v1.88h-1.374v-1.8c0-.369-.17-.54-.523-.54h-.235c-.367 0-.537.17-.537.539v5.81c0 .369.17.54.537.54h.262c.353 0 .523-.171.523-.54V8.619h1.373v2.143c0 1.144-.562 1.71-1.7 1.71h-.694c-1.138 0-1.7-.566-1.7-1.71V4.82c0-1.144.562-1.709 1.7-1.709zm-12.186.08h3.114v1.274H6.117v2.603h1.648v1.275H6.117v2.774h1.74v1.275h-3.14zm3.816 0h2.198c1.138 0 1.7.564 1.7 1.708v2.445c0 1.144-.562 1.71-1.7 1.71h-.799v3.338h-1.4zm4.53 0h1.4v9.201h-1.4zm-3.13 1.235v3.392h.575c.354 0 .523-.171.523-.54V4.965c0-.368-.17-.54-.523-.54zm-3.74 10.147a1.708 1.708 0 01.591.108 1.745 1.745 0 01.49.299l-.452.546a1.247 1.247 0 00-.308-.195.91.91 0 00-.363-.068.658.658 0 00-.28.06.703.703 0 00-.224.163.783.783 0 00-.151.243.799.799 0 00-.056.299v.008a.852.852 0 00.056.31.7.7 0 00.157.245.736.736 0 00.238.16.774.774 0 00.303.058.79.79 0 00.445-.116v-.339h-.548v-.565H7.37v1.255a2.019 2.019 0 01-.524.307 1.789 1.789 0 01-.683.123 1.642 1.642 0 01-.602-.107 1.46 1.46 0 01-.478-.3 1.371 1.371 0 01-.318-.455 1.438 1.438 0 01-.115-.58v-.008a1.426 1.426 0 01.113-.57 1.449 1.449 0 01.312-.46 1.418 1.418 0 01.474-.309 1.58 1.58 0 01.598-.111 1.708 1.708 0 01.045 0zm11.963.008a2.006 2.006 0 01.612.094 1.61 1.61 0 01.507.277l-.386.546a1.562 1.562 0 00-.39-.205 1.178 1.178 0 00-.388-.07.347.347 0 00-.208.052.154.154 0 00-.07.127v.008a.158.158 0 00.022.084.198.198 0 00.076.066.831.831 0 00.147.06c.062.02.14.04.236.061a3.389 3.389 0 01.43.122 1.292 1.292 0 01.328.17.678.678 0 01.207.24.739.739 0 01.071.337v.008a.865.865 0 01-.081.382.82.82 0 01-.229.285 1.032 1.032 0 01-.353.18 1.606 1.606 0 01-.46.061 2.16 2.16 0 01-.71-.116 1.718 1.718 0 01-.593-.346l.43-.514c.277.223.578.335.9.335a.457.457 0 00.236-.05.157.157 0 00.082-.142v-.008a.15.15 0 00-.02-.077.204.204 0 00-.073-.066.753.753 0 00-.143-.062 2.45 2.45 0 00-.233-.062 5.036 5.036 0 01-.413-.113 1.26 1.26 0 01-.331-.16.72.72 0 01-.222-.243.73.73 0 01-.082-.36v-.008a.863.863 0 01.074-.359.794.794 0 01.214-.283 1.007 1.007 0 01.34-.185 1.423 1.423 0 01.448-.066 2.006 2.006 0 01.025 0zm-9.358.025h.742l1.183 2.81h-.825l-.203-.499H8.623l-.198.498h-.81zm2.197.02h.814l.663 1.08.663-1.08h.814v2.79h-.766v-1.602l-.711 1.091h-.016l-.707-1.083v1.593h-.754zm3.469 0h2.235v.658h-1.473v.422h1.334v.61h-1.334v.442h1.493v.658h-2.255zm-5.3.897l-.315.793h.624zm-1.145 5.19h8.014l-4.09 1.348z"/></svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
3
assets/images/social/fortnite.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 3h10v3H11v3.5h5.5v3H11v8.5L7 22V3z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 242 B |
14
assets/images/social/garrysmod.svg
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<svg viewBox="0 0 384 384" xmlns="http://www.w3.org/2000/svg" width="20" height="20">
|
||||
<rect width="384" height="384" rx="60" fill="#0081FF"/>
|
||||
<path class="st1" d="M235.57,221.91c-2.84,3.4-5.68,7.51-9.22,10.88c-7.2,6.84-16.2,10.41-25.77,12.49
|
||||
c-11.53,2.51-23.13,2.18-34.76,0.61c-14.52-1.95-27.27-7.83-38.38-17.22c-9.35-7.91-16.06-17.8-20.84-29.04
|
||||
c-4.88-11.46-7.4-23.51-8.68-35.81c-1.85-17.78-0.99-35.42,4.33-52.6c4.37-14.11,11.01-27,21.08-38.03
|
||||
C135,60.4,149.18,52.08,166.1,48.59c9.46-1.95,19.01-1.95,28.57-0.4c17,2.77,30.13,11.49,39.75,25.68c0.25,0.32,1.19,1.72,1.19,1.72
|
||||
s0-4.78,0-6.83c-0.01-5.16,0-16.51,0-16.51s1.09,0,1.35,0c15.28-0.05,49.97-0.01,49.97-0.01s-0.01,1.96-0.01,4.28
|
||||
c0,64.4,0.09,128.8-0.05,193.19c-0.04,20.36-5.79,39-18.84,54.95c-10.15,12.4-23.25,20.57-38.25,25.85
|
||||
c-14.6,5.14-29.7,6.91-45.08,6.26c-16.81-0.71-32.99-4.35-47.75-12.64c-22.22-12.49-35.72-31.22-39.07-56.78
|
||||
c-0.45-3.39-0.56-6.84-0.69-10.26c-0.01-0.21-0.07-1.31-0.07-1.31s1.04,0,1.26,0c15.24-0.07,30.48-0.08,45.72-0.03
|
||||
c0.18,0,0.9,0.01,0.9,0.01s-0.01,0.96-0.01,1.12c0.16,8.86,2.62,16.86,8.77,23.44c4.59,4.91,10.26,8.16,16.7,9.89
|
||||
c14.96,4.03,29.59,3.19,43.49-3.98c12.5-6.45,20.4-16.54,21.3-30.85c0.67-10.79,0.27-21.66,0.34-32.49
|
||||
C235.57,222.35,235.57,221.79,235.57,221.91z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/images/social/hytale.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
8
assets/images/social/minecraft.svg
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" width="20" height="20">
|
||||
<rect x="0" y="0" width="100" height="100" fill="#2d1b33"/>
|
||||
<rect x="20" y="21" width="20" height="19" fill="white"/>
|
||||
<rect x="60" y="21" width="20" height="19" fill="white"/>
|
||||
<rect x="40" y="41" width="20" height="10" fill="white"/>
|
||||
<rect x="30" y="51" width="10" height="29" fill="white"/>
|
||||
<rect x="60" y="51" width="10" height="29" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 454 B |
BIN
assets/images/team/1151495567256584253.png
Normal file
|
After Width: | Height: | Size: 9 KiB |
BIN
assets/images/team/1324439906046574693.png
Normal file
|
After Width: | Height: | Size: 300 KiB |
BIN
assets/images/team/353942721997832195.gif
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/images/team/534003230435442690.png
Normal file
|
After Width: | Height: | Size: 317 KiB |
BIN
assets/images/team/561485865562406914.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
assets/images/team/971446412690722826.png
Normal file
|
After Width: | Height: | Size: 384 KiB |