Join Fowlkit’s Python coding workshops designed for high school students in South Africa. Learn to code, build projects, and shape your future with the power of Python.
Fowlkit is committed to inspiring high school students across South Africa by providing engaging Python coding workshops. Our mission is to develop coding skills, creativity, and problem-solving abilities, preparing youth for future careers in technology.
Hear from students who transformed their coding skills through our workshops.
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Participating in Fowlkit's Python workshops truly boosted my confidence in coding. The hands-on projects and supportive environment helped me understand complex concepts easily. I highly recommend these workshops to all aspiring programmers.
Lina M.
High School Student, South African High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Thanks to Fowlkit, I learned Python from scratch and built my first game! The instructors were patient and inspiring, making coding fun and accessible. I now feel ready to pursue a career in software development.
Thabo K.
Aspiring Developer, South African High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Joining Fowlkit's workshops was a game-changer for me. I gained practical skills, made new friends, and discovered my passion for programming. The experience has opened many doors for my future in tech.
Aisha P.
Future Software Engineer, South African High School
Latest Blog Posts
Explore tips, tricks, and insights on learning Python and coding.