Skip to content

Commit 829b680

Browse files
fix: retire obsolete offers and project cards
1 parent ae7aee6 commit 829b680

8 files changed

Lines changed: 28 additions & 47 deletions

File tree

case-study/index.html

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,7 @@
1111
<link rel="canonical" href="https://atlasnexus.tech/case-study/">
1212
<link rel="alternate" hreflang="fr" href="https://atlasnexus.tech/case-study/">
1313
<link rel="alternate" hreflang="en" href="https://atlasnexus.tech/case-study/en/">
14-
<link rel="alternate" hreflang="x-default" href="https://atlasnexus.tech/case-study/en/">
15-
<script>
16-
(function(){
17-
try {
18-
const KEY = 'atlasnexus.lang';
19-
const params = new URLSearchParams(window.location.search);
20-
const explicit = params.get('lang');
21-
if (explicit === 'fr' || explicit === 'en') localStorage.setItem(KEY, explicit);
22-
const saved = localStorage.getItem(KEY);
23-
if (saved === 'fr') return;
24-
if (saved === 'en') { window.location.replace('/case-study/en/'); return; }
25-
const langs = (navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language || '']).map(x => String(x).toLowerCase());
26-
const isFrancophone = langs.some(x => x === 'fr' || x.startsWith('fr-'));
27-
if (!isFrancophone) window.location.replace('/case-study/en/');
28-
} catch(e) {}
29-
})();
30-
</script>
14+
<link rel="alternate" hreflang="x-default" href="https://atlasnexus.tech/case-study/">
3115
<link rel="stylesheet" href="/css/site.css?v=4">
3216
<link rel="preconnect" href="https://fonts.googleapis.com">
3317
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

en/index.html

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,8 @@ <h2 class="section-title text-foreground mb-5 font-display">Mini case studies</h
271271
</div>
272272
<div class="mt-8 grid md:grid-cols-3 gap-3">
273273
<a href="/demos-web/en/" class="reveal reveal-delay-1 card-hover bg-white rounded-xl p-5 border border-border hover:border-primary transition-colors"><p class="font-bold text-foreground">Web redesign demos</p><p class="text-slate-500 text-sm">Artisan, restaurant, health, consultant · contact-focused pages</p></a>
274-
<a href="https://github.com/AtlasNexusTech/birdeye-sprint4" class="reveal reveal-delay-1 card-hover bg-white rounded-xl p-5 border border-border"><p class="font-bold text-foreground">Birdeye Sprint 4 + Hawkeye V4</p><p class="text-slate-500 text-sm">Crypto pipeline · market pressure</p></a>
275274

276-
<a href="/oobe-ace-agent-en/" class="reveal reveal-delay-2 card-hover bg-white dark:bg-dark-card rounded-xl p-5 border border-border flex items-start gap-2.5"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 398 312" fill="none"><path d="M64.6 237.9c2.4-2.4 5.7-3.8 9.2-3.8h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1l62.7-62.7z" fill="url(#sol-grad-top)"/><path d="M64.6 3.8C67.1 1.4 70.4 0 73.8 0h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1L64.6 3.8z" fill="url(#sol-grad-mid)"/><path d="M333.1 120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8 0-8.7 7-4.6 11.1l62.7 62.7c2.4 2.4 5.7 3.8 9.2 3.8h317.4c5.8 0 8.7-7 4.6-11.1l-62.7-62.7z" fill="url(#sol-grad-bot)"/></svg><div><p class="font-bold text-foreground dark:text-dark-foreground">Nexus Scout SAP</p><p class="text-slate-500 dark:text-slate-400 text-sm">Agent SAP mainnet · 3 x402 tools</p></div></a>
277275
<a href="/case-study/en/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border hover:border-primary transition-colors flex items-start gap-2.5"><div class="flex -space-x-1 shrink-0 mt-0.5"><div class="w-3 h-3 rounded-full bg-[#FCFF52] ring-1 ring-white dark:ring-dark-card"></div><div class="w-3 h-3 rounded-full bg-gradient-to-br from-[#00FFA3] to-[#DC1FFF] ring-1 ring-white dark:ring-dark-card"></div></div><div><p class="font-bold text-foreground">AI2Work — Bounty Marketplace</p><p class="text-slate-500 text-sm">On-chain · Celo Mainnet · 83 tests</p></div></a>
278-
<a href="https://atlasnexusops.github.io/solana-pulse/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border flex items-start gap-2.5"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 398 312" fill="none"><path d="M64.6 237.9c2.4-2.4 5.7-3.8 9.2-3.8h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1l62.7-62.7z" fill="url(#sol-grad-top)"/><path d="M64.6 3.8C67.1 1.4 70.4 0 73.8 0h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1L64.6 3.8z" fill="url(#sol-grad-mid)"/><path d="M333.1 120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8 0-8.7 7-4.6 11.1l62.7 62.7c2.4 2.4 5.7 3.8 9.2 3.8h317.4c5.8 0 8.7-7 4.6-11.1l-62.7-62.7z" fill="url(#sol-grad-bot)"/></svg><div><p class="font-bold text-foreground">Solana Market Pulse</p><p class="text-slate-500 text-sm">SPL tokens · automated scoring</p></div></a>
279276
<a href="/framer-motion-ui/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border flex items-start gap-2.5" style="border-color: rgba(124,58,237,.28)!important; box-shadow: 0 14px 28px -22px rgba(124,58,237,.3);"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 24 24" fill="none"><rect x="2" y="2" width="20" height="20" rx="4" stroke="url(#ui-purple)" stroke-width="2"/><circle cx="8.5" cy="8.5" r="1.5" fill="#C084FC"/><circle cx="15.5" cy="8.5" r="1.5" fill="#C084FC"/><circle cx="12" cy="15" r="1.5" fill="#C084FC"/><path d="M4 18l4-4 3 3 4-4 5 5" stroke="#A78BFA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><defs><linearGradient id="ui-purple" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#7C3AED"/><stop offset="1" stop-color="#A78BFA"/></linearGradient></defs></svg><div><p class="font-bold text-foreground">UI Design System</p><p class="text-slate-500 text-sm">Multi-LLM skill · 5 modules · audit/UX/motion/prototyping/validation</p></div></a>
280277
</div>
281278
</div>

extracteur-donnees-publiques/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<meta name="robots" content="noindex,follow">
67
<meta name="description" content="Périmètre de validation non engageant pour extraire une source web publique et autorisée vers CSV et JSON, sans compte, CAPTCHA ni données sensibles.">
78
<link rel="canonical" href="https://atlasnexus.tech/extracteur-donnees-publiques/">
89
<link rel="icon" href="/favicon.png" type="image/png">

index.html

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -237,26 +237,6 @@ <h3 class="text-2xl font-bold text-foreground mb-4 font-display">Pages React ·
237237
<div class="flex flex-col gap-2"><a href="/demos-web/" class="inline-flex framer-accent font-semibold hover:text-purple-700">Voir les démos web →</a><a href="#contact" class="inline-flex text-slate-500 text-sm font-semibold hover:text-primary">Demander ce build</a></div>
238238
</article>
239239
</div>
240-
<aside class="reveal mt-8 rounded-2xl border border-border bg-white p-6 sm:p-8" aria-labelledby="quarterly-review-title">
241-
<p class="text-accent font-semibold tracking-widest uppercase text-xs mb-3">Validation de besoin en cours</p>
242-
<div class="grid gap-5 md:grid-cols-3 md:items-center">
243-
<div class="md:col-span-2">
244-
<h3 id="quarterly-review-title" class="text-2xl font-bold text-foreground mb-3 font-display">Revue trimestrielle PowerPoint à partir de chiffres finalisés</h3>
245-
<p class="text-slate-600 leading-relaxed max-w-3xl">Périmètre test : 8 diapositives, jusqu’à 6 graphiques, fichiers PPTX et PDF. Manifestation d’intérêt non engageante uniquement : aucune commande, aucun paiement, aucun devis et aucun fichier confidentiel demandé à ce stade.</p>
246-
</div>
247-
<a href="/revue-trimestrielle-powerpoint/" class="inline-flex justify-center rounded-full bg-primary px-6 py-3 font-bold text-white hover:bg-primary-dark transition-colors">Voir le périmètre →</a>
248-
</div>
249-
</aside>
250-
<aside class="reveal mt-6 rounded-2xl border border-border bg-white p-6 sm:p-8" aria-labelledby="public-data-extractor-title">
251-
<p class="text-accent font-semibold tracking-widest uppercase text-xs mb-3">Qualification avant code</p>
252-
<div class="grid gap-5 md:grid-cols-3 md:items-center">
253-
<div class="md:col-span-2">
254-
<h3 id="public-data-extractor-title" class="text-2xl font-bold text-foreground mb-3 font-display">Extraction bornée depuis une source web publique</h3>
255-
<p class="text-slate-600 leading-relaxed max-w-3xl">Périmètre test : <strong>une source publique, 10 pages et jusqu’à 8 champs</strong>, avec sorties CSV et JSON. La qualification refuse comptes, CAPTCHA, données sensibles et contournements. Intérêt non engageant uniquement : aucune commande, aucun paiement, aucun devis, aucun NDA et aucun fichier confidentiel demandé.</p>
256-
</div>
257-
<a href="/extracteur-donnees-publiques/" class="inline-flex justify-center rounded-full bg-primary px-6 py-3 font-bold text-white hover:bg-primary-dark transition-colors">Voir le périmètre →</a>
258-
</div>
259-
</aside>
260240
</div>
261241
</section>
262242

@@ -291,11 +271,8 @@ <h2 class="section-title text-foreground mb-5 font-display">Mini études de cas<
291271
</div>
292272
<div class="mt-8 grid md:grid-cols-3 gap-3">
293273
<a href="/demos-web/" class="reveal reveal-delay-1 card-hover bg-white rounded-xl p-5 border border-border hover:border-primary transition-colors"><p class="font-bold text-foreground">Démos refonte web</p><p class="text-slate-500 text-sm">Artisan, restaurant, santé, consultant · pages orientées contact</p></a>
294-
<a href="https://github.com/AtlasNexusTech/birdeye-sprint4" class="reveal reveal-delay-1 card-hover bg-white rounded-xl p-5 border border-border"><p class="font-bold text-foreground">Birdeye Sprint 4 + Hawkeye V4</p><p class="text-slate-500 text-sm">Pipeline crypto · pression marché</p></a>
295274

296-
<a href="/oobe-ace-agent/" class="reveal reveal-delay-2 card-hover bg-white dark:bg-dark-card rounded-xl p-5 border border-border flex items-start gap-2.5"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 398 312" fill="none"><path d="M64.6 237.9c2.4-2.4 5.7-3.8 9.2-3.8h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1l62.7-62.7z" fill="url(#sol-grad-top)"/><path d="M64.6 3.8C67.1 1.4 70.4 0 73.8 0h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1L64.6 3.8z" fill="url(#sol-grad-mid)"/><path d="M333.1 120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8 0-8.7 7-4.6 11.1l62.7 62.7c2.4 2.4 5.7 3.8 9.2 3.8h317.4c5.8 0 8.7-7 4.6-11.1l-62.7-62.7z" fill="url(#sol-grad-bot)"/></svg><div><p class="font-bold text-foreground dark:text-dark-foreground">Nexus Scout SAP</p><p class="text-slate-500 dark:text-slate-400 text-sm">Agent SAP mainnet · 3 tools x402</p></div></a>
297275
<a href="/case-study/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border hover:border-primary transition-colors flex items-start gap-2.5"><div class="flex -space-x-1 shrink-0 mt-0.5"><div class="w-3 h-3 rounded-full bg-[#FCFF52] ring-1 ring-white dark:ring-dark-card"></div><div class="w-3 h-3 rounded-full bg-gradient-to-br from-[#00FFA3] to-[#DC1FFF] ring-1 ring-white dark:ring-dark-card"></div></div><div><p class="font-bold text-foreground">AI2Work — Bounty Marketplace</p><p class="text-slate-500 text-sm">On-chain · Celo · Smart contracts · Case study</p></div></a>
298-
<a href="https://atlasnexusops.github.io/solana-pulse/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border flex items-start gap-2.5"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 398 312" fill="none"><path d="M64.6 237.9c2.4-2.4 5.7-3.8 9.2-3.8h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1l62.7-62.7z" fill="url(#sol-grad-top)"/><path d="M64.6 3.8C67.1 1.4 70.4 0 73.8 0h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1L64.6 3.8z" fill="url(#sol-grad-mid)"/><path d="M333.1 120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8 0-8.7 7-4.6 11.1l62.7 62.7c2.4 2.4 5.7 3.8 9.2 3.8h317.4c5.8 0 8.7-7 4.6-11.1l-62.7-62.7z" fill="url(#sol-grad-bot)"/></svg><div><p class="font-bold text-foreground">Solana Market Pulse</p><p class="text-slate-500 text-sm">SPL tokens · scoring automatisé</p></div></a>
299276
<a href="/framer-motion-ui/" class="reveal reveal-delay-3 card-hover bg-white rounded-xl p-5 border border-border flex items-start gap-2.5" style="border-color: rgba(124,58,237,.28)!important; box-shadow: 0 14px 28px -22px rgba(124,58,237,.3);"><svg class="w-4 h-4 shrink-0 mt-1" viewBox="0 0 24 24" fill="none"><rect x="2" y="2" width="20" height="20" rx="4" stroke="url(#ui-purple)" stroke-width="2"/><circle cx="8.5" cy="8.5" r="1.5" fill="#C084FC"/><circle cx="15.5" cy="8.5" r="1.5" fill="#C084FC"/><circle cx="12" cy="15" r="1.5" fill="#C084FC"/><path d="M4 18l4-4 3 3 4-4 5 5" stroke="#A78BFA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><defs><linearGradient id="ui-purple" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#7C3AED"/><stop offset="1" stop-color="#A78BFA"/></linearGradient></defs></svg><div><p class="font-bold text-foreground">UI Design System</p><p class="text-slate-500 text-sm">Skill multi-LLM · 5 modules · audit/UX/motion/prototypage/validation</p></div></a>
300277
</div>
301278
</div>

mentions-legales/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ <h2 class="text-xl font-bold text-foreground dark:text-dark-foreground mb-3">1.
6262
Le site <strong>atlasnexus.tech</strong> est édité par :
6363
</p>
6464
<ul class="text-slate-600 dark:text-slate-300 space-y-1 list-disc list-inside">
65-
<li><strong>Alexandre Lasly</strong>, entrepreneur individuel</li>
65+
<li><strong>Alexandre Lasly</strong>, éditeur du site</li>
6666
<li>Email : <a href="mailto:laslyalexandre@gmail.com" class="text-primary dark:text-blue-400 hover:underline">laslyalexandre@gmail.com</a></li>
6767
<li>Email professionnel : <a href="mailto:atlasnexus.ops@proton.me" class="text-primary dark:text-blue-400 hover:underline">atlasnexus.ops@proton.me</a></li>
6868
<li>Téléphone : <a href="tel:+33750504595" class="text-primary dark:text-blue-400 hover:underline">+33 7 50 50 45 95</a></li>

revue-trimestrielle-powerpoint/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<meta name="robots" content="noindex,follow">
67
<meta name="description" content="Transformez des chiffres trimestriels finalisés en une présentation PowerPoint claire, éditable et prête pour une réunion de direction.">
78
<link rel="canonical" href="https://atlasnexus.tech/revue-trimestrielle-powerpoint/">
89
<link rel="icon" href="/favicon.png" type="image/png">

sitemap.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<url><loc>https://atlasnexus.tech/developpement-web-donnees/</loc><changefreq>weekly</changefreq><priority>0.9</priority></url>
1313
<url><loc>https://atlasnexus.tech/audit-responsive-pagespeed/</loc><changefreq>monthly</changefreq><priority>0.8</priority></url>
1414
<url><loc>https://atlasnexus.tech/audit-responsive-pagespeed/en/</loc><changefreq>monthly</changefreq><priority>0.8</priority></url>
15-
<url><loc>https://atlasnexus.tech/revue-trimestrielle-powerpoint/</loc><changefreq>monthly</changefreq><priority>0.7</priority></url>
15+
1616

1717
<!-- Cases and products -->
1818
<url><loc>https://atlasnexus.tech/case-study/</loc><changefreq>monthly</changefreq><priority>0.8</priority></url>

tests/test_audit_corrections.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
ROOT = Path(__file__).resolve().parents[1]
55
FR = (ROOT / "index.html").read_text(encoding="utf-8")
66
EN = (ROOT / "en" / "index.html").read_text(encoding="utf-8")
7+
CASE_STUDY = (ROOT / "case-study" / "index.html").read_text(encoding="utf-8")
78
LEGAL = (ROOT / "mentions-legales" / "index.html").read_text(encoding="utf-8")
89
SITEMAP = (ROOT / "sitemap.xml").read_text(encoding="utf-8")
10+
QUARTERLY = (ROOT / "revue-trimestrielle-powerpoint" / "index.html").read_text(encoding="utf-8")
11+
EXTRACTOR = (ROOT / "extracteur-donnees-publiques" / "index.html").read_text(encoding="utf-8")
912

1013

1114
def test_language_choice_never_redirects_automatically():
12-
for html in (FR, EN):
15+
for html in (FR, EN, CASE_STUDY):
1316
assert "navigator.language" not in html
1417
assert "navigator.languages" not in html
15-
assert "window.location.replace" not in html
18+
assert "location.replace" not in html
1619

1720

1821
def test_french_and_english_homepage_prices_are_synchronized():
@@ -36,6 +39,8 @@ def test_legal_notice_names_actual_processors_and_purposes():
3639
assert "Aucun service d'analyse d'audience" not in LEGAL
3740
assert "+33 7 50 50 45 95" in LEGAL
3841
assert "adresse email, téléphone et contenu" not in LEGAL
42+
assert "entrepreneur individuel" not in LEGAL
43+
assert "éditeur du site" in LEGAL
3944

4045

4146
def test_sitemap_prioritizes_offers_and_cases_not_raw_demos():
@@ -54,6 +59,22 @@ def test_ai2work_copy_distinguishes_live_network_from_roadmap():
5459
assert "ai2work.onrender.com" not in FR + EN
5560

5661

62+
def test_obsolete_offers_and_projects_are_not_promoted_or_indexed():
63+
obsolete_home_copy = (
64+
"Revue trimestrielle PowerPoint",
65+
"Extraction bornée depuis une source web publique",
66+
"Birdeye Sprint 4",
67+
"Nexus Scout SAP",
68+
"Solana Market Pulse",
69+
)
70+
for label in obsolete_home_copy:
71+
assert label not in FR
72+
assert label not in EN
73+
assert "revue-trimestrielle-powerpoint" not in SITEMAP
74+
assert 'name="robots" content="noindex,follow"' in QUARTERLY
75+
assert 'name="robots" content="noindex,follow"' in EXTRACTOR
76+
77+
5778
if __name__ == "__main__":
5879
tests = [(name, value) for name, value in globals().items() if name.startswith("test_") and callable(value)]
5980
for name, test in tests:

0 commit comments

Comments
 (0)