Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d6a94e251
|
||
|
|
f0fd5eeca1
|
||
|
|
1b05d2f9a4
|
||
|
|
bb680f60b0
|
||
|
|
d0fc7207f2
|
||
|
|
66da280a50
|
||
|
|
742a275958
|
||
|
|
e3b562afcf
|
||
|
|
284e29f6d5
|
||
|
|
2f16ccb4b8
|
||
|
|
4307c80bd6
|
||
|
|
17540980af
|
||
|
|
da094adaad
|
||
|
|
5f5e581d99
|
||
|
|
851b03c60b
|
||
|
|
db5fc5240c
|
||
|
|
1644d2606f
|
||
|
|
d3afa0ca1d | ||
|
|
de4fd1d54c | ||
|
|
b650a52591 | ||
|
|
1189141937 | ||
|
|
e2df9c0501 | ||
|
|
964149e0bb | ||
|
|
46a039d2d2 | ||
|
|
c27f37f979
|
||
|
|
6559ac39a4
|
||
|
|
f1a9fa63e0
|
||
|
|
646d3b676f
|
||
|
|
37eeee07dd
|
||
|
|
36d1e307bd
|
||
|
|
8dac00d692
|
||
|
|
9425f25442
|
||
|
|
1755bc1eda
|
||
|
|
2f6bb848e3
|
||
|
|
cf7385a350
|
||
|
|
d32801a5d1
|
||
|
|
be73fb4a70
|
||
|
|
5908b3f273
|
||
|
|
fd86ba8b6a
|
||
|
|
853866b4c4
|
||
|
|
bd52f78922
|
||
|
|
218ec8072f
|
||
|
|
931bd48a52
|
@@ -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
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|
||||||
@@ -20,12 +12,18 @@ module.exports = function(eleventyConfig) {
|
|||||||
eleventyConfig.addPassthroughCopy("src/robots.txt");
|
eleventyConfig.addPassthroughCopy("src/robots.txt");
|
||||||
eleventyConfig.addPassthroughCopy("src/sitemap.xml");
|
eleventyConfig.addPassthroughCopy("src/sitemap.xml");
|
||||||
|
|
||||||
|
// Copy Apache security headers config to the site root
|
||||||
|
eleventyConfig.addPassthroughCopy({ "src/.htaccess": ".htaccess" });
|
||||||
|
|
||||||
// Watch CSS files for changes
|
// Watch CSS files for changes
|
||||||
eleventyConfig.addWatchTarget("src/assets/css/");
|
eleventyConfig.addWatchTarget("src/assets/css/");
|
||||||
|
|
||||||
// Watch JS files for changes
|
// Watch JS files for changes
|
||||||
eleventyConfig.addWatchTarget("src/assets/js/");
|
eleventyConfig.addWatchTarget("src/assets/js/");
|
||||||
|
|
||||||
|
// Dynamic current-year shortcode for the footer
|
||||||
|
eleventyConfig.addShortcode("year", () => new Date().getFullYear().toString());
|
||||||
|
|
||||||
// Configure browser sync to reload on CSS changes
|
// Configure browser sync to reload on CSS changes
|
||||||
eleventyConfig.setBrowserSyncConfig({
|
eleventyConfig.setBrowserSyncConfig({
|
||||||
files: ['_site/assets/css/**/*.css', '_site/assets/js/**/*.js']
|
files: ['_site/assets/css/**/*.css', '_site/assets/js/**/*.js']
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
# Redirect HTTP to HTTPS, including behind reverse proxies
|
||||||
|
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
|
||||||
|
RewriteCond %{HTTPS} off
|
||||||
|
RewriteCond %{HTTP:X-Forwarded-Proto} !https
|
||||||
|
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# Force HTTPS for one year
|
||||||
|
Header always set Strict-Transport-Security "max-age=31536000"
|
||||||
|
|
||||||
|
# Prevent MIME sniffing
|
||||||
|
Header always set X-Content-Type-Options "nosniff"
|
||||||
|
|
||||||
|
# Prevent clickjacking (also enforced via CSP frame-ancestors)
|
||||||
|
Header always set X-Frame-Options "DENY"
|
||||||
|
|
||||||
|
# Control referrer leakage
|
||||||
|
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||||
|
|
||||||
|
# Restrict browser features
|
||||||
|
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=(), magnetometer=(), gyroscope=()"
|
||||||
|
|
||||||
|
# Content Security Policy (no unsafe-inline/unsafe-eval in script-src)
|
||||||
|
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' https://organisationka.b-cdn.net; font-src 'self' https://fonts.gstatic.com; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; object-src 'none'"
|
||||||
|
</IfModule>
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"url": "https://organisationka.b-cdn.net"
|
|
||||||
}
|
|
||||||
@@ -8,21 +8,21 @@
|
|||||||
"name": "KA UBUNTU",
|
"name": "KA UBUNTU",
|
||||||
"domain": "kaubuntu.com",
|
"domain": "kaubuntu.com",
|
||||||
"url": "https://kaubuntu.com",
|
"url": "https://kaubuntu.com",
|
||||||
"logo": "https://kaubuntu.com/wp-content/uploads/2026/04/logo-ka-ubuntu.png",
|
"logo": "/assets/images/clients/kaubuntu-com.png",
|
||||||
"description": "Pan-Africanist and pro-independence political movement from Réunion. Fighting for the self-determination of Réunion and African unity. \"I am because we are.\""
|
"description": "Pan-Africanist and pro-independence political movement from Réunion. Fighting for the self-determination of Réunion and African unity. \"I am because we are.\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KA UBUNTU — Media hub",
|
"name": "KA UBUNTU — Media hub",
|
||||||
"domain": "kaubuntu.re",
|
"domain": "kaubuntu.re",
|
||||||
"url": "https://kaubuntu.re",
|
"url": "https://kaubuntu.re",
|
||||||
"logo": "https://kaubuntu.re/img/logo.png",
|
"logo": "/assets/images/clients/kaubuntu-re.png",
|
||||||
"description": "Centralised media aggregator for Ka Ubuntu: YouTube videos, articles, Instagram and TikTok brought together on a single page. Progressive web application (PWA)."
|
"description": "Centralised media aggregator for Ka Ubuntu: YouTube videos, articles, Instagram and TikTok brought together on a single page. Progressive web application (PWA)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KBM – Ka Pou Nou Bwè é Manjé",
|
"name": "KBM – Ka Pou Nou Bwè é Manjé",
|
||||||
"domain": "kbm.gp",
|
"domain": "kbm.gp",
|
||||||
"url": "https://kbm.gp",
|
"url": "https://kbm.gp",
|
||||||
"logo": "https://kbm.gp/images/logo-1024.webp",
|
"logo": "/assets/images/clients/kbm.gp.webp",
|
||||||
"description": "Movement for the emancipation and food sovereignty of the Guadeloupean people. Community radio Radyo Bòkaz, podcasts, lakou and local farming."
|
"description": "Movement for the emancipation and food sovereignty of the Guadeloupean people. Community radio Radyo Bòkaz, podcasts, lakou and local farming."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -9,23 +9,22 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💬 Social networks",
|
"title": "📢 PAWOL.NU channels",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Telegram", "url": "https://t.me/OrganisationKA" },
|
{ "text": "WhatsApp channel", "url": "https://whatsapp.com/channel/0029VbCv7N9AjPXTxygrRu1w" },
|
||||||
{ "text": "X (Twitter)", "url": "https://x.com/OrganisationKA" }
|
{ "text": "Telegram channel", "url": "https://t.me/OrganisationKA" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💬 Community",
|
"title": "💬 Community",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Discord", "url": "https://discord.gg/a2r9NYNM" },
|
{ "text": "Discord", "url": "https://discord.gg/DPvUCA8dD" }
|
||||||
{ "text": "Revolt", "url": "https://rvlt.gg/e1zJrg3p" }
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"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,9 +1,10 @@
|
|||||||
[
|
[
|
||||||
{ "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/#dons" },
|
{ "text": "Donate", "url": "/en/donate/" },
|
||||||
{
|
{
|
||||||
"text": "Resources",
|
"text": "Resources",
|
||||||
"children": [
|
"children": [
|
||||||
|
|||||||
@@ -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" }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,13 @@
|
|||||||
"domain": "gong.gp",
|
"domain": "gong.gp",
|
||||||
"description": "Historical documents from the GONG",
|
"description": "Historical documents from the GONG",
|
||||||
"url": "https://gong.gp/"
|
"url": "https://gong.gp/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "FEDIVERSE.OKI",
|
||||||
|
"icon": "🎬",
|
||||||
|
"domain": "fediverse.o-k-i.net",
|
||||||
|
"description": "Independent multimedia platform: PeerTube videos, Mastodon feed, Castopod podcasts and WordPress articles",
|
||||||
|
"url": "https://fediverse.o-k-i.net/"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"name": "BOKANTE",
|
"name": "BOKANTE",
|
||||||
"icon": "🐘",
|
|
||||||
"platform": "Mastodon",
|
"platform": "Mastodon",
|
||||||
"description": "Our free social network instance. Exchange, share and connect without surveillance or algorithms, far from X or Facebook.",
|
"description": "Our free social network instance. Exchange, share and connect without surveillance or algorithms, far from X or Facebook.",
|
||||||
"url": "https://bokante.o-k-i.net",
|
"url": "https://bokante.o-k-i.net",
|
||||||
@@ -13,7 +12,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GADE",
|
"name": "GADE",
|
||||||
"icon": "📺",
|
|
||||||
"platform": "PeerTube",
|
"platform": "PeerTube",
|
||||||
"description": "Our free and sovereign video instance. Stream your videos without algorithms or censorship, dedicated to Afro-diasporic languages, cultures and productions.",
|
"description": "Our free and sovereign video instance. Stream your videos without algorithms or censorship, dedicated to Afro-diasporic languages, cultures and productions.",
|
||||||
"url": "https://gade.o-k-i.net",
|
"url": "https://gade.o-k-i.net",
|
||||||
@@ -21,7 +19,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "NIYAJ",
|
"name": "NIYAJ",
|
||||||
"icon": "☁️",
|
|
||||||
"platform": "Nextcloud",
|
"platform": "Nextcloud",
|
||||||
"description": "Your personal cloud, far from Google's servers. Files, calendar, contacts, collaborative documents, everything Google Drive offers, but your data stays yours.",
|
"description": "Your personal cloud, far from Google's servers. Files, calendar, contacts, collaborative documents, everything Google Drive offers, but your data stays yours.",
|
||||||
"url": "https://niyaj.o-k-i.net",
|
"url": "https://niyaj.o-k-i.net",
|
||||||
@@ -29,7 +26,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KUTE",
|
"name": "KUTE",
|
||||||
"icon": "🎙️",
|
|
||||||
"platform": "Castopod",
|
"platform": "Castopod",
|
||||||
"description": "Our free podcasting instance. Create, host and distribute your podcasts fully autonomously, without algorithms or censorship.",
|
"description": "Our free podcasting instance. Create, host and distribute your podcasts fully autonomously, without algorithms or censorship.",
|
||||||
"url": "https://kute.o-k-i.net/",
|
"url": "https://kute.o-k-i.net/",
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
"description": "We build custom web applications for grassroots associations, collectives and activist organisations, with rates that match your means.",
|
"description": "We build custom web applications for grassroots associations, collectives and activist organisations, with rates that match your means.",
|
||||||
"url": "https://o-k-i.net",
|
"url": "https://o-k-i.net",
|
||||||
"email": "kontak@o-k-i.net",
|
"email": "kontak@o-k-i.net",
|
||||||
"copyright": "© 2025 ORGANISATION KA INTERNATIONALE",
|
|
||||||
"tagline": "Digital tools in service of your struggles",
|
"tagline": "Digital tools in service of your struggles",
|
||||||
"og_tagline": "Taking back control of our internet",
|
"og_tagline": "Taking back control of our internet",
|
||||||
"keywords": "OKI, ORGANISATION KA INTERNATIONALE, custom web application, activist associations, web development, digital sovereignty, solidarity pricing, free software, Guadeloupe, Martinique, Caribbean, ethical digital, Castopod, KUTE, ethical hosting, GAFAM alternative",
|
"keywords": "OKI, ORGANISATION KA INTERNATIONALE, custom web application, activist associations, web development, digital sovereignty, solidarity pricing, free software, Guadeloupe, Martinique, Caribbean, ethical digital, Castopod, KUTE, ethical hosting, GAFAM alternative",
|
||||||
|
|||||||
@@ -8,21 +8,21 @@
|
|||||||
"name": "KA UBUNTU",
|
"name": "KA UBUNTU",
|
||||||
"domain": "kaubuntu.com",
|
"domain": "kaubuntu.com",
|
||||||
"url": "https://kaubuntu.com",
|
"url": "https://kaubuntu.com",
|
||||||
"logo": "https://kaubuntu.com/wp-content/uploads/2026/04/logo-ka-ubuntu.png",
|
"logo": "/assets/images/clients/kaubuntu-com.png",
|
||||||
"description": "Mouvement politique panafricaniste et indépendantiste réunionnais. Lutte pour l'autodétermination de La Réunion et l'unité africaine. \"Je suis parce que nous sommes.\""
|
"description": "Mouvement politique panafricaniste et indépendantiste réunionnais. Lutte pour l'autodétermination de La Réunion et l'unité africaine. \"Je suis parce que nous sommes.\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KA UBUNTU — Hub multimédia",
|
"name": "KA UBUNTU — Hub multimédia",
|
||||||
"domain": "kaubuntu.re",
|
"domain": "kaubuntu.re",
|
||||||
"url": "https://kaubuntu.re",
|
"url": "https://kaubuntu.re",
|
||||||
"logo": "https://kaubuntu.re/img/logo.png",
|
"logo": "/assets/images/clients/kaubuntu-re.png",
|
||||||
"description": "Agrégateur multimédia centralisé pour Ka Ubuntu : vidéos YouTube, articles, Instagram et TikTok réunis en une seule page. Application web progressive (PWA)."
|
"description": "Agrégateur multimédia centralisé pour Ka Ubuntu : vidéos YouTube, articles, Instagram et TikTok réunis en une seule page. Application web progressive (PWA)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KBM – Ka Pou Nou Bwè é Manjé",
|
"name": "KBM – Ka Pou Nou Bwè é Manjé",
|
||||||
"domain": "kbm.gp",
|
"domain": "kbm.gp",
|
||||||
"url": "https://kbm.gp",
|
"url": "https://kbm.gp",
|
||||||
"logo": "https://kbm.gp/images/logo-1024.webp",
|
"logo": "/assets/images/clients/kbm.gp.webp",
|
||||||
"description": "Mouvement pour l'émancipation et la souveraineté alimentaire du peuple guadeloupéen. Radio communautaire Radyo Bòkaz, podcasts, lakou et agriculture locale."
|
"description": "Mouvement pour l'émancipation et la souveraineté alimentaire du peuple guadeloupéen. Radio communautaire Radyo Bòkaz, podcasts, lakou et agriculture locale."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -9,23 +9,22 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💬 Réseaux sociaux",
|
"title": "📢 Chaînes PAWOL.NU",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Telegram", "url": "https://t.me/OrganisationKA" },
|
{ "text": "WhatsApp channel", "url": "https://whatsapp.com/channel/0029VbCv7N9AjPXTxygrRu1w" },
|
||||||
{ "text": "X (Twitter)", "url": "https://x.com/OrganisationKA" }
|
{ "text": "Telegram channel", "url": "https://t.me/OrganisationKA" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💬 Communauté",
|
"title": "💬 Communauté",
|
||||||
"links": [
|
"links": [
|
||||||
{ "text": "Discord", "url": "https://discord.gg/a2r9NYNM" },
|
{ "text": "Discord", "url": "https://discord.gg/DPvUCA8dD" }
|
||||||
{ "text": "Revolt", "url": "https://rvlt.gg/e1zJrg3p" }
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"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,9 +1,10 @@
|
|||||||
[
|
[
|
||||||
{ "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/" },
|
||||||
{
|
{
|
||||||
"text": "Ressources",
|
"text": "Ressources",
|
||||||
"children": [
|
"children": [
|
||||||
|
|||||||
@@ -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" }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,13 @@
|
|||||||
"domain": "gong.gp",
|
"domain": "gong.gp",
|
||||||
"description": "Documents historiques du GONG",
|
"description": "Documents historiques du GONG",
|
||||||
"url": "https://gong.gp/"
|
"url": "https://gong.gp/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "FEDIVERSE.OKI",
|
||||||
|
"icon": "🎬",
|
||||||
|
"domain": "fediverse.o-k-i.net",
|
||||||
|
"description": "Plateforme multimédia indépendante : vidéos PeerTube, fil Mastodon, podcasts Castopod et articles WordPress",
|
||||||
|
"url": "https://fediverse.o-k-i.net/"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"name": "BOKANTE",
|
"name": "BOKANTE",
|
||||||
"icon": "🐘",
|
|
||||||
"platform": "Mastodon",
|
"platform": "Mastodon",
|
||||||
"description": "Notre instance du réseau social libre. Échangez, partagez et connectez-vous sans surveillance ni algorithme, loin des réseaux de X ou Facebook.",
|
"description": "Notre instance du réseau social libre. Échangez, partagez et connectez-vous sans surveillance ni algorithme, loin des réseaux de X ou Facebook.",
|
||||||
"url": "https://bokante.o-k-i.net",
|
"url": "https://bokante.o-k-i.net",
|
||||||
@@ -13,7 +12,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GADE",
|
"name": "GADE",
|
||||||
"icon": "📺",
|
|
||||||
"platform": "PeerTube",
|
"platform": "PeerTube",
|
||||||
"description": "Notre instance vidéo libre et souveraine. Diffusez vos vidéos sans algorithme ni censure, dédiée aux langues, cultures et productions afro-diasporiques.",
|
"description": "Notre instance vidéo libre et souveraine. Diffusez vos vidéos sans algorithme ni censure, dédiée aux langues, cultures et productions afro-diasporiques.",
|
||||||
"url": "https://gade.o-k-i.net",
|
"url": "https://gade.o-k-i.net",
|
||||||
@@ -21,7 +19,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "NIYAJ",
|
"name": "NIYAJ",
|
||||||
"icon": "☁️",
|
|
||||||
"platform": "Nextcloud",
|
"platform": "Nextcloud",
|
||||||
"description": "Votre cloud personnel, loin des serveurs de Google. Fichiers, agenda, contacts, documents collaboratifs, tout ce que Google Drive propose, mais vos données restent les vôtres.",
|
"description": "Votre cloud personnel, loin des serveurs de Google. Fichiers, agenda, contacts, documents collaboratifs, tout ce que Google Drive propose, mais vos données restent les vôtres.",
|
||||||
"url": "https://niyaj.o-k-i.net",
|
"url": "https://niyaj.o-k-i.net",
|
||||||
@@ -29,7 +26,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KUTE",
|
"name": "KUTE",
|
||||||
"icon": "🎙️",
|
|
||||||
"platform": "Castopod",
|
"platform": "Castopod",
|
||||||
"description": "Notre instance de podcasting libre. Créez, hébergez et diffusez vos podcasts en toute autonomie, sans algorithme ni censure.",
|
"description": "Notre instance de podcasting libre. Créez, hébergez et diffusez vos podcasts en toute autonomie, sans algorithme ni censure.",
|
||||||
"url": "https://kute.o-k-i.net/",
|
"url": "https://kute.o-k-i.net/",
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
"description": "Nous développons des applications web sur mesure pour les associations, collectifs et organisations militantes, avec des tarifs adaptés à vos moyens.",
|
"description": "Nous développons des applications web sur mesure pour les associations, collectifs et organisations militantes, avec des tarifs adaptés à vos moyens.",
|
||||||
"url": "https://o-k-i.net",
|
"url": "https://o-k-i.net",
|
||||||
"email": "kontak@o-k-i.net",
|
"email": "kontak@o-k-i.net",
|
||||||
"copyright": "© 2025 ORGANISATION KA INTERNATIONALE",
|
|
||||||
"tagline": "Le numérique au service de vos luttes",
|
"tagline": "Le numérique au service de vos luttes",
|
||||||
"og_tagline": "Prenons le contrôle de notre internet",
|
"og_tagline": "Prenons le contrôle de notre internet",
|
||||||
"keywords": "OKI, ORGANISATION KA INTERNATIONALE, application web sur mesure, associations militantes, développement web, souveraineté numérique, tarifs solidaires, logiciel libre, Guadeloupe, Martinique, Caraïbes, numérique éthique, Castopod, KUTE, hébergement libre, alternative GAFAM",
|
"keywords": "OKI, ORGANISATION KA INTERNATIONALE, application web sur mesure, associations militantes, développement web, souveraineté numérique, tarifs solidaires, logiciel libre, Guadeloupe, Martinique, Caraïbes, numérique éthique, Castopod, KUTE, hébergement libre, alternative GAFAM",
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 86.4 512 339.2" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><mask id="casto-face"><rect y="86.4" width="512" height="339.2" fill="#fff"/><path d="M372.7 159.7H139c-40.1 0-72.8 32.8-72.8 72.8S98.9 305 139 305h233.8c40.1 0 72.8-32.5 72.8-72.5.4-39.8-31.7-72.4-71.5-72.8zm-207.1 93.6s-10.7-7.9-25.8-7.9c-11.3 0-24.4 6.8-24.4 6.8-3.7-5.3-5.7-11.6-5.8-18.1 0-17.3 14-31.2 31.3-31.2s31.3 13.9 31.3 31.2c0 7.4-2.4 14-6.6 19.2m90.4 18c-34.3 0-33-26.3-33-26.3-.5-4.9 5.8-6.6 8-3.6 1.1 1.6 1.1 1.6 1.9 4.6 4.7 16.1 23.1 15.3 23.1 15.3s18.4 1.1 23.1-15.3c.8-2.7.8-3 1.9-4.6 2.2-2.7 8.5-1.4 8 3.6 0 .1 1.3 26.3-33 26.3m140.4-18.9s-13.2-6.8-24.5-6.8c-15.1 0-25.8 7.9-25.8 7.9-4.3-5.4-6.6-12.2-6.6-19.1 0-17.3 14-31.2 31.3-31.2s31.3 13.9 31.3 31.2c.2 6.5-1.8 12.9-5.7 18" fill="#000"/><path d="M107.4 129.1c-17.3-4.6-32.1 5.7-40.4 20-1.9 3.3-.6 6 1.4 7.1 2.8.8 4.7.3 7.7-4.1 6-10.7 16.2-16.7 27.7-14.5 0 0 8 2.5 9.1-2.7.8-3.4-2.2-5-5.5-5.8M417.2 140c-.3 5.2 8 5.2 8 5.2 11.5 1.1 18.7 6.3 21.4 18.3 1.6 5.2 3.3 6 6.3 6 2.2-.3 4.4-2.7 3.3-6.6-3.8-15.9-14-26.8-32.1-27.1-3.3-.2-6.6.7-6.9 4.2" fill="#000"/></mask><path d="M477.7 425.6h-89.3s-3.3-6.8-6.9-13.4-12.1-6.3-12.1-6.3H142s-8.2-1.1-12.4 6.3c-2.6 4.3-5 8.8-7.1 13.4H34.6C15.7 425.6 0 410.3 0 391.4V120.9C0 102 15.4 86.4 34.3 86.4h443.1c18.9 0 34.6 15.3 34.6 34.2v270.5c.3 18.9-15.4 34.5-34.3 34.5" mask="url(#casto-face)"/><path d="M371.1 203.2c-17.3 0-31.3 13.9-31.3 31.2 0 7.1 2.5 13.7 6.6 19.1 0 0 10.7-7.9 25.8-7.9 11.3 0 24.4 6.8 24.4 6.8 3.6-5.2 5.8-11.2 5.8-18.1 0-17.2-14-31.1-31.3-31.1m-230.2 0c-17.3 0-31.3 13.9-31.3 31.2 0 6.8 2.2 12.9 5.8 18.1 0 0 13.2-6.8 24.4-6.8 15.1 0 25.8 7.9 25.8 7.9 4.1-5.2 6.6-11.8 6.6-19.1 0-17.4-14-31.3-31.3-31.3"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 126.644 96" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>
|
||||||
|
After Width: | Height: | Size: 220 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="5.67 143.05 628.65 387.55" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"/><path d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8C343.2,346.5,335,363.3,326.8,380.1z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 75 79" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><mask id="masto-m"><rect width="75" height="79" fill="#fff"/><path d="M61.2484 27.0263V48.114H52.8916V27.6475C52.8916 23.3388 51.096 21.1413 47.4437 21.1413C43.4287 21.1413 41.4177 23.7409 41.4177 28.8755V40.0782H33.1111V28.8755C33.1111 23.7409 31.0965 21.1413 27.0815 21.1413C23.4507 21.1413 21.6371 23.3388 21.6371 27.6475V48.114H13.2839V27.0263C13.2839 22.7176 14.384 19.2946 16.5843 16.7572C18.8539 14.2258 21.8311 12.926 25.5264 12.926C29.8036 12.926 33.0357 14.5705 35.1905 17.8559L37.2698 21.346L39.3527 17.8559C41.5074 14.5705 44.7395 12.926 49.0095 12.926C52.7013 12.926 55.6784 14.2258 57.9553 16.7572C60.1531 19.2922 61.2508 22.7152 61.2484 27.0263Z" fill="#000"/></mask><path d="M73.8393 17.4898C72.6973 9.00165 65.2994 2.31235 56.5296 1.01614C55.05 0.797115 49.4441 0 36.4582 0H36.3612C23.3717 0 20.585 0.797115 19.1054 1.01614C10.5798 2.27644 2.79399 8.28712 0.904997 16.8758C-0.00358524 21.1056 -0.100549 25.7949 0.0682394 30.0965C0.308852 36.2651 0.355538 42.423 0.91577 48.5665C1.30307 52.6474 1.97872 56.6957 2.93763 60.6812C4.73325 68.042 12.0019 74.1676 19.1233 76.6666C26.7478 79.2728 34.9474 79.7055 42.8039 77.9162C43.6682 77.7151 44.5217 77.4817 45.3645 77.216C47.275 76.6092 49.5123 75.9305 51.1571 74.7385C51.1797 74.7217 51.1982 74.7001 51.2112 74.6753C51.2243 74.6504 51.2316 74.6229 51.2325 74.5948V68.6416C51.2321 68.6154 51.2259 68.5896 51.2142 68.5661C51.2025 68.5426 51.1858 68.522 51.1651 68.5058C51.1444 68.4896 51.1204 68.4783 51.0948 68.4726C51.0692 68.4669 51.0426 68.467 51.0171 68.4729C45.9835 69.675 40.8254 70.2777 35.6502 70.2682C26.7439 70.2682 24.3486 66.042 23.6626 64.2826C23.1113 62.762 22.7612 61.1759 22.6212 59.5646C22.6197 59.5375 22.6247 59.5105 22.6357 59.4857C22.6466 59.4609 22.6633 59.4391 22.6843 59.422C22.7053 59.4048 22.73 59.3929 22.7565 59.3871C22.783 59.3813 22.8104 59.3818 22.8367 59.3886C27.7864 60.5826 32.8604 61.1853 37.9522 61.1839C39.1768 61.1839 40.3978 61.1839 41.6224 61.1516C46.7435 61.008 52.1411 60.7459 57.1796 59.7621C57.3053 59.7369 57.431 59.7154 57.5387 59.6831C65.4861 58.157 73.0493 53.3672 73.8178 41.2381C73.8465 40.7606 73.9184 36.2364 73.9184 35.7409C73.9219 34.0569 74.4606 23.7949 73.8393 17.4898Z" mask="url(#masto-m)"/></svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="14 34.5 122.5 57" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M75.091,35.685c-12.438,0-22.981,8.433-26.248,19.857-2.84-6.06-8.994-10.305-16.082-10.305-9.748,0-17.761,8.013-17.761,17.761s8.013,17.765,17.761,17.765c7.088,0,13.242-4.248,16.082-10.309,3.268,11.426,13.81,19.861,26.248,19.861,12.346,0,22.835-8.308,26.186-19.605,2.892,5.924,8.97,10.053,15.958,10.053,9.748,0,17.765-8.017,17.765-17.765s-8.017-17.761-17.765-17.761c-6.988,0-13.065,4.127-15.958,10.05-3.352-11.296-13.84-19.601-26.186-19.601h0ZM75.091,46.11c9.39,0,16.89,7.497,16.89,16.887s-7.501,16.89-16.89,16.89-16.887-7.501-16.887-16.89,7.497-16.887,16.887-16.887ZM32.762,55.663c4.114,0,7.338,3.221,7.338,7.335s-3.225,7.338-7.338,7.338-7.335-3.225-7.335-7.338,3.221-7.335,7.335-7.335ZM117.234,55.663c4.114,0,7.338,3.221,7.338,7.335s-3.225,7.338-7.338,7.338-7.335-3.225-7.335-7.338,3.221-7.335,7.335-7.335Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 930 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="2799 -911 512 682.688" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m2799-911v341.344l256-170.656"/><path d="m2799-569.656v341.344l256-170.656"/><path d="m3055-740.344v341.344l256-170.656"/></svg>
|
||||||
|
After Width: | Height: | Size: 249 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 307 307" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" style="fill-rule:evenodd;clip-rule:evenodd;"><g transform="matrix(1,0,0,1,-757,-1483)"><g transform="matrix(1.432974,0,0,1.80298,-288.929017,-864.20063)"><g transform="matrix(0.629919,0,0,0.500647,539.407527,1110.972982)"><path d="M356.969,675.637C323.753,644.675 302.968,600.546 302.968,551.6C302.968,458.019 378.944,382.044 472.524,382.044C566.105,382.044 642.08,458.019 642.08,551.6C642.08,629.48 589.46,695.166 517.864,715.015C501.974,691.667 487.572,670.399 498.34,635.393C485.202,642.099 476.944,655.288 474.445,669.626C469.556,661.943 464.129,654.533 457.841,647.931C441.837,631.125 420.016,619.373 409.919,597.549C405.306,587.241 402.145,572.504 405.799,561.838C408.436,582.54 418.507,601.587 436.545,612.617C450.296,621.023 465.703,622.408 481.126,625.661C497.203,629.048 522.738,636.688 538.403,633.928C551.425,631.638 578.749,617.255 578.02,601.656C577.765,596.289 571.213,587.245 568.79,582.066C565.566,575.171 567.48,573.682 567.848,566.765C568.885,547.188 563.715,537.516 554.206,521.395C542.674,501.84 530.016,490.024 508.095,482.087C488.062,474.831 457.231,478.938 456.996,479.271C461.046,483.711 464.773,488.906 465.295,495.055C457.084,487.46 449.14,479.387 439.945,472.948C419.607,458.71 406.868,460.052 398.782,484.817C394.568,497.72 391.382,515.255 395.288,528.453C397.657,536.447 402.575,542.952 408.175,548.951C397.217,547.458 390.574,537.94 388.158,527.623C360.997,586.373 354.95,614.781 356.969,675.637ZM558.455,619.379L558.452,619.376C554.235,619.505 550.344,617.264 547.164,614.697C545.37,613.176 542.74,611.209 542.372,608.931C541.643,604.396 545.254,601.153 547.406,599.808C549.251,598.658 551.495,598.017 553.613,597.527C558.442,596.411 563.455,595.377 568.319,596.323C569.774,596.606 571.22,597.077 572.417,597.951C573.614,598.821 574.544,600.138 574.705,601.612C574.824,602.705 574.525,603.796 574.164,604.833C573.322,607.217 572.16,609.476 570.71,611.548C569.274,613.613 567.556,615.508 565.485,616.934C563.414,618.361 560.969,619.304 558.455,619.379ZM486.399,552.769C503.076,550.51 505.109,576.334 489.02,577.418C472.931,578.502 471.118,554.84 486.399,552.769ZM430.213,501.5C431.753,505.171 434.926,507.616 437.667,510.309C431.445,512.197 425.166,510.394 419.704,507.264C420.028,513.033 424.299,518.121 427.498,522.174C422.225,523.384 417.564,521.577 413.944,517.769C413.891,523.13 415.717,527.806 418.347,532.34C408.062,537.456 403.622,526.696 403.097,518.275C402.522,509.02 406.267,485.669 412.907,478.941C420.336,471.412 431.875,480.182 438.166,485.238C443.719,489.698 449.061,495.087 454.092,500.111C447.487,504.476 437.648,504.294 430.213,501.5ZM559.47,568.921C555.834,562.599 554.722,560.76 552.607,556.182C551.168,553.064 550.439,549.366 555.655,549.256C565.117,549.055 568.395,564.041 561.026,569.27C560.844,569.397 560.628,569.465 560.407,569.465C560.02,569.465 559.662,569.257 559.47,568.921ZM553.254,508.59C555.938,471.688 555.624,447.806 521.4,481.304C534.318,487.312 545.181,496.897 553.254,508.59Z"/></g></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="181 296 556 462" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M226.328419,494.722069 C372.088573,431.216685 469.284839,389.350049 517.917216,369.122161 C656.772535,311.36743 685.625481,301.334815 704.431427,301.003532 C708.567621,300.93067 717.815839,301.955743 723.806446,306.816707 C728.864797,310.92121 730.256552,316.46581 730.922551,320.357329 C731.588551,324.248848 732.417879,333.113828 731.758626,340.040666 C724.234007,419.102486 691.675104,610.964674 675.110982,699.515267 C668.10208,736.984342 654.301336,749.547532 640.940618,750.777006 C611.904684,753.448938 589.856115,731.588035 561.733393,713.153237 C517.726886,684.306416 492.866009,666.349181 450.150074,638.200013 C400.78442,605.66878 432.786119,587.789048 460.919462,558.568563 C468.282091,550.921423 596.21508,434.556479 598.691227,424.000355 C599.00091,422.680135 599.288312,417.758981 596.36474,415.160431 C593.441168,412.561881 589.126229,413.450484 586.012448,414.157198 C581.598758,415.158943 511.297793,461.625274 375.109553,553.556189 C355.154858,567.258623 337.080515,573.934908 320.886524,573.585046 C303.033948,573.199351 268.692754,563.490928 243.163606,555.192408 C211.851067,545.013936 186.964484,539.632504 189.131547,522.346309 C190.260287,513.342589 202.659244,504.134509 226.328419,494.722069 Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="15.6 11.4 17.1 19" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M25.5172 25.0575C25.4647 26.4295 24.3093 27.5306 22.8929 27.5306C22.5691 27.5306 22.2591 27.4729 21.9727 27.3675C22.2591 27.4729 22.5692 27.5306 22.893 27.5306C24.3094 27.5306 25.4648 26.4295 25.5174 25.0576L25.5224 12.8063H27.8124C28.0331 13.971 28.7405 14.9704 29.7205 15.5948C29.7208 15.5952 29.7212 15.5956 29.7215 15.596C30.4037 16.0305 31.2171 16.284 32.0903 16.284V16.9645C32.0903 16.9645 32.0903 16.9645 32.0904 16.9646V19.3405C30.4684 19.3405 28.9654 18.8334 27.7386 17.9728V24.1852C27.7386 27.2878 25.1559 29.8119 21.9812 29.8119C20.7545 29.8119 19.6169 29.4338 18.6818 28.7921C18.6813 28.7916 18.6808 28.791 18.6802 28.7905C17.1964 27.7717 16.224 26.0876 16.224 24.1846C16.224 21.0821 18.8067 18.5579 21.9814 18.5579C22.2448 18.5579 22.503 18.5791 22.7572 18.6128V19.337C19.861 19.4031 17.4865 21.5682 17.1713 24.3333C17.4868 21.5685 19.8611 19.4037 22.7571 19.3376V21.7342C22.5115 21.6591 22.2519 21.6154 21.9812 21.6154C20.5314 21.6154 19.3519 22.7683 19.3519 24.1852C19.3519 25.1719 19.9247 26.0292 20.7616 26.4596C20.7616 26.4597 20.7616 26.4597 20.7616 26.4597C21.1265 26.6474 21.541 26.7549 21.9811 26.7549C23.3975 26.7549 24.5529 25.6538 24.6055 24.2819L24.6105 12.0305H27.7385C27.7385 12.2955 27.7646 12.5545 27.8123 12.8063H25.5223L25.5172 25.0575Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 720 720" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M360,0C161.18,0,0,161.18,0,360c0,65.41,17.45,126.75,47.94,179.61L0,720l187.02-44.21c51.34,28.18,110.28,44.21,172.98,44.21,198.82,0,360-161.18,360-360S558.82,0,360,0ZM360,655.52c-60.17,0-116.13-17.98-162.82-48.87l-110.49,28.14,30.99-105.61c-33.53-47.93-53.2-106.26-53.2-169.19,0-163.21,132.31-295.52,295.52-295.52s295.52,132.31,295.52,295.52-132.31,295.52-295.52,295.52Z"/><path d="M444.35,407.52l87.1,41.06c4,1.88,6.56,5.94,6.2,10.34-.94,11.46-5.54,34.43-26.13,55.02-58.12,58.12-162.49-7.64-166.74-10.18-25.67-13.79-50.06-32.24-73.19-55.36-23.12-23.12-41.58-47.52-55.37-73.19-2.55-4.24-68.31-108.61-10.18-166.74,20.59-20.59,43.56-25.19,55.02-26.13,4.41-.36,8.46,2.2,10.34,6.2l41.07,87.1c1.94,4.12,1.09,9.02-2.13,12.24l-30.61,30.61c-6.62,6.62-8.56,16.93-4,25.11,11.17,20.03,26.19,39.32,43.59,57.07,17.75,17.4,37.04,32.43,57.07,43.59,8.18,4.56,18.48,2.62,25.11-4l30.61-30.61c3.22-3.22,8.12-4.08,12.24-2.13Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 1200 1227" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 415 B |
@@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="{{ locale }}">
|
<html lang="{{ locale }}" data-locale="{{ locale }}">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@@ -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",
|
||||||
@@ -100,43 +100,8 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script src="/assets/js/theme.js"></script>
|
||||||
(function() {
|
<script src="/assets/js/lang-redirect.js"></script>
|
||||||
// Récupérer le thème stocké ou détecter le thème système
|
|
||||||
const storedTheme = localStorage.getItem('oki-theme');
|
|
||||||
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
||||||
|
|
||||||
let theme = storedTheme;
|
|
||||||
|
|
||||||
// Si pas de préférence stockée, utiliser le thème système
|
|
||||||
if (!storedTheme) {
|
|
||||||
theme = systemPrefersDark ? 'dark' : 'light';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Appliquer le thème immédiatement
|
|
||||||
if (theme === 'light') {
|
|
||||||
document.documentElement.classList.add('light-theme');
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
(function() {
|
|
||||||
// Redirection automatique selon la langue du navigateur, sauf choix explicite déjà mémorisé
|
|
||||||
var pref = localStorage.getItem('oki-lang-pref');
|
|
||||||
if (pref) return;
|
|
||||||
|
|
||||||
var browserLang = (navigator.language || navigator.userLanguage || '').toLowerCase();
|
|
||||||
var wantsEnglish = browserLang.indexOf('en') === 0;
|
|
||||||
var currentLocale = '{{ locale }}';
|
|
||||||
|
|
||||||
if (wantsEnglish && currentLocale !== 'en') {
|
|
||||||
window.location.replace('/en/' + window.location.hash);
|
|
||||||
} else if (!wantsEnglish && currentLocale === 'en') {
|
|
||||||
window.location.replace('/' + window.location.hash);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
{% include "partials/nav.njk" %}
|
{% include "partials/nav.njk" %}
|
||||||
|
|||||||
@@ -5,14 +5,25 @@
|
|||||||
{{ t.contact.lede | safe }}
|
{{ t.contact.lede | safe }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="contact-grid">
|
<div class="contact-socials">
|
||||||
{% for section in t.contact.sections %}
|
{% for section in t.contact.sections %}
|
||||||
<div class="contact-card">
|
<div class="contact-socials-group">
|
||||||
<h3>{{ section.title }}</h3>
|
<h3 class="contact-socials-title">{{ section.title }}</h3>
|
||||||
<div class="contact-links">
|
<div class="contact-socials-row">
|
||||||
{% for link in section.links %}
|
{% for link in section.links %}
|
||||||
<a href="{{ link.url }}"{% if link.url.startsWith('http') %} target="_blank"{% endif %}>
|
{% set lname = link.text.toLowerCase() %}
|
||||||
{{ link.text }}
|
<a href="{{ link.url }}" title="{{ link.text }}"{% if link.url.startsWith('http') %} target="_blank" rel="noopener noreferrer"{% endif %} class="contact-social-link">
|
||||||
|
{% if 'kontak' in lname or 'mail' in lname %}
|
||||||
|
{% include "icons/email.svg" %}
|
||||||
|
{% elif 'whatsapp' in lname %}
|
||||||
|
{% include "icons/whatsapp.svg" %}
|
||||||
|
{% elif 'telegram' in lname %}
|
||||||
|
{% include "icons/telegram.svg" %}
|
||||||
|
{% elif 'discord' in lname %}
|
||||||
|
{% include "icons/discord.svg" %}
|
||||||
|
{% elif 'labola' in lname or 'gitea' in lname %}
|
||||||
|
{% include "icons/gitea.svg" %}
|
||||||
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<div class="faq-container">
|
<div class="faq-container">
|
||||||
{% for item in t.faq.items %}
|
{% for item in t.faq.items %}
|
||||||
<div class="faq-item">
|
<div class="faq-item">
|
||||||
<button class="faq-question" onclick="this.parentElement.classList.toggle('active')">
|
<button class="faq-question">
|
||||||
<span>{{ item.question }}</span>
|
<span>{{ item.question }}</span>
|
||||||
<span class="faq-icon">+</span>
|
<span class="faq-icon">+</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<div class="services-grid">
|
<div class="services-grid">
|
||||||
{% for service in t.services.items %}
|
{% for service in t.services.items %}
|
||||||
<div class="service-card">
|
<div class="service-card">
|
||||||
<div class="service-icon">{{ service.icon }}</div>
|
<div class="service-icon">{% include "icons/" + (service.platform | lower) + ".svg" %}</div>
|
||||||
<h3>{{ service.name }}</h3>
|
<h3>{{ service.name }}</h3>
|
||||||
<div class="service-platform">{{ service.platform }}</div>
|
<div class="service-platform">{{ service.platform }}</div>
|
||||||
<p class="service-description">
|
<p class="service-description">
|
||||||
|
|||||||
@@ -4,16 +4,27 @@
|
|||||||
<p class="footer-name">
|
<p class="footer-name">
|
||||||
{{ t.site.name }}
|
{{ t.site.name }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
{{ t.footer.tagline_line }}
|
|
||||||
</p>
|
|
||||||
<p class="footer-meta">
|
<p class="footer-meta">
|
||||||
{{ t.site.copyright }} | {{ t.site.tagline }}
|
© {% year %} {{ t.site.name }} | {{ t.site.tagline }}
|
||||||
</p>
|
</p>
|
||||||
<p class="footer-legal">
|
<p class="footer-legal">
|
||||||
<a href="{% if locale == 'en' %}/en/legal-notice/{% else %}/mentions-legales/{% endif %}">
|
<a href="{% if locale == 'en' %}/en/legal-notice/{% else %}/mentions-legales/{% endif %}">
|
||||||
{{ t.footer.legal_link }}
|
{{ t.footer.legal_link }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
<div class="footer-socials">
|
||||||
|
<a href="mailto:kontak@o-k-i.net" title="Email" class="social-link">
|
||||||
|
{% include "icons/email.svg" %}
|
||||||
|
</a>
|
||||||
|
<a href="https://wa.me/262692229740" target="_blank" rel="noopener noreferrer" title="WhatsApp" class="social-link">
|
||||||
|
{% include "icons/whatsapp.svg" %}
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/DPvUCA8dD" target="_blank" rel="noopener noreferrer" title="Discord" class="social-link">
|
||||||
|
{% include "icons/discord.svg" %}
|
||||||
|
</a>
|
||||||
|
<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" %}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -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">
|
||||||
@@ -31,9 +31,9 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% if locale == 'en' %}
|
{% if locale == 'en' %}
|
||||||
<a href="#" class="lang-switch" onclick="localStorage.setItem('oki-lang-pref','fr'); switchLanguage('fr'); return false;">{{ t.ui.lang_switch_label }}</a>
|
<a href="#" class="lang-switch" data-lang="fr">{{ t.ui.lang_switch_label }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="#" class="lang-switch" onclick="localStorage.setItem('oki-lang-pref','en'); switchLanguage('en'); return false;">{{ t.ui.lang_switch_label }}</a>
|
<a href="#" class="lang-switch" data-lang="en">{{ t.ui.lang_switch_label }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<button id="theme-toggle" class="theme-toggle" aria-label="{{ t.ui.theme_toggle }}" title="{{ t.ui.theme_toggle }}">
|
<button id="theme-toggle" class="theme-toggle" aria-label="{{ t.ui.theme_toggle }}" title="{{ t.ui.theme_toggle }}">
|
||||||
<span class="theme-icon theme-icon-dark">🌙</span>
|
<span class="theme-icon theme-icon-dark">🌙</span>
|
||||||
|
|||||||
@@ -7,17 +7,21 @@
|
|||||||
|
|
||||||
<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">
|
||||||
|
{{ link.text }} →
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="custom-donation-form">
|
<div class="custom-donation-form">
|
||||||
<input type="number" id="customAmountOneTime" placeholder="{{ t.support.custom_amount_placeholder }}" min="1" class="custom-amount-input">
|
<input type="number" id="customAmountOneTime" placeholder="{{ t.support.custom_amount_placeholder }}" min="1" class="custom-amount-input">
|
||||||
<span class="currency-symbol">{{ t.support.one_time_suffix }}</span>
|
<span class="currency-symbol">{{ t.support.one_time_suffix }}</span>
|
||||||
<button onclick="handleCustomDonation('oneTime')" class="custom-donation-btn custom-donation-btn-primary">
|
<button data-donation-type="oneTime" class="custom-donation-btn custom-donation-btn-primary">
|
||||||
{{ t.support.custom_amount_btn }}
|
{{ t.support.custom_amount_btn }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<div class="custom-donation-form">
|
<div class="custom-donation-form">
|
||||||
<input type="number" id="customAmountMonthly" placeholder="{{ t.support.custom_amount_placeholder }}" min="1" class="custom-amount-input custom-amount-input-monthly">
|
<input type="number" id="customAmountMonthly" placeholder="{{ t.support.custom_amount_placeholder }}" min="1" class="custom-amount-input custom-amount-input-monthly">
|
||||||
<span class="currency-symbol">{{ t.support.monthly_suffix }}</span>
|
<span class="currency-symbol">{{ t.support.monthly_suffix }}</span>
|
||||||
<button onclick="handleCustomDonation('monthly')" class="custom-donation-btn custom-donation-btn-secondary">
|
<button data-donation-type="monthly" class="custom-donation-btn custom-donation-btn-secondary">
|
||||||
{{ t.support.custom_monthly_btn }}
|
{{ t.support.custom_monthly_btn }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -210,8 +210,11 @@ html.light-theme .contact-links a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.logo-image {
|
.logo-image {
|
||||||
height: 2.25rem;
|
height: 2.5rem;
|
||||||
width: auto;
|
width: auto;
|
||||||
|
background: #fff;
|
||||||
|
padding: 0.25rem;
|
||||||
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-links {
|
.nav-links {
|
||||||
@@ -382,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;
|
||||||
}
|
}
|
||||||
@@ -557,7 +560,13 @@ html.light-theme .hero::before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.service-icon {
|
.service-icon {
|
||||||
font-size: 1.5rem;
|
color: var(--or-oki);
|
||||||
|
height: 2.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-icon svg {
|
||||||
|
height: 100%;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-card h3 {
|
.service-card h3 {
|
||||||
@@ -950,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;
|
||||||
@@ -993,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;
|
||||||
@@ -1000,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 */
|
||||||
@@ -1187,39 +1207,74 @@ html.light-theme .hero::before {
|
|||||||
color: var(--or-oki);
|
color: var(--or-oki);
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-grid {
|
.contact-socials {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
gap: 2rem;
|
gap: 2rem;
|
||||||
max-width: 1200px;
|
max-width: 1200px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-card {
|
.contact-socials-group {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-card h3 {
|
.contact-socials-title {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 600;
|
||||||
color: var(--or-oki);
|
color: var(--or-oki);
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 0.75rem;
|
||||||
font-size: 1.1rem;
|
opacity: 0.9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-links {
|
.contact-socials-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
justify-content: center;
|
||||||
gap: 0.5rem;
|
align-items: center;
|
||||||
font-family: var(--font-body);
|
gap: 1.5rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-links a {
|
.contact-social-link {
|
||||||
color: var(--blanc-creme);
|
display: inline-flex;
|
||||||
text-decoration: none;
|
align-items: center;
|
||||||
transition: color 0.2s;
|
justify-content: center;
|
||||||
}
|
width: 3rem;
|
||||||
|
height: 3rem;
|
||||||
.contact-links a:hover {
|
|
||||||
color: var(--or-oki);
|
color: var(--or-oki);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: transform 0.2s, opacity 0.2s;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: rgba(253, 184, 19, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-social-link:hover {
|
||||||
|
transform: scale(1.15);
|
||||||
|
background: rgba(253, 184, 19, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-social-link svg {
|
||||||
|
width: 60%;
|
||||||
|
height: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.contact-socials {
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-socials-row {
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-social-link {
|
||||||
|
width: 3.5rem;
|
||||||
|
height: 3.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Footer */
|
/* Footer */
|
||||||
@@ -1275,6 +1330,47 @@ footer .flag-bar {
|
|||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footer-socials {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-link {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 1.75rem;
|
||||||
|
height: 1.75rem;
|
||||||
|
color: var(--or-oki);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: transform 0.2s, opacity 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-link svg {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-link:hover {
|
||||||
|
transform: scale(1.15);
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.footer-socials {
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-link {
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Donation Styles */
|
/* Donation Styles */
|
||||||
.donation-amount {
|
.donation-amount {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1408,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;
|
||||||
@@ -1450,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;
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 105 KiB |
@@ -0,0 +1,15 @@
|
|||||||
|
(function() {
|
||||||
|
// Redirection automatique selon la langue du navigateur, sauf choix explicite déjà mémorisé
|
||||||
|
var pref = localStorage.getItem('oki-lang-pref');
|
||||||
|
if (pref) return;
|
||||||
|
|
||||||
|
var browserLang = (navigator.language || navigator.userLanguage || '').toLowerCase();
|
||||||
|
var wantsEnglish = browserLang.indexOf('en') === 0;
|
||||||
|
var currentLocale = document.documentElement.dataset.locale || 'fr';
|
||||||
|
|
||||||
|
if (wantsEnglish && currentLocale !== 'en') {
|
||||||
|
window.location.replace('/en/' + window.location.hash);
|
||||||
|
} else if (!wantsEnglish && currentLocale === 'en') {
|
||||||
|
window.location.replace('/' + window.location.hash);
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -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;
|
||||||
@@ -67,6 +60,18 @@
|
|||||||
|
|
||||||
// Ajouter l'événement au bouton
|
// Ajouter l'événement au bouton
|
||||||
themeToggle?.addEventListener('click', toggleTheme);
|
themeToggle?.addEventListener('click', toggleTheme);
|
||||||
|
|
||||||
|
// Language switcher links
|
||||||
|
document.querySelectorAll('.lang-switch').forEach(function(link) {
|
||||||
|
link.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var lang = this.dataset.lang;
|
||||||
|
if (lang) {
|
||||||
|
localStorage.setItem('oki-lang-pref', lang);
|
||||||
|
switchLanguage(lang);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// Language switch with page mapping
|
// Language switch with page mapping
|
||||||
@@ -83,6 +88,7 @@ function switchLanguage(lang) {
|
|||||||
}
|
}
|
||||||
newPath = newPath.replace('/press/', '/presse/');
|
newPath = newPath.replace('/press/', '/presse/');
|
||||||
newPath = newPath.replace('/legal-notice/', '/mentions-legales/');
|
newPath = newPath.replace('/legal-notice/', '/mentions-legales/');
|
||||||
|
newPath = newPath.replace('/donate/', '/dons/');
|
||||||
} else {
|
} else {
|
||||||
// Switch to English
|
// Switch to English
|
||||||
if (!currentPath.startsWith('/en/')) {
|
if (!currentPath.startsWith('/en/')) {
|
||||||
@@ -92,6 +98,7 @@ function switchLanguage(lang) {
|
|||||||
}
|
}
|
||||||
newPath = newPath.replace('/presse/', '/press/');
|
newPath = newPath.replace('/presse/', '/press/');
|
||||||
newPath = newPath.replace('/mentions-legales/', '/legal-notice/');
|
newPath = newPath.replace('/mentions-legales/', '/legal-notice/');
|
||||||
|
newPath = newPath.replace('/dons/', '/donate/');
|
||||||
}
|
}
|
||||||
|
|
||||||
window.location.href = newPath;
|
window.location.href = newPath;
|
||||||
@@ -120,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 = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -153,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 = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -165,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 = '';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -288,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) => {
|
||||||
@@ -375,3 +346,18 @@ function handleCustomDonation(type) {
|
|||||||
|
|
||||||
window.location.href = stripeUrl;
|
window.location.href = stripeUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FAQ accordion toggle
|
||||||
|
document.querySelectorAll('.faq-question').forEach(button => {
|
||||||
|
button.addEventListener('click', () => {
|
||||||
|
button.parentElement.classList.toggle('active');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Custom donation buttons
|
||||||
|
document.querySelectorAll('.custom-donation-btn').forEach(button => {
|
||||||
|
button.addEventListener('click', () => {
|
||||||
|
const type = button.dataset.donationType;
|
||||||
|
if (type) handleCustomDonation(type);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
(function() {
|
||||||
|
// Récupérer le thème stocké ou détecter le thème système
|
||||||
|
const storedTheme = localStorage.getItem('oki-theme');
|
||||||
|
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
|
|
||||||
|
let theme = storedTheme;
|
||||||
|
|
||||||
|
// Si pas de préférence stockée, utiliser le thème système
|
||||||
|
if (!storedTheme) {
|
||||||
|
theme = systemPrefersDark ? 'dark' : 'light';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Appliquer le thème immédiatement
|
||||||
|
if (theme === 'light') {
|
||||||
|
document.documentElement.classList.add('light-theme');
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
title: Dons
|
||||||
|
description: Soutenez ORGANISATION KA INTERNATIONALE par un don ponctuel ou mensuel via Stripe, Liberapay ou Ko-fi.
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="press-hero">
|
||||||
|
<h1>{{ t.support.section_title }} <span class="accent-text">{{ t.support.section_title_accent }}</span></h1>
|
||||||
|
<p class="press-lede">{{ t.support.lede }}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% include "partials/support.njk" %}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
title: Donate
|
||||||
|
description: Support ORGANISATION KA INTERNATIONALE with a one-time or monthly donation through Stripe, Liberapay or Ko-fi.
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="press-hero">
|
||||||
|
<h1>{{ t.support.section_title }} <span class="accent-text">{{ t.support.section_title_accent }}</span></h1>
|
||||||
|
<p class="press-lede">{{ t.support.lede }}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% include "partials/support.njk" %}
|
||||||
@@ -5,12 +5,12 @@ 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" %}
|
||||||
{% include "partials/clients.njk" %}
|
{% include "partials/clients.njk" %}
|
||||||
{% include "partials/fediverse.njk" %}
|
{% include "partials/fediverse.njk" %}
|
||||||
{% include "partials/support.njk" %}
|
|
||||||
{% include "partials/faq.njk" %}
|
{% include "partials/faq.njk" %}
|
||||||
{% include "partials/engagement.njk" %}
|
{% include "partials/engagement.njk" %}
|
||||||
{% include "partials/contact.njk" %}
|
{% include "partials/contact.njk" %}
|
||||||
|
|||||||
@@ -33,12 +33,12 @@ description: Legal notice and legal information of ORGANISATION KA INTERNATIONAL
|
|||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Webmaster:</strong><br>
|
<strong style="color: var(--or-oki);">Webmaster:</strong><br>
|
||||||
Cédric FAMIBELLE-PRONZOLA<br>
|
Cédric FAMIBELLE-PRONZOLA<br>
|
||||||
Contact: <a href="mailto:contact@cedric-pronzola.re" style="color: var(--or-oki); text-decoration: none;">contact@cedric-pronzola.re</a>
|
Contact: <a href="mailto:contact@cedric-pronzola.dev" style="color: var(--or-oki); text-decoration: none;">contact@cedric-pronzola.dev</a>
|
||||||
</li>
|
</li>
|
||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Hosting Provider:</strong><br>
|
<strong style="color: var(--or-oki);">Hosting Provider:</strong><br>
|
||||||
OVH<br>
|
o2switch<br>
|
||||||
2 rue Kellermann, 59100 Roubaix
|
222-224 Boulevard Gustave Flaubert, 63000 Clermont-Ferrand, France
|
||||||
</li>
|
</li>
|
||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Data Protection Officer:</strong><br>
|
<strong style="color: var(--or-oki);">Data Protection Officer:</strong><br>
|
||||||
|
|||||||
@@ -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,12 +5,12 @@ 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" %}
|
||||||
{% include "partials/clients.njk" %}
|
{% include "partials/clients.njk" %}
|
||||||
{% include "partials/fediverse.njk" %}
|
{% include "partials/fediverse.njk" %}
|
||||||
{% include "partials/support.njk" %}
|
|
||||||
{% include "partials/faq.njk" %}
|
{% include "partials/faq.njk" %}
|
||||||
{% include "partials/engagement.njk" %}
|
{% include "partials/engagement.njk" %}
|
||||||
{% include "partials/contact.njk" %}
|
{% include "partials/contact.njk" %}
|
||||||
|
|||||||
@@ -34,12 +34,12 @@ description: Mentions légales et informations juridiques de l'ORGANISATION KA I
|
|||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Webmaster :</strong><br>
|
<strong style="color: var(--or-oki);">Webmaster :</strong><br>
|
||||||
Cédric FAMIBELLE-PRONZOLA<br>
|
Cédric FAMIBELLE-PRONZOLA<br>
|
||||||
Contact : <a href="mailto:contact@cedric-pronzola.re" style="color: var(--or-oki); text-decoration: none;">contact@cedric-pronzola.re</a>
|
Contact : <a href="mailto:contact@cedric-pronzola.dev" style="color: var(--or-oki); text-decoration: none;">contact@cedric-pronzola.dev</a>
|
||||||
</li>
|
</li>
|
||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Hébergeur :</strong><br>
|
<strong style="color: var(--or-oki);">Hébergeur :</strong><br>
|
||||||
OVH<br>
|
o2switch<br>
|
||||||
2 rue Kellermann, 59100 Roubaix
|
222-224 Boulevard Gustave Flaubert, 63000 Clermont-Ferrand
|
||||||
</li>
|
</li>
|
||||||
<li style="margin-bottom: 1rem;">
|
<li style="margin-bottom: 1rem;">
|
||||||
<strong style="color: var(--or-oki);">Délégué à la protection des données :</strong><br>
|
<strong style="color: var(--or-oki);">Délégué à la protection des données :</strong><br>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -24,6 +24,18 @@
|
|||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.5</priority>
|
<priority>0.5</priority>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://o-k-i.net/dons/</loc>
|
||||||
|
<lastmod>2026-07-07</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://o-k-i.net/en/donate/</loc>
|
||||||
|
<lastmod>2026-07-07</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://o-k-i.net/mentions-legales/</loc>
|
<loc>https://o-k-i.net/mentions-legales/</loc>
|
||||||
<lastmod>2025-01-05</lastmod>
|
<lastmod>2025-01-05</lastmod>
|
||||||
|
|||||||