Compare commits
20
Commits
1189141937
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d6a94e251
|
||
|
|
f0fd5eeca1
|
||
|
|
1b05d2f9a4
|
||
|
|
bb680f60b0
|
||
|
|
d0fc7207f2
|
||
|
|
66da280a50
|
||
|
|
742a275958
|
||
|
|
e3b562afcf
|
||
|
|
284e29f6d5
|
||
|
|
2f16ccb4b8
|
||
|
|
4307c80bd6
|
||
|
|
17540980af
|
||
|
|
da094adaad
|
||
|
|
5f5e581d99
|
||
|
|
851b03c60b
|
||
|
|
db5fc5240c
|
||
|
|
1644d2606f
|
||
|
|
d3afa0ca1d | ||
|
|
de4fd1d54c | ||
|
|
b650a52591 |
@@ -1,5 +1,25 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### 🛡️ Sécurité
|
||||||
|
- ✅ **Headers HTTP de sécurité** : ajout d'un `.htaccess` Apache avec `Strict-Transport-Security`, `Content-Security-Policy`, `X-Frame-Options`, `X-Content-Type-Options`, `Referrer-Policy` et `Permissions-Policy`
|
||||||
|
- ✅ **Redirection HTTP → HTTPS** : forçage du HTTPS via `mod_rewrite`
|
||||||
|
- ✅ **CSP stricte** : refactorisation des scripts inline en fichiers externes et suppression des gestionnaires `onclick` inline
|
||||||
|
|
||||||
|
### 🎬 Contenu
|
||||||
|
- ✅ **Nouveau projet** : ajout de `FEDIVERSE.OKI` dans la section projets
|
||||||
|
- ✅ **Logos clients** : récupération locale des logos distants et service via le CDN
|
||||||
|
- ✅ **Réseaux sociaux** : mise à jour du lien Discord, retrait de Stoat, X (Twitter) et TikTok
|
||||||
|
- ✅ **Chaînes PAWOL.NU** : distinction visuelle dans la page contact entre les chaînes WhatsApp/Telegram et les autres moyens de contact
|
||||||
|
- ✅ **Mentions légales** : hébergeur mis à jour (OVH → o2switch)
|
||||||
|
- ✅ **Footer** : année du copyright générée automatiquement via un shortcode Eleventy
|
||||||
|
- ✅ **Liens Labola** : lien footer vers le dépôt du site, lien contact vers l'organisation Gitea
|
||||||
|
|
||||||
|
### 🔧 Technique
|
||||||
|
- ✅ Shortcode Eleventy `{% year %}` pour l'année en cours
|
||||||
|
- ✅ Événements JS attachés dans `main.js` pour les accordéons FAQ et les dons personnalisés
|
||||||
|
|
||||||
## Version 2.1.0 - Design Afrofuturisme Caribéen (2025-11-05)
|
## Version 2.1.0 - Design Afrofuturisme Caribéen (2025-11-05)
|
||||||
|
|
||||||
### 🌓 Système de Thème Clair/Sombre
|
### 🌓 Système de Thème Clair/Sombre
|
||||||
|
|||||||
+43
-30
@@ -1,17 +1,16 @@
|
|||||||
# Guide de contribution
|
# Guide de contribution
|
||||||
|
|
||||||
Merci de votre intérêt pour contribuer au site dE l'ORGANISATION KA INTERNATIONALE !
|
Merci de votre intérêt pour contribuer au site de l'ORGANISATION KA INTERNATIONALE !
|
||||||
|
|
||||||
## Ajouter du contenu
|
## Ajouter du contenu
|
||||||
|
|
||||||
### Ajouter un service Fédiverse
|
### Ajouter un service hébergé
|
||||||
|
|
||||||
Éditez `src/_data/services.json` :
|
Éditez `src/_data/i18n/fr/services.json` (et la version `en/`) :
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"name": "NOM_DU_SERVICE",
|
"name": "NOM_DU_SERVICE",
|
||||||
"icon": "🎯",
|
|
||||||
"platform": "Nom de la plateforme",
|
"platform": "Nom de la plateforme",
|
||||||
"description": "Description du service",
|
"description": "Description du service",
|
||||||
"url": "https://service.o-k-i.net/",
|
"url": "https://service.o-k-i.net/",
|
||||||
@@ -21,20 +20,25 @@ Merci de votre intérêt pour contribuer au site dE l'ORGANISATION KA INTERNATIO
|
|||||||
|
|
||||||
### Ajouter un projet web
|
### Ajouter un projet web
|
||||||
|
|
||||||
Éditez `src/_data/projects.json` :
|
Éditez `src/_data/i18n/fr/projects.json` (et la version `en/`) :
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"name": "NOM.PROJET",
|
"name": "NOM.PROJET",
|
||||||
"icon": "📱",
|
"icon": "📱",
|
||||||
"domain": "nom.projet",
|
"domain": "nom.projet",
|
||||||
"description": "Description du projet"
|
"description": "Description du projet",
|
||||||
|
"url": "https://nom.projet/"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Ajouter un client ou partenaire
|
||||||
|
|
||||||
|
Pour les logos, privilégiez une image locale dans `src/assets/images/` et utilisez le filtre `| cdn` dans les templates. Les URLs distantes fonctionnent mais ne passent pas par le CDN.
|
||||||
|
|
||||||
### Ajouter une valeur
|
### Ajouter une valeur
|
||||||
|
|
||||||
Éditez `src/_data/values.json` :
|
Éditez `src/_data/i18n/fr/values.json` (et la version `en/`) :
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -46,7 +50,7 @@ Merci de votre intérêt pour contribuer au site dE l'ORGANISATION KA INTERNATIO
|
|||||||
|
|
||||||
### Modifier la navigation
|
### Modifier la navigation
|
||||||
|
|
||||||
Éditez `src/_data/navigation.json` :
|
Éditez `src/_data/i18n/fr/navigation.json` (et la version `en/`) :
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -58,18 +62,15 @@ Merci de votre intérêt pour contribuer au site dE l'ORGANISATION KA INTERNATIO
|
|||||||
|
|
||||||
Pour un lien externe, mettez `"external": true`.
|
Pour un lien externe, mettez `"external": true`.
|
||||||
|
|
||||||
### Ajouter une section de contact
|
### Modifier les informations de contact
|
||||||
|
|
||||||
Éditez `src/_data/contact.json` :
|
Les liens de contact sont regroupés par section dans `src/_data/i18n/fr/contact.json` (et la version `en/`). L'icône affichée est déterminée automatiquement à partir du texte du lien (`whatsapp`, `telegram`, `discord`, `labola`, `kontak`/`mail`).
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"title": "🔗 Titre de la section",
|
"title": "💬 Communauté",
|
||||||
"links": [
|
"links": [
|
||||||
{
|
{ "text": "Discord", "url": "https://discord.gg/DPvUCA8dD" }
|
||||||
"text": "Nom du lien",
|
|
||||||
"url": "https://example.com"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -78,17 +79,19 @@ Pour un lien externe, mettez `"external": true`.
|
|||||||
|
|
||||||
Les styles sont dans `src/assets/css/styles.css`.
|
Les styles sont dans `src/assets/css/styles.css`.
|
||||||
|
|
||||||
### Variables CSS disponibles
|
### Variables CSS principales
|
||||||
|
|
||||||
```css
|
```css
|
||||||
--bleu-ocean: #003566;
|
--or-oki: #E8A625;
|
||||||
--jaune-soleil: #FFB700;
|
--noir-oki: #000000;
|
||||||
--rouge-resistance: #D62828;
|
--vert-oki: #00A854;
|
||||||
--vert-terre: #2A9134;
|
--rouge-oki: #ED1C4C;
|
||||||
--orange-communaute: #FB8500;
|
--blanc-creme: #F7F7F2;
|
||||||
--noir-profond: #0A0908;
|
--noir-profond: #1A1A1A;
|
||||||
--blanc-lumiere: #F7F7F2;
|
--gris-sombre: #2A2A2A;
|
||||||
--violet-fedi: #6364FF;
|
--or-clair: #F5BD4F;
|
||||||
|
--vert-clair: #00C569;
|
||||||
|
--rouge-clair: #FF2D5F;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Créer une nouvelle page
|
## Créer une nouvelle page
|
||||||
@@ -108,9 +111,11 @@ description: Description pour le SEO
|
|||||||
</section>
|
</section>
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Ajoutez le lien dans `src/_data/navigation.json` si nécessaire
|
2. Ajoutez le lien dans `src/_data/i18n/fr/navigation.json` (et `en/`) si nécessaire.
|
||||||
|
|
||||||
3. Reconstruisez le site : `npm run build`
|
3. Mettez à jour `src/sitemap.xml`.
|
||||||
|
|
||||||
|
4. Reconstruisez le site : `npm run build`.
|
||||||
|
|
||||||
## Modifier un partial
|
## Modifier un partial
|
||||||
|
|
||||||
@@ -118,11 +123,15 @@ Les partials sont dans `src/_includes/partials/` :
|
|||||||
|
|
||||||
- `nav.njk` - Navigation
|
- `nav.njk` - Navigation
|
||||||
- `hero.njk` - Section hero (accueil)
|
- `hero.njk` - Section hero (accueil)
|
||||||
- `fediverse.njk` - Services Fédiverse
|
- `services.njk` - Services hébergés
|
||||||
- `projects.njk` - Projets web
|
- `projects.njk` - Projets web
|
||||||
- `mission.njk` - Mission et valeurs
|
- `mission.njk` - Mission et valeurs
|
||||||
- `hosting.njk` - Services d'hébergement
|
- `hosting.njk` - Services d'hébergement
|
||||||
- `support.njk` - Section dons
|
- `support.njk` - Section dons
|
||||||
|
- `clients.njk` - Clients / organisations ayant fait confiance
|
||||||
|
- `partners.njk` - Partenaires
|
||||||
|
- `faq.njk` - Questions fréquentes
|
||||||
|
- `engagement.njk` - Appels à l'action
|
||||||
- `contact.njk` - Informations de contact
|
- `contact.njk` - Informations de contact
|
||||||
- `footer.njk` - Pied de page
|
- `footer.njk` - Pied de page
|
||||||
|
|
||||||
@@ -133,7 +142,7 @@ Les partials sont dans `src/_includes/partials/` :
|
|||||||
git checkout -b feature/ma-fonctionnalite
|
git checkout -b feature/ma-fonctionnalite
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Faites vos modifications
|
2. Faites vos modifications.
|
||||||
|
|
||||||
3. Testez localement :
|
3. Testez localement :
|
||||||
```bash
|
```bash
|
||||||
@@ -151,7 +160,7 @@ Les partials sont dans `src/_includes/partials/` :
|
|||||||
git commit -m "Description de vos changements"
|
git commit -m "Description de vos changements"
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Poussez et créez une pull request :
|
6. Poussez et créez une merge request :
|
||||||
```bash
|
```bash
|
||||||
git push origin feature/ma-fonctionnalite
|
git push origin feature/ma-fonctionnalite
|
||||||
```
|
```
|
||||||
@@ -174,6 +183,10 @@ Les partials sont dans `src/_includes/partials/` :
|
|||||||
- Commentaires en français
|
- Commentaires en français
|
||||||
- Gestion des erreurs
|
- Gestion des erreurs
|
||||||
|
|
||||||
|
### Sécurité
|
||||||
|
- Ne pas ajouter de scripts inline sans ajuster la CSP dans `src/.htaccess`.
|
||||||
|
- Conserver les headers de sécurité lors d'une modification du serveur.
|
||||||
|
|
||||||
## Questions ?
|
## Questions ?
|
||||||
|
|
||||||
Contactez-nous à kontak@o-k-i.net ou ouvrez une issue sur Codeberg.
|
Contactez-nous à kontak@o-k-i.net ou ouvrez une issue sur [Labola](https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE/o-k-i.net).
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# o-k-i.net V2
|
# o-k-i.net V2
|
||||||
|
|
||||||
Site web officiel de **ORGANISATION KA INTERNATIONALE (OKI)** - Version 2 construite avec 11ty (Eleventy).
|
Site web officiel de **ORGANISATION KA INTERNATIONALE (OKI)** - Version 2 construite avec 11ty (Eleventy).
|
||||||
|
|
||||||
## À propos
|
## À propos
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ Pas aux GAFAM qui en font leur business. Pas d'algorithmes aveugles, pas de cens
|
|||||||
- **Nunjucks** - Moteur de templates
|
- **Nunjucks** - Moteur de templates
|
||||||
- **CSS personnalisé** - Sans framework
|
- **CSS personnalisé** - Sans framework
|
||||||
- **JavaScript Vanilla** - Interactions et animations
|
- **JavaScript Vanilla** - Interactions et animations
|
||||||
|
- **Apache `.htaccess`** - Headers de sécurité et redirection HTTPS
|
||||||
|
|
||||||
## Structure du projet
|
## Structure du projet
|
||||||
|
|
||||||
@@ -23,14 +24,17 @@ Pas aux GAFAM qui en font leur business. Pas d'algorithmes aveugles, pas de cens
|
|||||||
o-k-i.net-V2/
|
o-k-i.net-V2/
|
||||||
├── src/
|
├── src/
|
||||||
│ ├── _data/ # Données JSON (services, projets, valeurs, etc.)
|
│ ├── _data/ # Données JSON (services, projets, valeurs, etc.)
|
||||||
|
│ │ └── i18n/ # Fichiers de traduction FR/EN
|
||||||
│ ├── _includes/
|
│ ├── _includes/
|
||||||
│ │ ├── layouts/ # Layouts de base
|
│ │ ├── layouts/ # Layouts de base
|
||||||
│ │ └── partials/ # Composants réutilisables
|
│ │ └── partials/ # Composants réutilisables
|
||||||
│ ├── assets/
|
│ ├── assets/
|
||||||
│ │ ├── css/ # Feuilles de style
|
│ │ ├── css/ # Feuilles de style
|
||||||
│ │ ├── js/ # Scripts JavaScript
|
│ │ ├── js/ # Scripts JavaScript
|
||||||
│ │ └── images/ # Images
|
│ │ └── images/ # Images (logos, clients, etc.)
|
||||||
│ └── index.njk # Page d'accueil
|
│ ├── .htaccess # Headers de sécurité et rewrite rules
|
||||||
|
│ ├── index.njk # Page d'accueil
|
||||||
|
│ └── mentions-legales.njk
|
||||||
├── _site/ # Site généré (git ignoré)
|
├── _site/ # Site généré (git ignoré)
|
||||||
├── eleventy.config.js # Configuration 11ty
|
├── eleventy.config.js # Configuration 11ty
|
||||||
└── package.json
|
└── package.json
|
||||||
@@ -40,8 +44,8 @@ o-k-i.net-V2/
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Cloner le dépôt
|
# Cloner le dépôt
|
||||||
git clone https://codeberg.org/OKI/o-k-i.net-V2.git
|
git clone https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE/o-k-i.net.git
|
||||||
cd o-k-i.net-V2
|
cd o-k-i.net
|
||||||
|
|
||||||
# Installer les dépendances
|
# Installer les dépendances
|
||||||
npm install
|
npm install
|
||||||
@@ -69,16 +73,21 @@ npm run build
|
|||||||
|
|
||||||
### Modifier les données
|
### Modifier les données
|
||||||
|
|
||||||
Les données du site sont organisées dans `src/_data/` :
|
Les données du site sont organisées dans `src/_data/i18n/fr/` et `src/_data/i18n/en/` :
|
||||||
|
|
||||||
- `site.json` - Informations générales du site
|
- `site.json` - Informations générales du site
|
||||||
- `services.json` - Services Fédiverse (KUTE, GADE, BOKANTAJ, MIZIK)
|
- `services.json` - Services hébergés (BOKANTE, GADE, NIYAJ, KUTE)
|
||||||
- `projects.json` - Projets web (FEDIVERSE OKI, OKI.RE, NUVEL.NU, JWE.OVH, GONG.GP)
|
- `projects.json` - Projets web (PAWOL.NU, GONG.GP, FEDIVERSE.OKI)
|
||||||
- `partners.json` - Partenaires (Joukawouvè, Aktivist Vybz #AKV)
|
- `partners.json` - Partenaires (Joukawouvè, cyber-mawonaj, Aktivist Vybz #AKV)
|
||||||
|
- `clients.json` - Clients / organisations ayant fait confiance à OKI
|
||||||
- `values.json` - Valeurs de l'organisation
|
- `values.json` - Valeurs de l'organisation
|
||||||
- `contact.json` - Informations de contact
|
- `contact.json` - Informations de contact (groupées par section)
|
||||||
- `navigation.json` - Liens de navigation
|
- `navigation.json` - Liens de navigation
|
||||||
|
|
||||||
|
### Images et CDN
|
||||||
|
|
||||||
|
Les images locales placées dans `src/assets/images/` sont automatiquement copiées dans `_site/assets/images/`. Le filtre `| cdn` appliqué dans les templates préfixe les chemins commençant par `/` avec l'URL du pull zone BunnyCDN définie dans `src/_data/cdn.json`.
|
||||||
|
|
||||||
### Modifier les styles
|
### Modifier les styles
|
||||||
|
|
||||||
Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée sur les couleurs du logo officiel d'OKI :
|
Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée sur les couleurs du logo officiel d'OKI :
|
||||||
@@ -104,6 +113,7 @@ Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée
|
|||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
|
|
||||||
- ✅ Design responsive et moderne
|
- ✅ Design responsive et moderne
|
||||||
|
- ✅ Bilingue FR/EN
|
||||||
- ✅ Animations fluides
|
- ✅ Animations fluides
|
||||||
- ✅ Navigation mobile
|
- ✅ Navigation mobile
|
||||||
- ✅ Scroll smooth
|
- ✅ Scroll smooth
|
||||||
@@ -112,14 +122,18 @@ Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée
|
|||||||
- ✅ Performance optimisée
|
- ✅ Performance optimisée
|
||||||
- ✅ Logo et favicon intégrés
|
- ✅ Logo et favicon intégrés
|
||||||
- ✅ Charte graphique basée sur le logo officiel
|
- ✅ Charte graphique basée sur le logo officiel
|
||||||
|
- ✅ Headers de sécurité HTTP (CSP, HSTS, XFO, etc.)
|
||||||
|
- ✅ Redirection automatique HTTP → HTTPS
|
||||||
|
- ✅ Année du footer générée automatiquement
|
||||||
|
|
||||||
### SEO & Référencement
|
### SEO & Référencement
|
||||||
- ✅ Meta tags Open Graph (Facebook, LinkedIn)
|
- ✅ Meta tags Open Graph (Facebook, LinkedIn)
|
||||||
- ✅ Twitter Cards
|
- ✅ Twitter / X Cards
|
||||||
- ✅ JSON-LD Structured Data (Schema.org)
|
- ✅ JSON-LD Structured Data (Schema.org)
|
||||||
- ✅ Sitemap.xml
|
- ✅ Sitemap.xml
|
||||||
- ✅ Robots.txt
|
- ✅ Robots.txt
|
||||||
- ✅ Balises canonical
|
- ✅ Balises canonical
|
||||||
|
- ✅ Hreflang FR/EN
|
||||||
- ✅ Meta description personnalisées
|
- ✅ Meta description personnalisées
|
||||||
- ✅ Mots-clés pertinents
|
- ✅ Mots-clés pertinents
|
||||||
|
|
||||||
@@ -127,19 +141,20 @@ Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée
|
|||||||
|
|
||||||
1. **Hero** - Présentation de l'organisation avec accroche percutante
|
1. **Hero** - Présentation de l'organisation avec accroche percutante
|
||||||
2. **Solutions** - Segmentation par public (associations, entreprises, citoyens)
|
2. **Solutions** - Segmentation par public (associations, entreprises, citoyens)
|
||||||
3. **Fédiverse** - Services alternatifs (GADE, BOKANTAJ, MIZIK, KUTE)
|
3. **Services hébergés** - Alternatives libres (BOKANTE, GADE, NIYAJ, KUTE)
|
||||||
4. **Projets Web** - Nos projets (FEDIVERSE OKI, OKI.RE, NUVEL.NU, JWE.OVH, GONG.GP)
|
4. **Projets Web** - Nos projets (PAWOL.NU, GONG.GP, FEDIVERSE.OKI)
|
||||||
5. **Mission** - Valeurs et objectifs avec message anti-GAFAM
|
5. **Mission** - Valeurs et objectifs avec message anti-GAFAM
|
||||||
6. **Hébergement** - Services d'hébergement et infrastructure
|
6. **Hébergement** - Services d'hébergement et infrastructure
|
||||||
7. **Support** - Options de dons (Stripe, Liberapay, Ko-fi)
|
7. **Support** - Options de dons (Stripe, Liberapay, Ko-fi)
|
||||||
8. **Partenaires** - Joukawouvè, cyber-mawonaj, Aktivist Vybz #AKV
|
8. **Partenaires** - Joukawouvè, cyber-mawonaj, Aktivist Vybz #AKV
|
||||||
9. **FAQ** - Questions fréquentes avec storytelling sur le nom "Ka"
|
9. **Ils nous ont fait confiance** - KA Ubuntu, KBM
|
||||||
10. **Engagement** - Formulaire de contact et appels à l'action
|
10. **FAQ** - Questions fréquentes avec storytelling sur le nom "Ka"
|
||||||
11. **Contact** - Liens vers réseaux sociaux et plateformes
|
11. **Engagement** - Appels à l'action
|
||||||
|
12. **Contact** - Email, WhatsApp, Discord, chaînes PAWOL.NU, Labola
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request sur [Codeberg](https://codeberg.org/OKI/o-k-i.net-V2).
|
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request sur [Labola](https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE/o-k-i.net).
|
||||||
|
|
||||||
## Licence
|
## Licence
|
||||||
|
|
||||||
@@ -154,14 +169,18 @@ La licence AGPL-V3 est une licence de logiciel libre qui garantit :
|
|||||||
|
|
||||||
Voir le fichier [LICENSE](LICENSE) pour plus de détails ou consultez : https://www.gnu.org/licenses/agpl-3.0.html
|
Voir le fichier [LICENSE](LICENSE) pour plus de détails ou consultez : https://www.gnu.org/licenses/agpl-3.0.html
|
||||||
|
|
||||||
© 2024 ORGANISATION KA INTERNATIONALE
|
© 2026 ORGANISATION KA INTERNATIONALE
|
||||||
|
|
||||||
## Liens
|
## Liens
|
||||||
|
|
||||||
- 🌐 [Site web](https://o-k-i.net)
|
- 🌐 [Site web](https://o-k-i.net)
|
||||||
- 📺 [GADE (PeerTube)](https://gade.o-k-i.net/)
|
- 📺 [GADE (PeerTube)](https://gade.o-k-i.net/)
|
||||||
- 🐦 [BOKANTAJ (Pleroma)](https://bokantaj.o-k-i.net/)
|
- 🐘 [BOKANTE (Mastodon)](https://bokante.o-k-i.net/)
|
||||||
- 🎵 [MIZIK (Funkwhale)](https://mizik.o-k-i.net/library)
|
- ☁️ [NIYAJ (Nextcloud)](https://niyaj.o-k-i.net/)
|
||||||
- 🎙️ [KUTE (Castopod)](https://kute.o-k-i.net/)
|
- 🎙️ [KUTE (Castopod)](https://kute.o-k-i.net/)
|
||||||
- 💻 [Codeberg](https://codeberg.org/OKI)
|
- 💬 [Discord](https://discord.gg/DPvUCA8dD)
|
||||||
|
- 📱 [WhatsApp](https://wa.me/262692229740)
|
||||||
|
- 📢 [Chaîne WhatsApp PAWOL.NU](https://whatsapp.com/channel/0029VbCv7N9AjPXTxygrRu1w)
|
||||||
|
- ✈️ [Chaîne Telegram PAWOL.NU](https://t.me/OrganisationKA)
|
||||||
|
- 💻 [Labola (Gitea)](https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE)
|
||||||
- 📧 kontak@o-k-i.net
|
- 📧 kontak@o-k-i.net
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ Données structurées conformes à Schema.org pour améliorer l'affichage dans l
|
|||||||
- Description
|
- Description
|
||||||
- Adresse physique (Basse-Terre, Guadeloupe)
|
- Adresse physique (Basse-Terre, Guadeloupe)
|
||||||
- Email de contact
|
- Email de contact
|
||||||
- Liens vers les plateformes sociales (GADE, BOKANTAJ, MIZIK, KUTE, Codeberg, Liberapay)
|
- Liens vers les plateformes sociales (GADE, BOKANTE, NIYAJ, KUTE, Discord, Labola, Liberapay)
|
||||||
- Statut : Organisation à but non lucratif
|
- Statut : Organisation à but non lucratif
|
||||||
|
|
||||||
## 🔍 Optimisations par page
|
## 🔍 Optimisations par page
|
||||||
@@ -182,7 +182,8 @@ curl http://localhost:8080/ | grep -E "(og:|twitter:)"
|
|||||||
- [x] Logo haute résolution (512x512)
|
- [x] Logo haute résolution (512x512)
|
||||||
- [ ] Images avec attributs alt
|
- [ ] Images avec attributs alt
|
||||||
- [ ] Performance optimale (Lighthouse score)
|
- [ ] Performance optimale (Lighthouse score)
|
||||||
- [ ] Mobile-friendly (déjà responsive)
|
- [x] Mobile-friendly (déjà responsive)
|
||||||
- [ ] HTTPS activé (à configurer en production)
|
- [x] HTTPS activé et HSTS configuré
|
||||||
|
- [x] Hreflang FR/EN pour les versions multilingues
|
||||||
- [ ] Google Search Console configuré
|
- [ ] Google Search Console configuré
|
||||||
- [ ] Analytics installé (optionnel, respectueux RGPD)
|
- [ ] Analytics installé (optionnel, respectueux RGPD)
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
const cdn = require("./src/_data/cdn.json");
|
|
||||||
|
|
||||||
module.exports = function(eleventyConfig) {
|
module.exports = function(eleventyConfig) {
|
||||||
// Locale-aware content: `t` resolves to the content bundle for the page's locale (fr by default)
|
// Locale-aware content: `t` resolves to the content bundle for the page's locale (fr by default)
|
||||||
eleventyConfig.addGlobalData("eleventyComputed", {
|
eleventyConfig.addGlobalData("eleventyComputed", {
|
||||||
@@ -7,12 +5,6 @@ module.exports = function(eleventyConfig) {
|
|||||||
t: (data) => data.i18n[data.locale || "fr"]
|
t: (data) => data.i18n[data.locale || "fr"]
|
||||||
});
|
});
|
||||||
|
|
||||||
// Serve local images through the BunnyCDN pull zone; leaves external URLs untouched
|
|
||||||
eleventyConfig.addFilter("cdn", (path) => {
|
|
||||||
if (typeof path !== "string" || !path.startsWith("/")) return path;
|
|
||||||
return cdn.url + path;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Copy assets folders to output
|
// Copy assets folders to output
|
||||||
eleventyConfig.addPassthroughCopy("src/assets");
|
eleventyConfig.addPassthroughCopy("src/assets");
|
||||||
|
|
||||||
|
|||||||
Generated
+66
-36
@@ -7,7 +7,7 @@
|
|||||||
"": {
|
"": {
|
||||||
"name": "o-k-i.net-v2",
|
"name": "o-k-i.net-v2",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "AGPL-3.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@11ty/eleventy": "^3.1.2"
|
"@11ty/eleventy": "^3.1.2"
|
||||||
}
|
}
|
||||||
@@ -278,9 +278,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/anymatch/node_modules/picomatch": {
|
"node_modules/anymatch/node_modules/picomatch": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
|
||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -410,9 +410,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.12",
|
"version": "1.1.16",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
|
||||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
"integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -844,9 +844,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gray-matter/node_modules/js-yaml": {
|
"node_modules/gray-matter/node_modules/js-yaml": {
|
||||||
"version": "3.14.1",
|
"version": "3.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz",
|
||||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
"integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1035,10 +1035,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
|
||||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
"integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/puzrin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/nodeca"
|
||||||
|
}
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^2.0.1"
|
"argparse": "^2.0.1"
|
||||||
@@ -1078,19 +1088,29 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/linkify-it": {
|
"node_modules/linkify-it": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz",
|
||||||
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
|
"integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/puzrin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/markdown-it"
|
||||||
|
}
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"uc.micro": "^2.0.0"
|
"uc.micro": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/liquidjs": {
|
"node_modules/liquidjs": {
|
||||||
"version": "10.24.0",
|
"version": "10.27.2",
|
||||||
"resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.27.2.tgz",
|
||||||
"integrity": "sha512-TAUNAdgwaAXjjcUFuYVJm9kOVH7zc0mTKxsG9t9Lu4qdWjB2BEblyVIYpjWcmJLMGgiYqnGNJjpNMHx0gp/46A==",
|
"integrity": "sha512-kvknfAEtOHjHkAAv7GxLEJh8ghpMQm3Fc4uWVyF7hERSTsSRsdC7saWs0p5aDG7GDcWsu5o+T4232O+8KZO55w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1126,15 +1146,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/markdown-it": {
|
"node_modules/markdown-it": {
|
||||||
"version": "14.1.0",
|
"version": "14.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz",
|
||||||
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
|
"integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/puzrin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/markdown-it"
|
||||||
|
}
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^2.0.1",
|
"argparse": "^2.0.1",
|
||||||
"entities": "^4.4.0",
|
"entities": "^4.5.0",
|
||||||
"linkify-it": "^5.0.0",
|
"linkify-it": "^5.0.2",
|
||||||
"mdurl": "^2.0.0",
|
"mdurl": "^2.0.0",
|
||||||
"punycode.js": "^2.3.1",
|
"punycode.js": "^2.3.1",
|
||||||
"uc.micro": "^2.1.0"
|
"uc.micro": "^2.1.0"
|
||||||
@@ -1216,9 +1246,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
|
||||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1358,9 +1388,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
|
||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1474,9 +1504,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/readdirp/node_modules/picomatch": {
|
"node_modules/readdirp/node_modules/picomatch": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
|
||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1675,9 +1705,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/ws": {
|
"node_modules/ws": {
|
||||||
"version": "8.18.3",
|
"version": "8.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz",
|
||||||
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
"integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"url": "https://organisationka.b-cdn.net"
|
|
||||||
}
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
{
|
{
|
||||||
"title": "💻 Code & Development",
|
"title": "💻 Code & Development",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Labola (Gitea)", "url": "https://labola.o-k-i.net/" }
|
{ "text": "Labola (Gitea)", "url": "https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[
|
[
|
||||||
{ "text": "Solutions", "url": "/en/#solutions" },
|
{ "text": "Solutions", "url": "/en/#solutions" },
|
||||||
{ "text": "Our projects", "url": "/en/#projets" },
|
{ "text": "Our projects", "url": "/en/#projets" },
|
||||||
|
{ "text": "Partners", "url": "/en/#partenaires" },
|
||||||
{ "text": "DJANGOKAM", "url": "/en/#djangokam" },
|
{ "text": "DJANGOKAM", "url": "/en/#djangokam" },
|
||||||
{ "text": "Services", "url": "/en/#hebergement" },
|
{ "text": "Services", "url": "/en/#hebergement" },
|
||||||
{ "text": "Donate", "url": "/en/donate/" },
|
{ "text": "Donate", "url": "/en/donate/" },
|
||||||
|
|||||||
@@ -2,25 +2,34 @@
|
|||||||
"section_title": "Our",
|
"section_title": "Our",
|
||||||
"section_title_accent": "Partners",
|
"section_title_accent": "Partners",
|
||||||
"section_subtitle": "They share our values and help enrich our free digital ecosystem",
|
"section_subtitle": "They share our values and help enrich our free digital ecosystem",
|
||||||
"link_text": "Discover on GADE",
|
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"name": "Joukawouvè",
|
"name": "Joukawouvè",
|
||||||
"logo": "/assets/images/joukawouve.png",
|
"logo": "/assets/images/joukawouve.png",
|
||||||
"description": "Sharing Guadeloupean and international news.",
|
"description": "Sharing Guadeloupean and international news.",
|
||||||
"url": "https://gade.o-k-i.net/accounts/joukawouve"
|
"links": [
|
||||||
},
|
{ "url": "https://kute.o-k-i.net/@joukawouve", "text": "Discover on KUTE" },
|
||||||
{
|
{ "url": "https://bokante.o-k-i.net/@joukawouve", "text": "Discover on BOKANTE" },
|
||||||
"name": "cyber-mawonaj",
|
{ "url": "https://gade.o-k-i.net/accounts/joukawouve", "text": "Discover on GADE" }
|
||||||
"logo": "/assets/images/cyber_mawonaj.jpg",
|
]
|
||||||
"description": "Towards digital mawonaj - Winning your freedom also runs through the digital world.",
|
|
||||||
"url": "https://gade.o-k-i.net/c/cyber_mawonaj/videos"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Aktivist Vybz #AKV",
|
"name": "Aktivist Vybz #AKV",
|
||||||
"logo": "/assets/images/akv.png",
|
"logo": "/assets/images/akv.png",
|
||||||
"description": "Committed selectors and DJs, with content focused on activism and cultural expression.",
|
"description": "Committed selectors and DJs, with content focused on activism and cultural expression.",
|
||||||
"url": "https://gade.o-k-i.net/accounts/aktivist_vybz_akv"
|
"links": [
|
||||||
|
{ "url": "https://mizik.o-k-i.net/channels/aktivistvybzakv", "text": "Discover on MIZIK" },
|
||||||
|
{ "url": "https://gade.o-k-i.net/c/aktivist_vybz-1_channel/videos", "text": "Discover on GADE" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cyber-mawonaj",
|
||||||
|
"logo": "/assets/images/cyber_mawonaj.jpg",
|
||||||
|
"description": "Towards digital mawonaj - Winning your freedom also runs through the digital world.",
|
||||||
|
"links": [
|
||||||
|
{ "url": "https://bokante.o-k-i.net/@cybermawonaj", "text": "Discover on BOKANTE" },
|
||||||
|
{ "url": "https://gade.o-k-i.net/c/cyber.mawonaj/videos", "text": "Discover on GADE" }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
{
|
{
|
||||||
"title": "💻 Code & Développement",
|
"title": "💻 Code & Développement",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Labola (Gitea)", "url": "https://labola.o-k-i.net/" }
|
{ "text": "Labola (Gitea)", "url": "https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[
|
[
|
||||||
{ "text": "Solutions", "url": "/#solutions" },
|
{ "text": "Solutions", "url": "/#solutions" },
|
||||||
{ "text": "Nos projets", "url": "/#projets" },
|
{ "text": "Nos projets", "url": "/#projets" },
|
||||||
|
{ "text": "Partenaires", "url": "/#partenaires" },
|
||||||
{ "text": "DJANGOKAM", "url": "/#djangokam" },
|
{ "text": "DJANGOKAM", "url": "/#djangokam" },
|
||||||
{ "text": "Services", "url": "/#hebergement" },
|
{ "text": "Services", "url": "/#hebergement" },
|
||||||
{ "text": "Dons", "url": "/dons/" },
|
{ "text": "Dons", "url": "/dons/" },
|
||||||
|
|||||||
@@ -2,25 +2,34 @@
|
|||||||
"section_title": "Nos",
|
"section_title": "Nos",
|
||||||
"section_title_accent": "Partenaires",
|
"section_title_accent": "Partenaires",
|
||||||
"section_subtitle": "Ils partagent nos valeurs et contribuent à enrichir notre écosystème numérique libre",
|
"section_subtitle": "Ils partagent nos valeurs et contribuent à enrichir notre écosystème numérique libre",
|
||||||
"link_text": "Découvrir sur GADE",
|
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"name": "Joukawouvè",
|
"name": "Joukawouvè",
|
||||||
"logo": "/assets/images/joukawouve.png",
|
"logo": "/assets/images/joukawouve.png",
|
||||||
"description": "Partage de l'actualité guadeloupéenne et internationale.",
|
"description": "Partage de l'actualité guadeloupéenne et internationale.",
|
||||||
"url": "https://gade.o-k-i.net/accounts/joukawouve"
|
"links": [
|
||||||
},
|
{ "url": "https://kute.o-k-i.net/@joukawouve", "text": "Découvrir sur KUTE" },
|
||||||
{
|
{ "url": "https://bokante.o-k-i.net/@joukawouve", "text": "Découvrir sur BOKANTE" },
|
||||||
"name": "cyber-mawonaj",
|
{ "url": "https://gade.o-k-i.net/accounts/joukawouve", "text": "Découvrir sur GADE" }
|
||||||
"logo": "/assets/images/cyber_mawonaj.jpg",
|
]
|
||||||
"description": "Vers le mawonaj numérique - Conquérir sa liberté passe aussi par le numérique.",
|
|
||||||
"url": "https://gade.o-k-i.net/c/cyber_mawonaj/videos"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Aktivist Vybz #AKV",
|
"name": "Aktivist Vybz #AKV",
|
||||||
"logo": "/assets/images/akv.png",
|
"logo": "/assets/images/akv.png",
|
||||||
"description": "Sélecteurs et DJs engagés, avec un contenu axé sur l'activisme et l'expression culturelle.",
|
"description": "Sélecteurs et DJs engagés, avec un contenu axé sur l'activisme et l'expression culturelle.",
|
||||||
"url": "https://gade.o-k-i.net/accounts/aktivist_vybz_akv"
|
"links": [
|
||||||
|
{ "url": "https://mizik.o-k-i.net/channels/aktivistvybzakv", "text": "Découvrir sur MIZIK" },
|
||||||
|
{ "url": "https://gade.o-k-i.net/c/aktivist_vybz-1_channel/videos", "text": "Découvrir sur GADE" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cyber-mawonaj",
|
||||||
|
"logo": "/assets/images/cyber_mawonaj.jpg",
|
||||||
|
"description": "Vers le mawonaj numérique - Conquérir sa liberté passe aussi par le numérique.",
|
||||||
|
"links": [
|
||||||
|
{ "url": "https://bokante.o-k-i.net/@cybermawonaj", "text": "Découvrir sur BOKANTE" },
|
||||||
|
{ "url": "https://gade.o-k-i.net/c/cyber.mawonaj/videos", "text": "Découvrir sur GADE" }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<meta property="og:url" content="https://o-k-i.net{{ page.url or '/' }}">
|
<meta property="og:url" content="https://o-k-i.net{{ page.url or '/' }}">
|
||||||
<meta property="og:title" content="{% if title %}{{ title }}{% else %}{{ t.site.name }} - {{ t.site.og_tagline }}{% endif %}">
|
<meta property="og:title" content="{% if title %}{{ title }}{% else %}{{ t.site.name }} - {{ t.site.og_tagline }}{% endif %}">
|
||||||
<meta property="og:description" content="{{ description or t.site.description }}">
|
<meta property="og:description" content="{{ description or t.site.description }}">
|
||||||
<meta property="og:image" content="{{ '/assets/images/logo-512x512.png' | cdn }}">
|
<meta property="og:image" content="https://o-k-i.net/assets/images/logo-512x512.png">
|
||||||
<meta property="og:image:width" content="512">
|
<meta property="og:image:width" content="512">
|
||||||
<meta property="og:image:height" content="512">
|
<meta property="og:image:height" content="512">
|
||||||
<meta property="og:image:alt" content="Logo {{ t.site.name }}">
|
<meta property="og:image:alt" content="Logo {{ t.site.name }}">
|
||||||
@@ -35,13 +35,13 @@
|
|||||||
<meta name="twitter:url" content="https://o-k-i.net{{ page.url or '/' }}">
|
<meta name="twitter:url" content="https://o-k-i.net{{ page.url or '/' }}">
|
||||||
<meta name="twitter:title" content="{% if title %}{{ title }}{% else %}{{ t.site.name }} - {{ t.site.og_tagline }}{% endif %}">
|
<meta name="twitter:title" content="{% if title %}{{ title }}{% else %}{{ t.site.name }} - {{ t.site.og_tagline }}{% endif %}">
|
||||||
<meta name="twitter:description" content="{{ description or t.site.description }}">
|
<meta name="twitter:description" content="{{ description or t.site.description }}">
|
||||||
<meta name="twitter:image" content="{{ '/assets/images/logo-512x512.png' | cdn }}">
|
<meta name="twitter:image" content="https://o-k-i.net/assets/images/logo-512x512.png">
|
||||||
<meta name="twitter:image:alt" content="Logo {{ t.site.name }}">
|
<meta name="twitter:image:alt" content="Logo {{ t.site.name }}">
|
||||||
|
|
||||||
<!-- Favicons -->
|
<!-- Favicons -->
|
||||||
<link rel="icon" type="image/x-icon" href="{{ '/assets/images/favicon.ico' | cdn }}">
|
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico">
|
||||||
<link rel="icon" type="image/png" sizes="512x512" href="{{ '/assets/images/logo-512x512.png' | cdn }}">
|
<link rel="icon" type="image/png" sizes="512x512" href="/assets/images/logo-512x512.png">
|
||||||
<link rel="apple-touch-icon" href="{{ '/assets/images/logo-512x512.png' | cdn }}">
|
<link rel="apple-touch-icon" href="/assets/images/logo-512x512.png">
|
||||||
|
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
"name": "{{ t.site.name }}",
|
"name": "{{ t.site.name }}",
|
||||||
"alternateName": "{{ t.site.shortName }}",
|
"alternateName": "{{ t.site.shortName }}",
|
||||||
"url": "https://o-k-i.net",
|
"url": "https://o-k-i.net",
|
||||||
"logo": "{{ '/assets/images/logo-512x512.png' | cdn }}",
|
"logo": "https://o-k-i.net/assets/images/logo-512x512.png",
|
||||||
"description": "{{ t.site.description }}",
|
"description": "{{ t.site.description }}",
|
||||||
"address": {
|
"address": {
|
||||||
"@type": "PostalAddress",
|
"@type": "PostalAddress",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
{% for client in t.clients.items %}
|
{% for client in t.clients.items %}
|
||||||
<a href="{{ client.url }}" target="_blank" rel="noopener noreferrer" class="partner-card">
|
<a href="{{ client.url }}" target="_blank" rel="noopener noreferrer" class="partner-card">
|
||||||
<div class="partner-logo-container">
|
<div class="partner-logo-container">
|
||||||
<img src="{{ client.logo | cdn }}" alt="Logo {{ client.name }}" class="partner-logo">
|
<img src="{{ client.logo }}" alt="Logo {{ client.name }}" class="partner-logo">
|
||||||
</div>
|
</div>
|
||||||
<h3>{{ client.name }}</h3>
|
<h3>{{ client.name }}</h3>
|
||||||
<p class="project-domain">{{ client.domain }}</p>
|
<p class="project-domain">{{ client.domain }}</p>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<h2>{{ t.djangokam.titre }} <span class="accent-text">{{ t.djangokam.titreAccent }}</span></h2>
|
<h2>{{ t.djangokam.titre }} <span class="accent-text">{{ t.djangokam.titreAccent }}</span></h2>
|
||||||
<p class="section-subtitle">{{ t.djangokam.accroche }}</p>
|
<p class="section-subtitle">{{ t.djangokam.accroche }}</p>
|
||||||
|
|
||||||
<img src="{{ '/assets/images/djangokam-portrait.webp' | cdn }}" alt="Portrait officiel de DJANGOKAM" class="djangokam-portrait" width="512" height="512" loading="lazy">
|
<img src="/assets/images/djangokam-portrait.webp" alt="Portrait officiel de DJANGOKAM" class="djangokam-portrait" width="512" height="512" loading="lazy">
|
||||||
|
|
||||||
<blockquote class="djangokam-highlight">
|
<blockquote class="djangokam-highlight">
|
||||||
{{ t.djangokam.message_cle }}
|
{{ t.djangokam.message_cle }}
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
<figure class="djangokam-duo">
|
<figure class="djangokam-duo">
|
||||||
<a href="{{ t.djangokam.duo.url }}" target="_blank" rel="noopener noreferrer">
|
<a href="{{ t.djangokam.duo.url }}" target="_blank" rel="noopener noreferrer">
|
||||||
<img src="{{ t.djangokam.duo.image | cdn }}" alt="{{ t.djangokam.duo.alt }}" loading="lazy">
|
<img src="{{ t.djangokam.duo.image }}" alt="{{ t.djangokam.duo.alt }}" loading="lazy">
|
||||||
<figcaption>{{ t.djangokam.duo.legende }}</figcaption>
|
<figcaption>{{ t.djangokam.duo.legende }}</figcaption>
|
||||||
</a>
|
</a>
|
||||||
</figure>
|
</figure>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
{% for clip in t.djangokam.clips %}
|
{% for clip in t.djangokam.clips %}
|
||||||
<figure class="djangokam-clip">
|
<figure class="djangokam-clip">
|
||||||
<a href="{{ clip.url }}" target="_blank" rel="noopener noreferrer">
|
<a href="{{ clip.url }}" target="_blank" rel="noopener noreferrer">
|
||||||
<img src="{{ clip.image | cdn }}" alt="{{ clip.alt }}" loading="lazy">
|
<img src="{{ clip.image }}" alt="{{ clip.alt }}" loading="lazy">
|
||||||
<figcaption>{{ clip.titre }}</figcaption>
|
<figcaption>{{ clip.titre }}</figcaption>
|
||||||
</a>
|
</a>
|
||||||
</figure>
|
</figure>
|
||||||
|
|||||||
@@ -16,16 +16,13 @@
|
|||||||
<a href="mailto:kontak@o-k-i.net" title="Email" class="social-link">
|
<a href="mailto:kontak@o-k-i.net" title="Email" class="social-link">
|
||||||
{% include "icons/email.svg" %}
|
{% include "icons/email.svg" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="https://whatsapp.com/channel/0029VbCv7N9AjPXTxygrRu1w" target="_blank" rel="noopener noreferrer" title="WhatsApp channel (PAWOL.NU)" class="social-link">
|
<a href="https://wa.me/262692229740" target="_blank" rel="noopener noreferrer" title="WhatsApp" class="social-link">
|
||||||
{% include "icons/whatsapp.svg" %}
|
{% include "icons/whatsapp.svg" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="https://t.me/OrganisationKA" target="_blank" rel="noopener noreferrer" title="Telegram channel (PAWOL.NU)" class="social-link">
|
|
||||||
{% include "icons/telegram.svg" %}
|
|
||||||
</a>
|
|
||||||
<a href="https://discord.gg/DPvUCA8dD" target="_blank" rel="noopener noreferrer" title="Discord" class="social-link">
|
<a href="https://discord.gg/DPvUCA8dD" target="_blank" rel="noopener noreferrer" title="Discord" class="social-link">
|
||||||
{% include "icons/discord.svg" %}
|
{% include "icons/discord.svg" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="https://labola.o-k-i.net/" target="_blank" rel="noopener noreferrer" title="Labola (Gitea)" class="social-link">
|
<a href="https://labola.o-k-i.net/ORGANISATION-KA-INTERNATIONALE/o-k-i.net" target="_blank" rel="noopener noreferrer" title="Code source sur Labola (Gitea)" class="social-link">
|
||||||
{% include "icons/gitea.svg" %}
|
{% include "icons/gitea.svg" %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<nav>
|
<nav>
|
||||||
<div class="nav-container">
|
<div class="nav-container">
|
||||||
<a href="/" class="logo">
|
<a href="/" class="logo">
|
||||||
<img src="{{ '/assets/images/logo-512x512.png' | cdn }}" alt="{{ t.site.shortName }} Logo" class="logo-image">
|
<img src="/assets/images/logo-512x512.png" alt="{{ t.site.shortName }} Logo" class="logo-image">
|
||||||
<span>{{ t.site.shortName }}</span>
|
<span>{{ t.site.shortName }}</span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="nav-links">
|
<ul class="nav-links">
|
||||||
|
|||||||
@@ -7,16 +7,20 @@
|
|||||||
|
|
||||||
<div class="partners-grid">
|
<div class="partners-grid">
|
||||||
{% for partner in t.partners.items %}
|
{% for partner in t.partners.items %}
|
||||||
<a href="{{ partner.url }}" target="_blank" rel="noopener noreferrer" class="partner-card">
|
<div class="partner-card">
|
||||||
<div class="partner-logo-container">
|
<div class="partner-logo-container">
|
||||||
<img src="{{ partner.logo | cdn }}" alt="Logo {{ partner.name }}" class="partner-logo">
|
<img src="{{ partner.logo }}" alt="Logo {{ partner.name }}" class="partner-logo">
|
||||||
</div>
|
</div>
|
||||||
<h3>{{ partner.name }}</h3>
|
<h3>{{ partner.name }}</h3>
|
||||||
<p class="partner-description">{{ partner.description }}</p>
|
<p class="partner-description">{{ partner.description }}</p>
|
||||||
<span class="partner-link">
|
<div class="partner-links">
|
||||||
{{ t.partners.link_text }} →
|
{% for link in partner.links %}
|
||||||
</span>
|
<a href="{{ link.url }}" target="_blank" rel="noopener noreferrer" class="partner-link">
|
||||||
</a>
|
{{ link.text }} →
|
||||||
|
</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ html.light-theme .theme-icon-light {
|
|||||||
right: -5%;
|
right: -5%;
|
||||||
width: 55%;
|
width: 55%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: url('https://organisationka.b-cdn.net/assets/images/logo-512x512.png') center / contain no-repeat;
|
background: url('/assets/images/logo-512x512.png') center / contain no-repeat;
|
||||||
opacity: 0.05;
|
opacity: 0.05;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
@@ -959,8 +959,6 @@ html.light-theme .hero::before {
|
|||||||
padding: 2.5rem;
|
padding: 2.5rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
transition: transform 0.2s ease, border-color 0.2s ease;
|
transition: transform 0.2s ease, border-color 0.2s ease;
|
||||||
text-decoration: none;
|
|
||||||
color: inherit;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -1002,6 +1000,13 @@ html.light-theme .hero::before {
|
|||||||
font-family: var(--font-body);
|
font-family: var(--font-body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.partner-links {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
.partner-link {
|
.partner-link {
|
||||||
color: var(--or-oki);
|
color: var(--or-oki);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -1009,11 +1014,17 @@ html.light-theme .hero::before {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.4rem;
|
gap: 0.4rem;
|
||||||
font-family: var(--font-body);
|
font-family: var(--font-body);
|
||||||
transition: gap 0.2s ease;
|
font-size: 0.95rem;
|
||||||
|
padding: 0.4rem 0.9rem;
|
||||||
|
border: 1px solid var(--or-oki);
|
||||||
|
border-radius: 999px;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background 0.2s ease, gap 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.partner-card:hover .partner-link {
|
.partner-link:hover {
|
||||||
gap: 0.75rem;
|
background: rgba(253, 184, 19, 0.12);
|
||||||
|
gap: 0.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Support Section */
|
/* Support Section */
|
||||||
@@ -1493,15 +1504,43 @@ input[type="number"]:focus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive */
|
/* Responsive */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 1100px) {
|
||||||
.nav-links {
|
.nav-links {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-links.mobile-open {
|
||||||
|
display: flex;
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 1rem;
|
||||||
|
border-top: 2px solid var(--or-oki);
|
||||||
|
background: rgba(0, 0, 0, 0.98);
|
||||||
|
}
|
||||||
|
|
||||||
|
html.light-theme .nav-links.mobile-open {
|
||||||
|
background: rgba(255, 248, 231, 0.98);
|
||||||
|
}
|
||||||
|
|
||||||
.nav-container {
|
.nav-container {
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu-toggle.open span:nth-child(1) {
|
||||||
|
transform: rotate(45deg) translateY(8px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-toggle.open span:nth-child(2) {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-toggle.open span:nth-child(3) {
|
||||||
|
transform: rotate(-45deg) translateY(-8px);
|
||||||
|
}
|
||||||
|
|
||||||
.theme-toggle {
|
.theme-toggle {
|
||||||
padding: 0.4rem 0.6rem;
|
padding: 0.4rem 0.6rem;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
@@ -1535,7 +1574,9 @@ input[type="number"]:focus {
|
|||||||
padding: 0.4rem 0;
|
padding: 0.4rem 0;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
.hero h1 {
|
.hero h1 {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-58
@@ -21,13 +21,6 @@
|
|||||||
// Sauvegarder la préférence
|
// Sauvegarder la préférence
|
||||||
localStorage.setItem('oki-theme', newTheme);
|
localStorage.setItem('oki-theme', newTheme);
|
||||||
|
|
||||||
// Mettre à jour le menu mobile si ouvert
|
|
||||||
const navLinks = document.querySelector('.nav-links');
|
|
||||||
if (navLinks && navLinks.style.display === 'flex') {
|
|
||||||
const background = newTheme === 'light' ? 'rgba(255, 248, 231, 0.98)' : 'rgba(0, 0, 0, 0.98)';
|
|
||||||
navLinks.style.background = background;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mettre à jour les styles de la nav en fonction du scroll actuel
|
// Mettre à jour les styles de la nav en fonction du scroll actuel
|
||||||
const nav = document.querySelector('nav');
|
const nav = document.querySelector('nav');
|
||||||
const currentScroll = window.pageYOffset;
|
const currentScroll = window.pageYOffset;
|
||||||
@@ -134,32 +127,18 @@ let menuOpen = false;
|
|||||||
|
|
||||||
menuToggle?.addEventListener('click', () => {
|
menuToggle?.addEventListener('click', () => {
|
||||||
menuOpen = !menuOpen;
|
menuOpen = !menuOpen;
|
||||||
if (menuOpen) {
|
navLinks.classList.toggle('mobile-open', menuOpen);
|
||||||
// Déterminer le fond selon le thème actuel
|
menuToggle.classList.toggle('open', menuOpen);
|
||||||
const isLightTheme = document.documentElement.classList.contains('light-theme');
|
});
|
||||||
const background = isLightTheme ? 'rgba(255, 248, 231, 0.98)' : 'rgba(0, 0, 0, 0.98)';
|
|
||||||
|
|
||||||
navLinks.style.display = 'flex';
|
// Si la fenêtre est agrandie au-delà du breakpoint mobile pendant que le
|
||||||
navLinks.style.position = 'absolute';
|
// menu est ouvert, on réinitialise son état pour éviter qu'il reste caché
|
||||||
navLinks.style.top = '100%';
|
// ou en position absolue quand la nav desktop redevient visible.
|
||||||
navLinks.style.left = '0';
|
window.addEventListener('resize', () => {
|
||||||
navLinks.style.right = '0';
|
if (menuOpen && window.innerWidth > 1100) {
|
||||||
navLinks.style.background = background;
|
menuOpen = false;
|
||||||
navLinks.style.flexDirection = 'column';
|
navLinks.classList.remove('mobile-open');
|
||||||
navLinks.style.padding = '1rem';
|
menuToggle.classList.remove('open');
|
||||||
navLinks.style.borderTop = '2px solid #E8A625';
|
|
||||||
|
|
||||||
// Animate menu toggle
|
|
||||||
menuToggle.children[0].style.transform = 'rotate(45deg) translateY(8px)';
|
|
||||||
menuToggle.children[1].style.opacity = '0';
|
|
||||||
menuToggle.children[2].style.transform = 'rotate(-45deg) translateY(-8px)';
|
|
||||||
} else {
|
|
||||||
navLinks.style.display = 'none';
|
|
||||||
|
|
||||||
// Reset menu toggle
|
|
||||||
menuToggle.children[0].style.transform = '';
|
|
||||||
menuToggle.children[1].style.opacity = '1';
|
|
||||||
menuToggle.children[2].style.transform = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -167,10 +146,8 @@ menuToggle?.addEventListener('click', () => {
|
|||||||
document.addEventListener('click', (e) => {
|
document.addEventListener('click', (e) => {
|
||||||
if (menuOpen && !menuToggle.contains(e.target) && !navLinks.contains(e.target)) {
|
if (menuOpen && !menuToggle.contains(e.target) && !navLinks.contains(e.target)) {
|
||||||
menuOpen = false;
|
menuOpen = false;
|
||||||
navLinks.style.display = 'none';
|
navLinks.classList.remove('mobile-open');
|
||||||
menuToggle.children[0].style.transform = '';
|
menuToggle.classList.remove('open');
|
||||||
menuToggle.children[1].style.opacity = '1';
|
|
||||||
menuToggle.children[2].style.transform = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -179,10 +156,8 @@ navLinks?.querySelectorAll('a').forEach(link => {
|
|||||||
link.addEventListener('click', () => {
|
link.addEventListener('click', () => {
|
||||||
if (menuOpen) {
|
if (menuOpen) {
|
||||||
menuOpen = false;
|
menuOpen = false;
|
||||||
navLinks.style.display = 'none';
|
navLinks.classList.remove('mobile-open');
|
||||||
menuToggle.children[0].style.transform = '';
|
menuToggle.classList.remove('open');
|
||||||
menuToggle.children[1].style.opacity = '1';
|
|
||||||
menuToggle.children[2].style.transform = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -302,24 +277,6 @@ function createNetworkLine() {
|
|||||||
// Initialize network lines
|
// Initialize network lines
|
||||||
createNetworkLine();
|
createNetworkLine();
|
||||||
|
|
||||||
// Dynamic typing effect for hero subtitle
|
|
||||||
const subtitle = document.querySelector('.hero-subtitle');
|
|
||||||
if (subtitle) {
|
|
||||||
const text = subtitle.textContent;
|
|
||||||
subtitle.textContent = '';
|
|
||||||
let index = 0;
|
|
||||||
|
|
||||||
function typeWriter() {
|
|
||||||
if (index < text.length) {
|
|
||||||
subtitle.textContent += text.charAt(index);
|
|
||||||
index++;
|
|
||||||
setTimeout(typeWriter, 100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setTimeout(typeWriter, 800);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add hover effect to project cards with tilt
|
// Add hover effect to project cards with tilt
|
||||||
document.querySelectorAll('.project-card, .service-card').forEach(card => {
|
document.querySelectorAll('.project-card, .service-card').forEach(card => {
|
||||||
card.addEventListener('mousemove', (e) => {
|
card.addEventListener('mousemove', (e) => {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ layout: layouts/base.njk
|
|||||||
{% include "partials/hero.njk" %}
|
{% include "partials/hero.njk" %}
|
||||||
{% include "partials/publics.njk" %}
|
{% include "partials/publics.njk" %}
|
||||||
{% include "partials/projects.njk" %}
|
{% include "partials/projects.njk" %}
|
||||||
|
{% include "partials/partners.njk" %}
|
||||||
{% include "partials/djangokam.njk" %}
|
{% include "partials/djangokam.njk" %}
|
||||||
{% include "partials/mission.njk" %}
|
{% include "partials/mission.njk" %}
|
||||||
{% include "partials/hosting.njk" %}
|
{% include "partials/hosting.njk" %}
|
||||||
|
|||||||
+4
-4
@@ -30,16 +30,16 @@ description: Press resources for DJANGOKAM, the first Caribbean AI artist produc
|
|||||||
<div class="press-visual-grid">
|
<div class="press-visual-grid">
|
||||||
{% for visual in t.press.visuals %}
|
{% for visual in t.press.visuals %}
|
||||||
<div class="press-visual">
|
<div class="press-visual">
|
||||||
<a href="{{ visual.image | cdn }}" target="_blank" rel="noopener noreferrer">
|
<a href="{{ visual.image }}" target="_blank" rel="noopener noreferrer">
|
||||||
<img src="{{ visual.image | cdn }}" alt="{{ visual.caption }}" loading="lazy">
|
<img src="{{ visual.image }}" alt="{{ visual.caption }}" loading="lazy">
|
||||||
<span class="press-visual-caption">{{ visual.caption }}</span>
|
<span class="press-visual-caption">{{ visual.caption }}</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ ('/assets/press/' + visual.pdf) | cdn }}" class="press-visual-pdf-link">{{ t.press.visual_pdf_label }}</a>
|
<a href="{{ ('/assets/press/' + visual.pdf) }}" class="press-visual-pdf-link">{{ t.press.visual_pdf_label }}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="press-visuals-pdf">
|
<div class="press-visuals-pdf">
|
||||||
<a href="{{ ('/assets/press/' + t.press.visuals_pdf_file) | cdn }}" class="btn btn-primary">{{ t.press.visuals_pdf_label }} →</a>
|
<a href="{{ ('/assets/press/' + t.press.visuals_pdf_file) }}" class="btn btn-primary">{{ t.press.visuals_pdf_label }} →</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ layout: layouts/base.njk
|
|||||||
{% include "partials/hero.njk" %}
|
{% include "partials/hero.njk" %}
|
||||||
{% include "partials/publics.njk" %}
|
{% include "partials/publics.njk" %}
|
||||||
{% include "partials/projects.njk" %}
|
{% include "partials/projects.njk" %}
|
||||||
|
{% include "partials/partners.njk" %}
|
||||||
{% include "partials/djangokam.njk" %}
|
{% include "partials/djangokam.njk" %}
|
||||||
{% include "partials/mission.njk" %}
|
{% include "partials/mission.njk" %}
|
||||||
{% include "partials/hosting.njk" %}
|
{% include "partials/hosting.njk" %}
|
||||||
|
|||||||
+4
-4
@@ -30,16 +30,16 @@ description: Ressources presse pour DJANGOKAM, premier artiste IA caribéen prod
|
|||||||
<div class="press-visual-grid">
|
<div class="press-visual-grid">
|
||||||
{% for visual in t.press.visuals %}
|
{% for visual in t.press.visuals %}
|
||||||
<div class="press-visual">
|
<div class="press-visual">
|
||||||
<a href="{{ visual.image | cdn }}" target="_blank" rel="noopener noreferrer">
|
<a href="{{ visual.image }}" target="_blank" rel="noopener noreferrer">
|
||||||
<img src="{{ visual.image | cdn }}" alt="{{ visual.caption }}" loading="lazy">
|
<img src="{{ visual.image }}" alt="{{ visual.caption }}" loading="lazy">
|
||||||
<span class="press-visual-caption">{{ visual.caption }}</span>
|
<span class="press-visual-caption">{{ visual.caption }}</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ ('/assets/press/' + visual.pdf) | cdn }}" class="press-visual-pdf-link">{{ t.press.visual_pdf_label }}</a>
|
<a href="{{ ('/assets/press/' + visual.pdf) }}" class="press-visual-pdf-link">{{ t.press.visual_pdf_label }}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="press-visuals-pdf">
|
<div class="press-visuals-pdf">
|
||||||
<a href="{{ ('/assets/press/' + t.press.visuals_pdf_file) | cdn }}" class="btn btn-primary">{{ t.press.visuals_pdf_label }} →</a>
|
<a href="{{ ('/assets/press/' + t.press.visuals_pdf_file) }}" class="btn btn-primary">{{ t.press.visuals_pdf_label }} →</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Reference in New Issue
Block a user