refactor: projet stand-alone sans dépendance aoe_technology_radar

- Intégration du code source du framework dans radar-app/ (vendoring)
- Suppression de la dépendance npm aoe_technology_radar
- Création de scripts build-radar.js et serve-radar.js pour remplacer le CLI techradar
- Adaptation de tous les scripts et Docker pour utiliser radar-app/ au lieu de .techradar
- Refactorisation complète de Dockerfile.business
- Mise à jour de la documentation (architecture, déploiement, développement)
- Mise à jour de .gitignore pour ignorer les artefacts de build de radar-app/
- Ajout de postcss dans les dépendances Docker pour le build Next.js

Le projet est maintenant complètement indépendant du package externe.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
syoul
2026-02-25 18:11:40 +01:00
parent cc8df1a4af
commit 9d8ae3d32a
125 changed files with 15583 additions and 123 deletions

View File

@@ -0,0 +1,29 @@
.links {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
list-style: none;
padding: 0;
}
.icon {
fill: var(--background);
width: 16px;
height: 16px;
}
.link {
display: block;
border: 1px solid var(--border);
background: var(--foreground);
padding: 6px;
border-radius: 50%;
&:hover {
background: var(--background);
.icon {
fill: var(--foreground);
}
}
}

View File

@@ -0,0 +1,66 @@
import styles from "./SocialLinks.module.css";
import {
SocialFacebook,
SocialGithub,
SocialGitlab,
SocialInstagram,
SocialLinkedin,
SocialX,
SocialXing,
SocialYoutube,
} from "@/components/Icons";
import { getSocialLinks } from "@/lib/data";
import { cn } from "@/lib/utils";
interface SocialLinksProps {
className?: string;
}
function getIcon(name: string) {
switch (name.toLowerCase()) {
case "facebook":
return SocialFacebook;
case "github":
return SocialGithub;
case "gitlab":
return SocialGitlab;
case "instagram":
return SocialInstagram;
case "linkedin":
return SocialLinkedin;
case "x":
return SocialX;
case "xing":
return SocialXing;
case "youtube":
return SocialYoutube;
default:
return null;
}
}
export function SocialLinks({ className }: SocialLinksProps) {
const links = getSocialLinks();
return (
<ul className={cn(styles.links, className)}>
{links.map((link, i) => {
const Icon = getIcon(link.icon);
return (
Icon && (
<li key={i}>
<a
href={link.href}
className={styles.link}
target="_blank"
rel="noopener noreferrer"
>
<Icon className={styles.icon} />
</a>
</li>
)
);
})}
</ul>
);
}