CINXE.COM
DjangoCon Africa 2025
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DjangoCon Africa 2025</title> <script async src="https://uza.co.tz/api/downloads/js/embeddable.js"></script> <script src="https://unpkg.com/htmx.org@1.9.11" integrity="sha384-0gxUXCCR8yv9FM2b+U3FDbsKthCI66oH5IA9fHppQq9DDMHuMauqq1ZHBpJxQ0J0" crossorigin="anonymous"></script> <script src="//unpkg.com/alpinejs" defer></script> <link rel="stylesheet" type="text/css" href="/static/src/tailwind_final.ab1576d712ac.css"> <script src="/static/src/font_awesome_5.cee44411aa62.js" crossorigin="anonymous"></script> <link href="/static/images/icon.cb246bedd5b7.png" rel="shortcut icon"> </head> <body hx-headers='{"X-CSRFToken": "e4N5YgsI0sKilG4Q3KRwrW3E5SPwnLJwdrgEmZDElBScqGGs1P9UqXAjydUG9C9x"}'> <header class="w-full bg-white text-black sticky top-0 z-50 border-b"> <div class="dj-container flex h-16 items-center justify-between"> <a href="/"> <img src="/static/images/logo-black.5fcfcffbbe8b.svg" alt="logo" class="w-[150px]" /> </a> <nav class="hidden lg:flex items-center gap-x-5"> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Conference</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/coc" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Code of Conduct </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Resources</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/news" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> News </a> <a href="/opportunity_grants" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Opportunity Grants </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Speaking</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/speaking" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Speaking at Djangocon Africa </a> <a href="/speaker_resources" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Speaker Resources </a> <a href="https://pretalx.com/djangocon-africa-2025/cfp" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Call for Proposals </a> </div> </div> </div> </div> <div class="relative group"> <div x-data="{ open: false }" class="relative inline-block"> <div class="py-3 flex items-center hover:border-b-2 hover:border-deepTeal "> <button @click="open = !open" @click.outside="open = false" class="flex items-center gap-x-1 py-2 "> <span class="text-base">Sponsors</span> <i class="fas fa-chevron-down transition-transform opacity-30 duration-200" :class="{ 'rotate-180': open }"></i> </button> </div> <div x-show="open" class="absolute left-0 mt-1 w-fit rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 bg-white" style="display: none;"> <div class="py-1" role="menu"> <a href="/sponsor_us" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Become a Sponsor </a> <a href="/sponsors/" class="block px-4 py-3 text-nowrap text-black hover:bg-gray-100"> Our Sponsors </a> </div> </div> </div> </div> </nav> <div class="flex items-center gap-x-2"> <div class="relative" x-data="{ open: false }"> <button @click="open = !open" @click.outside="open = false" class="flex items-center justify-center size-10 rounded-full text-black hover:text-gray-700 border-black/10 border transition-colors" > <span>🇬🇧</span> </button> <div x-show="open" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="transform opacity-0 scale-95" x-transition:enter-end="transform opacity-100 scale-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 mt-2 py-2 w-48 bg-gray-50 border border-gray-200 rounded-md shadow-xl z-50" style="display: none" > <div class="py-1" role="menu" aria-orientation="vertical"> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="e4N5YgsI0sKilG4Q3KRwrW3E5SPwnLJwdrgEmZDElBScqGGs1P9UqXAjydUG9C9x"> <input type="hidden" name="next" value="/en/news/" /> <button type="submit" name="language" value="en" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'en' }" role="menuitem" > English <i class="fas fa-check opacity-30"></i> </button> </form> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="e4N5YgsI0sKilG4Q3KRwrW3E5SPwnLJwdrgEmZDElBScqGGs1P9UqXAjydUG9C9x"> <input type="hidden" name="next" value="/en/news/" /> <button type="submit" name="language" value="fr" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'fr' }" role="menuitem" > French </button> </form> </div> </div> </div> <a href="/en/tickets" class="hidden lg:block border h-10 px-4 py-2 rounded-full text-black hover:text-gray-700 border-black/10"> Tickets </a> <button x-data @click="$dispatch('toggle-mobile-menu')" class="lg:hidden flex items-center justify-center size-10 rounded-full border-black/10 border transition-colors" > <i class="fas fa-bars"></i> <span class="sr-only">Toggle Menu</span> </button> </div> </div> <div x-data="{ isOpen: false }" @toggle-mobile-menu.window="isOpen = !isOpen" x-show="isOpen" class="fixed inset-0 z-50 flex flex-col bg-white text-black lg:hidden" x-effect="isOpen ? document.body.style.overflow = 'hidden' : document.body.style.overflow = 'auto'" style="display: none;"> <div class="border-b"> <div class="dj-container flex h-16 items-center justify-between"> <a href="/"> <img src="/static/images/logo-black.5fcfcffbbe8b.svg" alt="logo" class="w-[150px]" /> </a> <div class="flex items-center gap-x-2"> <div class="relative" x-data="{ open: false }"> <button @click="open = !open" @click.outside="open = false" class="flex items-center justify-center size-10 rounded-full text-black hover:text-gray-700 border-black/10 border transition-colors" > <span>🇬🇧</span> </button> <div x-show="open" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="transform opacity-0 scale-95" x-transition:enter-end="transform opacity-100 scale-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 mt-2 py-2 w-48 bg-gray-50 border border-gray-200 rounded-md shadow-xl z-50" style="display: none" > <div class="py-1" role="menu" aria-orientation="vertical"> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="e4N5YgsI0sKilG4Q3KRwrW3E5SPwnLJwdrgEmZDElBScqGGs1P9UqXAjydUG9C9x"> <input type="hidden" name="next" value="/en/news/" /> <button type="submit" name="language" value="en" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'en' }" role="menuitem" > English <i class="fas fa-check opacity-30"></i> </button> </form> <form action="/set_language/" method="post" class="inline"> <input type="hidden" name="csrfmiddlewaretoken" value="e4N5YgsI0sKilG4Q3KRwrW3E5SPwnLJwdrgEmZDElBScqGGs1P9UqXAjydUG9C9x"> <input type="hidden" name="next" value="/en/news/" /> <button type="submit" name="language" value="fr" class="w-full text-left flex justify-between px-4 py-2 text-black hover:bg-gray-100" :class="{ 'bg-gray-100': 'en' === 'fr' }" role="menuitem" > French </button> </form> </div> </div> </div> <button @click="isOpen = false" class="flex items-center justify-center size-10 rounded-full border"> <i class="fas fa-times"></i> </button> </div> </div> </div> <div class="h-[calc(100vh-64px)] overflow-y-auto"> <nav> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Conference</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/coc" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Code of Conduct </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Resources</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/news" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> News </a> <a href="/opportunity_grants" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Opportunity Grants </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Speaking</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/speaking" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Speaking at Djangocon Africa </a> <a href="/speaker_resources" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Speaker Resources </a> <a href="https://pretalx.com/djangocon-africa-2025/cfp" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Call for Proposals </a> </div> </div> <div x-data="{ dropdownOpen: false }"> <button @click="dropdownOpen = !dropdownOpen" class="flex items-center justify-between w-full py-4 px-4 sm:px-6 text-left hover:bg-gray-100"> <span class="text-4xl">Sponsors</span> <i class="fas fa-chevron-down text-black/30 transition-transform duration-200 mr-2" :class="{ 'rotate-180': dropdownOpen }"></i> </button> <div x-show="dropdownOpen" class="px-4 sm:px-6" style="display: none;"> <a href="/sponsor_us" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Become a Sponsor </a> <a href="/sponsors/" class="block py-3 border-b text-lg text-black text-opacity-80 hover:text-gray-900"> Our Sponsors </a> </div> </div> </nav> <div class="flex flex-col gap-y-4 px-4 sm:px-6 mt-6 mb-8"> <a href="/en/tickets" class="h-[50px] p-4 rounded-full bg-deepTeal text-center text-white hover:bg-deepTeal/90">Secure a spot</a> <a href="/en/sponsor_us" class="h-[50px] p-4 rounded-full bg-transparent text-center text-black border-2 border-solid border-gray-100">Sponsor us</a> </div> </div> </div> </header> <main> <div class="dj-container pt-[72px] lg:pt-[88px] pb-16"> <h1 class="text-center lg:text-left">Latest News</h1> <div class="flex flex-col lg:flex-row gap-y-4"> <div class="w-full flex-1 lg:pr-8 xl:pr-10"> <a href="/en/news/introducing-djangocon-africa-2025/"> <img alt="First DjangoCon Africa." class="w-full h-auto sm:h-[470px] object-cover rounded-2xl" height="934" src="/media/images/first-djangocon-africa.51e39596f8a3.original.png" width="1280"> <div class="flex flex-col lg:flex-row justify-between py-6"> <h3>Introducing DjangoCon Africa 🌍 2025 🎉</h3> <p class="text-zinc-800 text-base"> By Team • March 8, 2025 </p> </div> </a> <div> </div> </div> <div class="w-full lg:w-[452px]"> <div class="p-5 xl:p-8 w-full bg-deepTeal/5 lg:rounded-2xl lg:h-[470px]"> <h2 class="mb-6 text-2xl lg:text-[32px] leading-[40px] font-medium"> 5 days of inspiration, education and networking at DjangoCon Africa from 25-31 August, 2025 in Arusha, Tanzania. </h2> <div class="space-y-2"> <a href="/en/tickets" class="bg-deepTeal text-white rounded-full h-[50px] w-fit px-6 flex items-center justify-center gap-x-1 hover:bg-deepTeal/90" > Secure a spot </a> <a href="/en/speaking" class="bg-transparent text-black rounded-full h-[50px] w-fit px-6 flex items-center justify-center gap-x-1 hover:bg-white/50 border" aria-label="Apply to speak" > Apply to speak <i class="fas fa-chevron-right"></i> </a> <a href="/en/sponsor_us" class="bg-transparent text-black rounded-full h-[50px] w-fit px-6 flex items-center justify-center gap-x-1 hover:bg-white/50 border" aria-label="Sponsor us" > Sponsor us <i class="fas fa-chevron-right"></i> </a> </div> </div> </div> </div> </div> </main> <footer> <img src="/static/images/footer/desktop-footer.8463986f4c14.png" alt="footer-bg" class="w-full" /> <div class="bg-[#313114] text-white text-center pb-12"> <div class="dj-container flex flex-col items-center gap-y-6"> <img src="/static/images/footer-logo.1bc5615ce7c3.svg" alt="logo" /> <div class="flex gap-x-4"> <a target="_blank" href="https://github.com/djangocon"><img src="/static/icons/github-icon.03b355addf83.svg" alt="github icon" class="size-[44px]"/></a> <a target="_blank" href="https://mastodon.social/@djangoconafrica@fosstodon.org"><img src="/static/icons/mastodon-icon.d32d3525790d.svg" alt="mastodon icon" class="size-[44px]"/></a> <a target="_blank" href="https://bsky.app/profile/djcafrica.bsky.social"><img src="/static/icons/bluesky-icon.5d6dda2f02dc.svg" alt="bluesky icon" class="size-[44px]"/></a> <a target="_blank" href="https://x.com/djcafrica"><img src="/static/icons/x-icon.88d94c22c85c.svg" alt="x icon" class="size-[44px]"/></a> <a target="_blank" href="https://facebook.com/djcafrica"><img src="/static/icons/facebook-icon.a219cc9814f4.svg" alt="facebook icon" class="size-[44px]"/></a> <a target="_blank" href="https://linkedin.com/company/djcafrica"><img src="/static/icons/linkedin-icon.8385a22c8349.svg" alt="linkedin icon" class="size-[44px]"/></a> <a href="/cdn-cgi/l/email-protection#f29a979e9e9db29698939c959d919d9cdc9394809b9193"><img src="/static/icons/email-icon.93cf5200fcee.svg" alt="email icon" class="size-[44px]"/></a> </div> <p>Website designed by <a href="https://www.linkedin.com/in/hopeadoli" target="_blank" class="underline cursor-pointer">Hope Adoli</a> and built with <span class="text-red-800">❤</span> by <a class="underline cursor-pointer" href="/">the community</a></p> <p>Other Django Events: <a class="underline cursor-pointer" href="https://djangocon.us" target="_blank">DjangoCon US</a> • <a class="underline cursor-pointer" href="https://djangocon.eu" target="_blank">DjangoCon Europe</a> • <a class="underline cursor-pointer" href="https://djangocon.com.au" target="_blank">DjangoCon Australia</a></p> <p>Our <a class="underline cursor-pointer" href="/coc">Code of Conduct</a></p> </div> </div> </footer> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body> </html>