Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Les 12 annexes du Décret 2.23.700 générées automatiquement, chaque dépense avec sa facture, chaque assemblée avec son PV opposable. 30 jours avec vos propres données : si vous ne continuez pas, vous ne payez rien.
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
Site public de SyndicUp, logiciel de gestion de copropriété au Maroc. Projet indépendant : aucune dépendance à l'application produit (CElyousfi/Syndicup), aucun appel API, aucune session. Tout est pré-rendu au build. • 26 pages, chacune en français et en arabe (52 pages + 404). • RTL réel en arabe : propriétés logiques, pas de feuille de style miroir. • Next.js 15 (App Router) · React 19 · TypeScript strict · Tailwind CSS v4.檢視完整 README ↗
Site public de SyndicUp, logiciel de gestion de copropriété au Maroc.
Projet indépendant : aucune dépendance à l'application produit (CElyousfi/Syndicup),
aucun appel API, aucune session. Tout est pré-rendu au build.
La mise en page suit l'ossature d'un site SaaS commercial : sections de 112px,
blocs de titre centrés, titres en 700, boutons à rayon court. Les mesures sont
regroupées dans app/globals.css :
| Valeur | |
|---|---|
| Conteneur | 1200px |
| Rythme de section | 112px (.section-pad), 80px resserré |
| Bloc de titre | centré, 64px avant le contenu (.section-head) |
| H1 / H2 / H3 | 64 / 48 / 32px, graisse 700 |
| Corps large | 20px / 1.5 |
| Boutons | rayon 6px, 16/24px, graisse 700 |
| Cartes | rayon 16 à 24px |
Les couleurs, la police et les maquettes produit viennent du produit
lui-même (globals.css de l'application) : greige, encre, vert sauge, Geist,
chiffres tabulaires. L'ossature est commerciale, la matière reste SyndicUp.
L'accueil se déroule en 17 sections : promesse et capture produit, bandeau de preuves, ruban de modules, compte à rebours de clôture, constat du problème, quatre blocs produit alternés, trio « conformité intégrée » sur fond sombre, trois écrans de preuve, onglets par rôle, « pourquoi SyndicUp », preuve sociale volontairement vide, accompagnement, carrousel de portefeuille, écosystème, tarifs, reprise de données, FAQ à onglets — puis le bandeau final commun.
#121212, chevrons et « Up » vert #1E7A50. Fichiers vectoriels dans public/brand/
(syndicup-logo.svg, version inversée lime #DFF28A, symbole seul, icône d'app) — le
wordmark y est en contours (Archivo Black, SIL OFL), aucune police à charger. Composant :
components/brand-logo.tsx. Favicons, icône Apple et image de partage (og-syndicup.jpg,
1200 × 630) sont déclarés dans app/[locale]/layout.tsx.public/video/, affiché sur
l'accueil (section #film, chargement différé) et déclaré en
VideoObject dans le JSON-LD.lib/site.ts (SITE.social), affichées dans le pied de page
et déclarées en sameAs de l'Organization (JSON-LD)./brand/ et /video/ sans préfixe de locale.npm install
npm run dev # http://localhost:3100
| Commande | Effet |
|---|---|
npm run dev | serveur de développement |
npm run build | build de production (pré-rend les 53 pages) |
npm start | sert le build |
npm run typecheck | tsc --noEmit |
npm run lint | ESLint |
app/
globals.css système de design (jetons, primitives, correctifs RTL)
[locale]/ layout racine : <html lang dir>, en-tête, pied, bandeau CTA
page.tsx accueil
[slug]/ 11 pages produit et « pour qui »
ressources/[slug]/ 5 guides et modèles
ressources/calculateur…/ outil interactif
fonctionnalites | tarifs | demo | securite | ressources | a-propos | contact
components/ en-tête, pied, maquettes produit, calculateur, formulaire
content/
types.ts la forme du contenu — les deux langues l'implémentent
fr/ · ar/ les deux dictionnaires
mockups.ts libellés des maquettes produit
lib/
i18n.ts locales, direction, sélection du dictionnaire
site.ts coordonnées et mentions légales (à compléter)
middleware.ts toute URL sous /fr ou /ar
content/fr/ et content/ar/ implémentent tous les deux SiteContent
(content/types.ts). Une clé ajoutée d'un seul côté fait échouer le build.
C'est la seule garantie fiable qu'une traduction ne prend pas de retard.
Les slugs d'URL restent en français dans les deux langues (/ar/comptabilite-annexes) :
ce sont des identifiants de route, pas du contenu. Les traduire créerait deux
arborescences à maintenir et casserait les liens existants.
components/mockups.tsx compose dix écrans du produit (tableau de bord, Annexe 10,
file de validation, téléphone résident, votes, portefeuille cabinet, loge…).
Ils restent nets à toutes les tailles, se traduisent, et suivent la direction du
texte. Les photographies (public/images/) viennent du dépôt produit.
Pour remplacer une maquette par une vraie capture, changez le mockup de la page
concernée dans content/*/details.ts — ou ajoutez un champ image à DetailBlock.
Les correctifs arabes sont regroupés en fin de app/globals.css, volontairement
hors de tout @layer pour l'emporter sur les utilitaires Tailwind :
normal (l'arabe est une écriture liée, le crénage négatif du
français le casse) ;184 320 s'affiche 320 184, l'algorithme
bidirectionnel y voyant deux nombres séparés par une espace.Tout est regroupé dans lib/site.ts et signalé dans le contenu :
| Valeur | Où | Actuellement |
|---|---|---|
| Téléphone WhatsApp | lib/site.ts | +212600000000 |
| RC / ICE | lib/site.ts, footer.legal, apropos.companyLines | 000000 / 000000000000000 |
| URL canonique | NEXT_PUBLIC_SITE_URL ou lib/site.ts | https://syndicup.pro |
| URL du bac à sable | lib/site.ts (appUrl) | https://app.syndicup.pro |
Le contenu porte aussi des réserves juridiques assumées : délais de convocation, quorums, majorités et intitulés officiels des annexes sont présentés comme des paramètres à faire confirmer, pas comme des affirmations. Ne les durcissez pas sans avis d'un avocat spécialisé.
Le formulaire de démo n'envoie rien à un serveur : il compose le message WhatsApp que la page promet. C'est délibéré — un site vitrine n'a pas à stocker de données personnelles.
Build Next.js standard, sans base de données ni variable d'environnement obligatoire
(NEXT_PUBLIC_SITE_URL est recommandée pour les URL canoniques et le sitemap).
Fonctionne tel quel sur Vercel, Render, Netlify ou n'importe quel hôte Node ≥ 20.