Synaplan
기업을 위한 오픈소스 AI 플랫폼
법령 2.23.700의 12 부속서를 자동 생성하고 지출·청구서·회의록을 관리합니다
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 n
비즈니스TypeScript · CSSGitHub @CElyousfi온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.