Compare commits

..

No commits in common. "f49c9d77123e67b1aee0972e4340bf78165f1a0a" and "f0591a20ab3573b0039231fdb3b77c9fc9b66440" have entirely different histories.

5 changed files with 118 additions and 466 deletions

View file

@ -1,14 +1,8 @@
{
"total_raised": "35825.53",
"total_raised": "35675.25",
"goal_amt": "50000.0",
"currency": "eur",
"donations_count": 533,
"recurring_donors_count": 56,
"donations_count": 521,
"campaign_name": "Soutenez Index avant le 31 d\u00e9cembre 2025 !",
"updated_at": "2026-03-06T07:41:46+00:00",
"DEBUG_plans_breakdown": {
"cancelled|monthly": 36,
"active|monthly": 56,
"failed|monthly": 19
}
"updated_at": "2026-02-27T12:51:20+01:00"
}

View file

@ -128,56 +128,14 @@ if ($campaign === null) {
}
}
// Compter tous les donateurs réguliers actifs (toutes campagnes confondues)
$recurring_count = 0;
$plans_page = 1;
do {
$plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page;
$ch_plans = curl_init();
curl_setopt_array($ch_plans, [
CURLOPT_URL => $plans_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => DONORBOX_EMAIL . ':' . DONORBOX_API_KEY,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'User-Agent: Index-NGO-Website'],
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => true
]);
$plans_response = curl_exec($ch_plans);
$plans_http_code = curl_getinfo($ch_plans, CURLINFO_HTTP_CODE);
curl_close($ch_plans);
if ($plans_response === false || $plans_http_code !== 200) {
break;
}
$plans = json_decode($plans_response, true);
if (!is_array($plans)) break;
foreach ($plans as $plan) {
if (isset($plan['status']) && $plan['status'] === 'active') {
$recurring_count++;
}
$status = $plan['status'] ?? 'unknown';
$type = $plan['type'] ?? 'unknown';
$plans_detail[$status . '|' . $type] = ($plans_detail[$status . '|' . $type] ?? 0) + 1;
}
$plans_page++;
} while (count($plans) === 100);
// Extraire uniquement les données nécessaires
$filteredData = [
'total_raised' => $campaign['total_raised'] ?? 0,
'goal_amt' => $campaign['goal_amt'] ?? 50000,
'currency' => $campaign['currency'] ?? 'EUR',
'donations_count' => $campaign['donations_count'] ?? 0,
'recurring_donors_count' => $recurring_count,
'campaign_name' => $campaign['name'] ?? 'Unknown',
'updated_at' => date('c'),
'plans_detail' => $plans_detail ?? []
'updated_at' => date('c')
];
$jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT);

View file

@ -2,8 +2,17 @@ const DONORBOX_CONFIG = {
proxyUrl: '/api/donorbox-proxy.php',
};
const RECURRING_DONORS_OFFSET = 98;
const GOAL_SUPPORTERS = 500;
function formatCurrency(amount) {
const rounded = Math.round(amount * 100) / 100;
const hasDecimals = rounded % 1 !== 0;
const formatted = rounded.toLocaleString('fr-FR', {
minimumFractionDigits: 0,
maximumFractionDigits: hasDecimals ? 2 : 0,
});
return formatted.replace(/[\s\u00A0\u202F]/g, '\u202F') + '\u202F€';
}
async function fetchDonorboxData() {
try {
@ -32,9 +41,9 @@ async function fetchDonorboxData() {
}
function updateGaugeDisplay(campaignData) {
const recurringCount = campaignData.recurring_donors_count || 0;
const totalSupport = recurringCount + RECURRING_DONORS_OFFSET;
const percentage = Math.min((totalSupport / GOAL_SUPPORTERS) * 100, 100);
const collected = campaignData.total_raised || 0;
const goal = campaignData.goal_amt || 50000;
const percentage = Math.min((collected / goal) * 100, 100);
const gaugeElement = document.getElementById('gauge');
if (gaugeElement) {
@ -44,16 +53,27 @@ function updateGaugeDisplay(campaignData) {
);
}
const countElement = document.querySelector(
const collectedElement = document.querySelector(
'#gauge--infos__donateurs .value'
);
if (countElement) {
countElement.textContent = totalSupport;
if (collectedElement) {
collectedElement.textContent = formatCurrency(collected);
}
const goalElement = document.querySelector('#gauge--infos__objectif .value');
if (goalElement) {
goalElement.textContent = formatCurrency(goal);
}
const donorsCount = campaignData.donations_count || 0;
const donorsElement = document.querySelector('#gauge--infos__donors .value');
if (donorsElement) {
donorsElement.textContent = donorsCount;
}
console.log('Gauge updated:', {
recurringDonors: recurringCount,
totalSupport,
collected: formatCurrency(collected),
goal: formatCurrency(goal),
percentage: `${percentage.toFixed(1)}%`,
});
}

View file

@ -96,17 +96,21 @@
<div class="gauge__container">
<div id="gauge" style="--pourcent: 0%"></div>
<div class="gauge--infos" id="gauge--infos__donateurs">
<p class="property">Regular supporters</p>
<p class="property">Raised</p>
<p class="value">0€</p>
</div>
<div class="gauge--infos" id="gauge--infos__donors">
<p class="property">Donors</p>
<p class="value">0</p>
</div>
<div class="gauge--infos" id="gauge--infos__objectif">
<p class="property">Goal</p>
<p class="value">500</p>
<p class="value"></p>
</div>
</div>
<p class="p__baseline-big">
Goal: 500 Supporters<br /><strong>by 21 June 2026</strong>
Support us <strong>in 2026</strong>
</p>
</section>
@ -118,7 +122,7 @@
</section>
<section id="section__video">
<h2 class="section__heading">Why support Index? Hear from those at the heart of it.</h2>
<h2 class="section__heading">20252026 campaign video</h2>
<div class="video-container">
<iframe
src="https://player.vimeo.com/video/1136957715?h=215c38e160&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1"
@ -133,84 +137,6 @@
<section id="section__questions">
<h3 class="section__heading">Frequently Asked Questions</h3>
<details>
<summary>What are Index Supporters?</summary>
<p>
"Supporters" is the name we give to everyone who makes a monthly
donation to Index. 5, 10, 20 euros or more: it is this regularity
that allows us to plan ahead and build our financial independence.
In 2026, we are launching a campaign to grow this base of
Supporters. If you have made a one-time donation in the past,
please know we are deeply grateful — you can continue to give
occasionally whenever you wish. But we encourage monthly giving
because it is the form of support that best enables us to sustain
our work over time.
</p>
</details>
<details>
<summary>What do I get by becoming a Supporter?</summary>
<p>
By becoming an Index Supporter, you join a community committed to
independent investigation. Specifically, you get:
</p>
<ul>
<li>
access to the Index Discord, where you can exchange directly
with the team and other Supporters;
</li>
<li>
a 20% discount on the entire Index support shop, including
training courses;
</li>
<li>
priority access to training sessions and events organized by
Index;
</li>
<li>
and our deepest gratitude — because you become one of the
people who make Index's long-term work possible.
</li>
</ul>
</details>
<details>
<summary>I already have a monthly donation from a previous campaign — do I get Supporter benefits?</summary>
<p>
Yes! If your monthly donation to Index is active, regardless of
the campaign through which you first subscribed, you are an Index
Supporter and you enjoy all associated benefits: Discord access,
20% shop and training discount, priority access to events. No
additional steps are required on your part. You have received or
will soon receive a message detailing your benefits, along with
our renewed thanks. For more information, contact us at
<a href="mailto:soutiens@index.ngo">soutiens@index.ngo</a>.
</p>
</details>
<details>
<summary>I've already made a one-time donation — how do I become a Supporter?</summary>
<p>
Simply return to this page and select a monthly donation. Your
regular support will complement your one-time gift — the two are
not mutually exclusive. If you would rather switch to a monthly
donation in place of occasional gifts, no additional steps are
needed: just choose the monthly amount that suits you.
</p>
</details>
<details>
<summary>I'm already a Supporter — how do I change or cancel my monthly donation?</summary>
<p>
You can adjust the amount of your monthly donation or cancel it
at any time through your donor dashboard on Donorbox. An access
link was sent to you by email when you first donated. If you
cannot find it, contact us at
<a href="mailto:dons@index.ngo">dons@index.ngo</a> and we will
help.
</p>
</details>
<details>
<summary>How will my donation to Index be used?</summary>
<p>
@ -336,15 +262,15 @@
<div class="col-right">
<section id="section__donation">
<nav class="nav--tabs">
<button class="nav--tabs__btn is-selected">Monthly donation</button>
<button class="nav--tabs__btn">
<button class="nav--tabs__btn is-selected">
One-time donation
</button>
<button class="nav--tabs__btn">Monthly donation</button>
</nav>
<div
data-donnation="one-off"
class="btn--donation__container"
class="btn--donation__container is-selected"
>
<button class="btn--donation">
<p class="bold">200&#8239;</p>
@ -368,7 +294,7 @@
</button>
</div>
<div data-donnation="monthly" class="btn--donation__container is-selected">
<div data-donnation="monthly" class="btn--donation__container">
<button class="btn--donation">
<p class="bold">5€/month</p>
<p class="small">That is X€ after taxes</p>
@ -592,36 +518,16 @@
target="_blank"
rel="noopener noreferrer"
>
<span class="icon">
<svg
width="100%"
height="100%"
viewBox="0 0 24 24"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill: white" />
</g>
<g
transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)"
>
<path
d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z"
style="fill-rule: nonzero"
/>
</g>
</svg>
</span>
<span class="icon">
<svg width="100%" height="100%" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill:white;"/>
</g>
<g transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)">
<path d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z" style="fill-rule:nonzero;"/>
</g>
</svg>
</span>
<span class="text">X</span>
</a>
</li>

View file

@ -97,17 +97,21 @@
<div class="gauge__container">
<div id="gauge" style="--pourcent: 0%"></div>
<div class="gauge--infos" id="gauge--infos__donateurs">
<p class="property">Soutiens réguliers</p>
<p class="property">Collectés</p>
<p class="value">0€</p>
</div>
<div class="gauge--infos" id="gauge--infos__donors">
<p class="property">Donateur·ices</p>
<p class="value">0</p>
</div>
<div class="gauge--infos" id="gauge--infos__objectif">
<p class="property">Objectif</p>
<p class="value">500</p>
<p class="value"></p>
</div>
</div>
<p class="p__baseline-big">
Objectif 500 Soutiens<br /><strong>au 21 juin 2026</strong>
Soutenez-nous<br /><strong>en 2026</strong>
</p>
</section>
@ -119,10 +123,7 @@
</section>
<section id="section__video">
<h2 class="section__heading">
Pourquoi soutenir Index&#8239; ? <br />Écoutez les premier·es
concerné·es
</h2>
<h2 class="section__heading">Pourquoi soutenir Index&#8239; ? <br>Écoutez les premier·es concerné·es </h2>
<div class="video-container">
<iframe
title="Vidéo de campagne"
@ -146,13 +147,7 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
style="fill-rule: evenodd; clip-rule: evenodd; stroke-linejoin: round; stroke-miterlimit: 2;">
<rect
x="0"
y="0"
@ -170,36 +165,22 @@
</label>
<ul class="videos__ul">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Index fait un travail que&nbsp;la&nbsp;justice
ne&nbsp;fait pas »&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
dIssam&nbsp;El&nbsp;Khalfaoui
</p>
<p class="txt">«&#8239;Index fait un travail que&nbsp;la&nbsp;justice ne&nbsp;fait pas »&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage dIssam&nbsp;El&nbsp;Khalfaoui</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1145581831?h=ce46358189&autoplay=1"
>
<span class="icon">
<svg
@ -216,172 +197,67 @@
/>
</svg>
</span>
<p class="txt">
«&#8239;Votre travail nous a&nbsp;permis de nous rendre au
tribunal la&nbsp;tête haute&#8239;»&#8239;: le&nbsp;témoignage
de&nbsp;Dominique&nbsp;Rodtchenki-Pontonnier
</p>
<p class="txt">«&#8239;Votre travail nous a&nbsp;permis de nous rendre au tribunal la&nbsp;tête haute&#8239;»&#8239;: le&nbsp;témoignage de&nbsp;Dominique&nbsp;Rodtchenki-Pontonnier</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Les enquêtes d'Index doivent continuer&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
dAssa&nbsp;Traoré
</p>
<p class="txt">«&#8239;Les enquêtes d'Index doivent continuer&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage dAssa&nbsp;Traoré</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Vous faites un travail rare
et&nbsp;concret&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Jérôme&nbsp;Rodrigues
</p>
<p class="txt">«&#8239;Vous faites un travail rare et&nbsp;concret&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Jérôme&nbsp;Rodrigues</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Index est dun intérêt public absolu&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Fatiha&nbsp;B.
</p>
<p class="txt">«&#8239;Index est dun intérêt public absolu&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Fatiha&nbsp;B.</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Je naurais jamais imaginé recevoir un&nbsp;tel
soutien&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Jean-François&nbsp;Martin
</p>
<p class="txt">«&#8239;Je naurais jamais imaginé recevoir un&nbsp;tel soutien&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Jean-François&nbsp;Martin</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1146620554?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1146620554?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Le travail d'Index a permis de rétablir
la&nbsp;vérité&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage de
Mahamadou&nbsp;Camara, frère de&nbsp;Gaye
</p>
<p class="txt">«&#8239;Le travail d'Index a permis de rétablir la&nbsp;vérité&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de Mahamadou&nbsp;Camara, frère de&nbsp;Gaye</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1"
>
<li class="videos__li" data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1">
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">
«&#8239;Pour les familles endeuillées, Index est
essentiel&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage de
Christelle Vendeiro-Bico, belle-sœur de Luis&nbsp;Bico
</p>
<p class="txt">«&#8239;Pour les familles endeuillées, Index est essentiel&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de Christelle Vendeiro-Bico, belle-sœur de Luis&nbsp;Bico</p>
</li>
</ul>
</section>
@ -398,88 +274,6 @@
<section id="section__questions">
<h3 class="section__heading">Questions fréquentes</h3>
<details>
<summary>Les Soutiens d'Index, c'est quoi ?</summary>
<p>
« Soutiens » est le nom que nous donnons à toutes celles et ceux
qui font un don mensuel à Index. 5, 10, 20 euros ou plus : c'est
cette régularité qui nous permet de planifier notre action et de
construire notre indépendance financière. En 2026, nous lançons
une campagne pour élargir cette base de soutiens. Si vous avez
déjà fait un don ponctuel par le passé, sachez que nous vous en
sommes très reconnaissant·es — vous pouvez continuer à donner
ponctuellement quand vous le souhaitez. Mais si nous encourageons
le don mensuel, c'est parce qu'il est le mode de soutien qui nous
permet le mieux de structurer notre travail dans la durée.
</p>
</details>
<details>
<summary>Qu'est-ce que je reçois en devenant Soutien ?</summary>
<p>
En devenant Soutien d'Index, vous rejoignez une communauté engagée
pour l'investigation indépendante. Concrètement, vous bénéficiez :
</p>
<ul>
<li>
d'un accès au Discord d'Index, où vous pouvez échanger
directement avec l'équipe et les autres soutiens ;
</li>
<li>
d'une réduction de 20 % sur l'ensemble de la boutique de
soutien à Index, y compris les offres de formation ;
</li>
<li>
d'un accès prioritaire aux formations et aux événements
organisés par Index ;
</li>
<li>
de notre plus grande reconnaissance : car vous faites alors
partie des personnes qui rendent possible l'action d'Index sur
le long terme.
</li>
</ul>
</details>
<details>
<summary>J'ai souscrit à un don mensuel à Index lors d'une précédente campagne : ai-je accès aux avantages des Soutiens d'Index ?</summary>
<p>
Oui ! Si votre don mensuel à Index est actif, quelle que soit la
campagne lors de laquelle vous l'avez souscrit, vous êtes un·e
Soutien d'Index et vous bénéficiez de l'ensemble des avantages
associés : accès au Discord, réduction de 20 % sur la boutique et
les formations, accès prioritaire aux événements. Aucune démarche
supplémentaire n'est nécessaire de votre part. Vous avez reçu ou
allez recevoir un message qui contient le détail de vos avantages,
et nos remerciements renouvelés. Pour plus d'infos, contactez-nous
à <a href="mailto:soutiens@index.ngo">soutiens@index.ngo</a>.
</p>
</details>
<details>
<summary>Je suis déjà donateur·rice ponctuel·le, comment devenir Soutien ?</summary>
<p>
Il vous suffit de revenir sur cette page et de sélectionner un don
mensuel. Votre soutien régulier viendra s'ajouter à votre don
ponctuel — les deux sont complémentaires. Si vous souhaitez
basculer vers un soutien mensuel en remplacement de vos dons
ponctuels, aucune démarche supplémentaire n'est nécessaire :
choisissez simplement le montant mensuel qui vous convient.
</p>
</details>
<details>
<summary>Je suis déjà Soutien, comment modifier ou arrêter mon don mensuel ?</summary>
<p>
Vous pouvez modifier le montant de votre don mensuel ou
l'interrompre à tout moment depuis votre espace donateur sur
Donorbox. Un lien d'accès vous a été envoyé par e-mail lors de
votre premier don. Si vous ne le retrouvez pas, contactez-nous à
<a href="mailto:dons@index.ngo">dons@index.ngo</a> et nous vous
aiderons.
</p>
</details>
<details>
<summary>À quoi va servir mon don à Index ?</summary>
<p>
@ -611,15 +405,15 @@
<div class="col-right">
<section id="section__donation">
<nav class="nav--tabs">
<button class="nav--tabs__btn is-selected">Je donne tous les mois</button>
<button class="nav--tabs__btn">
<button class="nav--tabs__btn is-selected">
Je donne une fois
</button>
<button class="nav--tabs__btn">Je donne tous les mois</button>
</nav>
<div
data-donnation="one-off"
class="btn--donation__container"
class="btn--donation__container is-selected"
>
<button class="btn--donation">
<p class="bold">200&#8239;</p>
@ -643,7 +437,7 @@
</button>
</div>
<div data-donnation="monthly" class="btn--donation__container is-selected">
<div data-donnation="monthly" class="btn--donation__container">
<button class="btn--donation">
<p class="bold">5€/mois</p>
<p class="small">Soit X€ après impôts</p>
@ -869,36 +663,16 @@
target="_blank"
rel="noopener noreferrer"
>
<span class="icon">
<svg
width="100%"
height="100%"
viewBox="0 0 24 24"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill: white" />
</g>
<g
transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)"
>
<path
d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z"
style="fill-rule: nonzero"
/>
</g>
</svg>
</span>
<span class="icon">
<svg width="100%" height="100%" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill:white;"/>
</g>
<g transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)">
<path d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z" style="fill-rule:nonzero;"/>
</g>
</svg>
</span>
<span class="text">X</span>
</a>
</li>