Turn participation into emergency health funding

When Funding stops, health shouldn't

Community motivation Sustainable health funding.

Backed by behavioral science

Trusted by leading partners for a decade

School Donation Platform

Find your community

We partner with schools in your community and use health coverage to incentivize impact.

    Choose what impact you want your health coverage to incentivize:

    School Attendance

    Health coverage when families keep children in school

    Wellness Visits

    Health coverage when families complete preventive care

    PTA Meeting Attendance

    Health coverage when parents engage with school

    Choose your support type

    Select how you'd like to support this school:

    One-Time Donation

    Make a single contribution to support the school

    Monthly Subscription

    Ongoing monthly support with impact updates

    Choose an amount:

    Choose your update type:

    $10/month

    Only Impact

    Monthly updates on community health and engagement outcomes

    $15/month

    Impact and Safety Tips

    Monthly impact updates plus safety intelligence and travel tips

    Enter your details

    Complete your donation securely

    School:
    Coverage:
    Amount:
    Initializing payment...
    `).join(''); } // School search functionality const input = document.getElementById("school-search"); const results = document.getElementById("search-results"); input.addEventListener("input", async () => { const query = input.value.trim(); if (query.length < 2) { results.innerHTML = ""; results.classList.remove("active"); return; } try { const res = await fetch( `${API_BASE_URL}?q=${encodeURIComponent(query)}&page=1&limit=10` ); const data = await res.json(); const schools = data.data || []; if (schools.length) { results.innerHTML = schools .map( (s) => `
  • ${s.name}
  • ` ) .join(""); } else { results.innerHTML = "
  • No schools found
  • "; } results.classList.add("active"); } catch { results.innerHTML = "
  • Error loading schools
  • "; results.classList.add("active"); } }); results.addEventListener("click", (e) => { const resultItem = e.target.closest(".result-item"); if (resultItem) { const schoolId = resultItem.dataset.id; const schoolName = resultItem.dataset.name; selectedSchool = { id: schoolId, name: schoolName }; input.value = schoolName; results.classList.remove("active"); document.getElementById("selected-school").style.display = "block"; document.getElementById("selected-school-name").textContent = schoolName; updateNavigation(); } }); document.addEventListener("click", (e) => { if (!e.target.closest(".search-input-wrapper") && !e.target.closest(".search-results")) { results.classList.remove("active"); } }); // Support type selection document.addEventListener('click', function(e) { if (e.target.closest('.support-type')) { document.querySelectorAll('.support-type').forEach(opt => opt.classList.remove('selected')); const option = e.target.closest('.support-type'); option.classList.add('selected'); supportType = option.dataset.type; // Toggle amount sections const onetimeSection = document.getElementById('onetime-amounts'); const subscriptionSection = document.getElementById('subscription-options'); if (supportType === 'onetime') { onetimeSection.style.display = 'block'; subscriptionSection.style.display = 'none'; } else { onetimeSection.style.display = 'none'; subscriptionSection.style.display = 'block'; } updateNavigation(); } }); // Amount selection document.addEventListener('click', function(e) { if (e.target.closest('.amount-option')) { document.querySelectorAll('.amount-option').forEach(opt => opt.classList.remove('selected')); document.getElementById('custom-amount').value = ''; const option = e.target.closest('.amount-option'); option.classList.add('selected'); selectedAmount = parseInt(option.dataset.amount); customAmount = null; updateNavigation(); } }); // Custom amount input document.getElementById('custom-amount').addEventListener('input', function() { const value = parseFloat(this.value); if (value && value > 0) { document.querySelectorAll('.amount-option').forEach(opt => opt.classList.remove('selected')); customAmount = value; selectedAmount = null; } else { customAmount = null; } updateNavigation(); }); // Coverage option selection document.addEventListener('click', function(e) { if (e.target.closest('.coverage-option')) { document.querySelectorAll('.coverage-option').forEach(opt => opt.classList.remove('selected')); const option = e.target.closest('.coverage-option'); option.classList.add('selected'); selectedCoverage = option.dataset.coverage; updateNavigation(); } }); // Update type selection (for subscriptions) document.addEventListener('click', function(e) { if (e.target.closest('.update-type')) { document.querySelectorAll('.update-type').forEach(opt => opt.classList.remove('selected')); const option = e.target.closest('.update-type'); option.classList.add('selected'); selectedUpdate = option.dataset.update; updateNavigation(); } }); // Step navigation function nextStep() { if (currentStep < 4) { currentStep++; updateStepDisplay(); if (currentStep === 4) { updatePaymentSummary(); addPaymentButton(); } updateNavigation(); } } function prevStep() { if (currentStep > 1) { currentStep--; updateStepDisplay(); } } function updateStepDisplay() { // Update progress dots for (let i = 1; i <= 4; i++) { const dot = document.getElementById(`dot${i}`); dot.classList.remove('active', 'completed'); if (i < currentStep) { dot.classList.add('completed'); } else if (i === currentStep) { dot.classList.add('active'); } } // Update step visibility for (let i = 1; i <= 4; i++) { const step = document.getElementById(`step${i}`); step.classList.toggle('active', i === currentStep); } updateNavigation(); } function updateNavigation() { const backBtn = document.getElementById('back-btn'); const nextBtn = document.getElementById('next-btn'); backBtn.style.display = currentStep > 1 ? 'block' : 'none'; if (currentStep === 4) { nextBtn.style.display = 'none'; } else { nextBtn.style.display = 'block'; nextBtn.disabled = !canProceed(); if (currentStep === 3) { nextBtn.textContent = 'Start Supporting'; } else { nextBtn.textContent = 'Continue'; } } } function canProceed() { switch (currentStep) { case 1: return selectedSchool !== null; case 2: return selectedCoverage !== null; case 3: return supportType === 'onetime' ? (selectedAmount || customAmount) : true; case 4: return document.getElementById('user-email').value.includes('@'); default: return false; } } // Update payment summary function updatePaymentSummary() { document.getElementById('summary-school').textContent = selectedSchool.name; document.getElementById('summary-coverage').textContent = getCoverageLabel(selectedCoverage); const amount = getSelectedAmount(); const amountText = supportType === 'onetime' ? `${amount}` : `${amount}/month`; document.getElementById('summary-amount').textContent = amountText; const paymentTypeText = supportType === 'onetime' ? 'donation' : 'subscription'; document.getElementById('payment-type-text').textContent = paymentTypeText; } function getCoverageLabel(coverage) { const labels = { 'attendance': 'School Attendance', 'wellness': 'Wellness Visits', 'pta': 'PTA Meeting Attendance' }; return labels[coverage] || coverage; } function getSelectedAmount() { if (supportType === 'onetime') { return customAmount || selectedAmount; } else { return selectedUpdate === 'impact' ? 10 : 15; } } // Initialize payment async function initializePayment() { const email = document.getElementById('user-email').value; if (!email || !email.includes('@')) { alert('Please enter a valid email address'); return; } const loading = document.getElementById('checkout-loading'); loading.style.display = 'flex'; try { const amount = getSelectedAmount(); const response = await fetch(`${PAYMENT_API_URL}/initialize`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ target_school_id: parseInt(selectedSchool.id), amount: amount, currency: "USD", email: email, payment_method: "card", payment_provider: "stripe", callback_url: window.location.origin + "/payment/success", support_type: supportType, coverage_type: selectedCoverage, update_type: supportType === 'subscription' ? selectedUpdate : null }) }); const data = await response.json(); if (data.data && data.data.authorization_url) { // Redirect to Stripe checkout window.location.href = data.data.authorization_url; } else { throw new Error('No authorization URL received'); } } catch (error) { loading.style.display = 'none'; document.getElementById('checkout').innerHTML = '
    Error initializing payment. Please try again.
    '; console.error('Payment initialization error:', error); } } // Add payment button to step 4 function addPaymentButton() { const checkoutDiv = document.getElementById('checkout'); checkoutDiv.innerHTML = ` `; } // Initialize updateStepDisplay();

    When funding stops, Africa's health shouldn't.​

    For School Leaders & Administrators​

    Get Health Funding. Boost Student Attendance.

    Transform your students’ health & academic impact. Parents earn coverage through attendance, wellness visits, and PTA participation. It’s 100% free.

    For African,Diaspora & Friends

    Advance Health Dignity. Build Lasting Impact.

    For $60/year, fund health coverage at your former school (or a loved one’s). Track impact and join exclusive trips to see dignified health delivery in African communities.

    For Research & Compliance Partners

    Save Money. Get Quality Data. Meet Compliance.

    Skip expensive field trips. Access verified participants right here. We handle retention, translation, video capture and reporting while your savings fund community health.

    Real Stories. Real Impact. Proven science.

    parental participation 
(vs. 40% typical rates)
    0 %
    participation-based revenue unlocked
    $ 0 K
    of health coverage funded through participation revenue
    0 %
    Improved student attendance
    0 %
    As a headmistress, my biggest worry was attendance—kids got sick and missed school because they couldn’t afford care.
    With Rumal, every child has health coverage, and attendance has risen from 64% to 98%.
    Our students? Healthier and more confident!

    Janet Anafo, Head Mistress, Tarkwa Breman Girls School

    Let's defeat Africa's health dependency.

    Africa’s health and destiny shouldn’t depend on foreign aid. Let’s build a future where every community earns their own health funding, starting with schools.

    Unstoppable health

    Connecting alumni to fund health insurance for current students worldwide.

    Quick Links

    About Us

    Support

    Copyright © 2025 unstoppablehealth. All Rights Reserved

    ×

    Search & Fund Your School's Health Coverage

    Every contribution supports affordable health for students.

    Search Results

    `).join(""); } else { searchResultsContainer.innerHTML = `
    🔍

    No schools found

    Try different search terms
    `; } showSearchResults(); } catch (error) { searchResultsContainer.innerHTML = `

    ❌ Error loading results

    Please try again
    `; showSearchResults(); } } const debouncedCountrySearch = debounce((query) => performSearch(query, 'country', countryResults), 300); const debouncedCitySearch = debounce((query) => performSearch(query, 'city', cityResults), 300); const debouncedSchoolSearch = debounce((query) => performSearch(query, 'school', schoolResults), 300); countryInput.addEventListener("input", (e) => { const query = e.target.value.trim(); selectedCountry = ""; hideSearchResults(); debouncedCountrySearch(query); }); cityInput.addEventListener("input", (e) => { const query = e.target.value.trim(); selectedCity = ""; hideSearchResults(); debouncedCitySearch(query); }); schoolInput.addEventListener("input", (e) => { const query = e.target.value.trim(); hideSearchResults(); debouncedSchoolSearch(query); }); countryResults.addEventListener("click", (e) => { if (e.target.matches(".result-item")) { const value = e.target.dataset.value; countryInput.value = value; selectedCountry = value; countryResults.innerHTML = ""; cityInput.value = ""; selectedCity = ""; schoolInput.value = ""; } }); cityResults.addEventListener("click", (e) => { if (e.target.matches(".result-item")) { const value = e.target.dataset.value; cityInput.value = value; selectedCity = value; cityResults.innerHTML = ""; schoolInput.value = ""; } }); schoolResults.addEventListener("click", (e) => { if (e.target.matches(".result-item")) { const id = e.target.dataset.id; if (id) { closeModal(); window.location.href = `${FRONTEND_BASE_URL}/${id}`; } } }); // Search results click handler searchResultsContainer.addEventListener("click", (e) => { const selectBtn = e.target.closest(".select-btn"); const resultItem = e.target.closest(".search-result-item"); if (selectBtn || resultItem) { const id = (selectBtn || resultItem).dataset.id; if (id) { closeModal(); window.location.href = `${FRONTEND_BASE_URL}/${id}`; } } }); // Focus management countryInput.addEventListener("focus", () => { cityResults.innerHTML = ""; schoolResults.innerHTML = ""; if (countryInput.value.length >= 2) { debouncedCountrySearch(countryInput.value); } }); cityInput.addEventListener("focus", () => { countryResults.innerHTML = ""; schoolResults.innerHTML = ""; if (cityInput.value.length >= 2) { debouncedCitySearch(cityInput.value); } }); schoolInput.addEventListener("focus", () => { countryResults.innerHTML = ""; cityResults.innerHTML = ""; if (schoolInput.value.length >= 2) { debouncedSchoolSearch(schoolInput.value); } }); document.addEventListener("keydown", (e) => { if (e.key === "Enter" && modal.classList.contains("visible")) { e.preventDefault(); performFullSearch(); } if (e.key === "Escape") { if (searchResultsDropdown.classList.contains("visible")) { hideSearchResults(); } else if (modal.classList.contains("visible")) { closeModal(); } } });