Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
8180ebf
Add PyCon Cameroon 2026 countdown banner
Edmond22-prog Aug 14, 2026
d672c7c
Fix invalid comma syntax in HSL CSS variables
Edmond22-prog Aug 14, 2026
770ab5e
Fix B2: convert --primary-rgb/--secondary-rgb from HSL to RGB
Edmond22-prog Aug 14, 2026
fadc55b
Fix B3: hide fake newsletter form, fix dead Hero CTAs
Edmond22-prog Aug 14, 2026
d840b8f
Fix B5: remove dead links (Youtube, Community) and wire Sponsors CTA
Edmond22-prog Aug 14, 2026
5a417e2
Fix B4: remove non-functional FR/EN language switcher button
Edmond22-prog Aug 14, 2026
b990595
Add YouTube link back to footer
Edmond22-prog Aug 14, 2026
a8b3d53
Fix B6: remove invalid <a> nested in <button> in Applications CTA
Edmond22-prog Aug 14, 2026
9d30742
Fix B7: scroll listener cleanup, effective useTheme guard, redundant …
Edmond22-prog Aug 14, 2026
36b11bb
Fix P1-P6: performances (LazyMotion, animations infinies, images, fonts)
Edmond22-prog Aug 14, 2026
2c3aedb
Fix A1-A5: accessibilite (contenu hover, FAQ Radix, burger, titres, c…
Edmond22-prog Aug 14, 2026
58825b0
Fix A1 (suite): halos des cartes Applications sortis de la Card - pie…
Edmond22-prog Aug 14, 2026
38ae173
Fix S1-S2: SEO - canonical pythoncameroon.org, meta OG/Twitter absolu…
Edmond22-prog Aug 14, 2026
35b86a1
Fix Q1-Q5: qualite de code / architecture
Edmond22-prog Aug 15, 2026
4d49c73
Hero: titre "Python is Fun!" en revelation par ligne au lieu du lettr…
Edmond22-prog Aug 15, 2026
e728b34
Liens CTA: "Contact us" (FAQ) pointe sur mailto organizers@ au lieu d…
Edmond22-prog Aug 15, 2026
476b415
Nouveau logo (motif africain): navbar en icone 40px + texte, favicons…
Edmond22-prog Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,18 @@ module.exports = {
{ allowConstantExport: true },
],
},
overrides: [
{
// Composants shadcn vendorés (exportent aussi leurs variants cva) et
// paires provider+hook : la règle ne concerne que la granularité du HMR.
files: [
'src/components/ui/**/*.tsx',
'src/providers/theme-provider.tsx',
'src/components/language.tsx',
],
rules: {
'react-refresh/only-export-components': 'off',
},
},
],
}
189 changes: 189 additions & 0 deletions AUDIT.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion components.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "src/app.css",
"css": "src/index.css",
"baseColor": "slate",
"cssVariables": true
},
Expand Down
9 changes: 9 additions & 0 deletions firebase.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@
}
]
},
{
"source": "/{og-image.png,favicon-96x96.png,favicon.ico,apple-touch-icon.png,web-app-manifest-192x192.png,web-app-manifest-512x512.png,site.webmanifest,robots.txt,sitemap.xml}",
"headers": [
{
"key": "Cache-Control",
"value": "max-age=3600"
}
]
},
{
"source": "index.html",
"headers": [
Expand Down
57 changes: 40 additions & 17 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,62 @@

<head>
<meta charset="UTF-8" />
<!-- Favicons -->
<link rel="icon" type="image/png" href="./src/assets/favicon/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./src/assets/favicon/favicon.svg" />
<link rel="shortcut icon" href="./src/assets/favicon/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./src/assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="./src/assets/favicon/site.webmanifest" />

<!-- href="/vite.svg" -->
<!-- Favicons (servis depuis public/, chemins stables à la racine) -->
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<!-- favicon.svg retiré : 428 kB de PNG base64 déguisé en SVG (AUDIT.md P3) -->
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#04906D" />

<!-- Primary Meta Tags -->
<title>Python Cameroon</title>
<meta name="title" content="Python Cameroon" />
<meta name="description" content="Welcome to the Python Cameroon Community - a vibrant and supportive space for individuals passionate about Python programming." />
<link rel="canonical" href="https://pythoncameroon.org/" />

<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://github.com/pythoncameroon/landing-web" />
<meta property="og:url" content="https://pythoncameroon.org/" />
<meta property="og:site_name" content="Python Cameroon" />
<meta property="og:title" content="Python Cameroon" />
<meta property="og:description" content="Welcome to the Python Cameroon Community - a vibrant and supportive space for individuals passionate about Python programming." />
<meta property="og:image" content="./src/assets/opengraph/og-image.png" />
<!-- URL absolue requise par les crawlers (FB/LinkedIn/X) -->
<meta property="og:image" content="https://pythoncameroon.org/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Python Cameroon community logo" />

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />

<meta name="twitter:url" content="https://github.com/pythoncameroon/landing-web" />
<meta name="twitter:url" content="https://pythoncameroon.org/" />
<meta name="twitter:title" content="Python Cameroon" />
<meta name="twitter:description" content="Welcome to the Python Cameroon Community - a vibrant and supportive space for individuals passionate about Python programming." />
<meta name="twitter:image" content="./src/assets/opengraph/og-image.png" />
<meta name="twitter:image" content="https://pythoncameroon.org/og-image.png" />

<!-- Données structurées -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Python Cameroon",
"url": "https://pythoncameroon.org/",
"logo": "https://pythoncameroon.org/web-app-manifest-512x512.png",
"email": "organizers@pythoncameroon.org",
"description": "A vibrant and supportive community for individuals passionate about Python programming in Cameroon.",
"sameAs": [
"https://github.com/pythoncameroon",
"https://x.com/pythoncameroon",
"https://linkedin.com/company/PythonCameroon",
"https://www.youtube.com/@PythonCameroon",
"https://discord.gg/TWVCKCe3Dt"
]
}
</script>

<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DotGothic16&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
<!-- Fonts : auto-hébergées via @fontsource, importées dans src/main.tsx (AUDIT.md P6) -->
</head>

<body>
Expand Down
Loading
Loading