Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Manage garage inventory, leads and service reminders online
Translation pending
AI summary · website content
BusinessJavaScript · PLpgSQLGitHub @rulazyxOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Ocaz, le logiciel des petits marchands de véhicules d'occasion (La Réunion), utilisable sur téléphone et sur PC.
planning dans les données) servent toujours au Tableau de bord et aux offres.plaque (voir plus bas).
Dans une reprise, « Scanner la carte grise » (photo ou image) lit la carte sur l'appareil avec Tesseract (gratuit,
scan.js) : plaque (A), VIN (E), date de 1re mise en circulation (B), marque (D.1), modèle (D.3), cylindrée (P.1),
puissance (P.2 en kW → ch), énergie (P.3), puissance fiscale (P.6), places (S.1), CO2 (V.7). La plaque lue lance
ensuite la recherche par plaque pour compléter, et la photo est rangée dans les documents du véhicule.
Une fois la reprise validée, sa fiche propose Modifier, Rentrer en stock ou Annuler la reprise. « Rentrer en stock »
(entree.js) ouvre une page Photos, Informations (reprises de la reprise, champs vides en jaune), Options (cases à
cocher par catégorie, pré-cochées d'après la boîte, l'énergie, les places et le nom de la version) et Vente (prix
d'achat, prix de vente, entrée en stock, livre de police). Les options cochées remplissent « Options et équipements ».
Photos (visionneuse.js) : elles défilent au doigt sur téléphone et avec les flèches (ou ← →) sur ordinateur, dans les cartes
du Stock, des Partenaires et sur la fiche ; sur la fiche, un appui ouvre le plein écran.
Cadrage (cadrage.js) : chaque photo ajoutée est cadrée sur le véhicule au format 4:3 (reconnaissance d'objets
COCO-SSD sur l'appareil, servie depuis vendor/ : poids réduits en 8 bits, 5 Mo, gardés hors ligne). Si le véhicule
déborde, la photo est dézoomée et les bords remplis par la photo floutée. « Cadrer » sur une photo permet de
déplacer, zoomer ou dézoomer à la main. Le cadrage est enregistré dans la photo : site public, réseau et PDF en profitent.Ce dépôt est l'appli des pros, à l'adresse ocaz.re. Le site public (véhicules du réseau, vitrines des garages, integrer.js,
pages légales, rejoindre, outils) est dans le dépôt SITE-VITRINE- (ex-ocaz, ex-CRM-ZX), à l'adresse reseau.ocaz.re.
robots.txt interdit tout, et chaque page a <meta name="robots" content="noindex">.
Aucun lien du site public ne mène ici : Anthony envoie lui-même l'adresse aux pros. La vraie protection reste la connexion./apporteur sans connexion renvoie vers la connexion (plus d'inscription en ligne : voir « Comptes et droits »).https://reseau.ocaz.re/.ocaz.re : 404.html renvoie toute autre adresse (/reseau, /vitrine?g=…,
pages légales…) vers reseau.ocaz.re, et integrer.js reste ici pour les codes déjà collés sur des sites de garages.admin.html (/admin), où il arrive
directement à la connexion. Identifiant court admin (table crm_identifiants), mot de passe de départ admin à changer avant le lancement.12345678.crm_entreprises.config, lu par droits.js) : réseau Ocaz (+ commission), dépôt-vente, achat-revente.
Achat-revente seul : pas d'onglet Dépôt vente. Dépôt-vente seul : pas d'onglet Reprise, Stock limité aux véhicules partenaires.
Le Stock a toujours un sous-onglet Partenaires (véhicules partagés par les autres garages du réseau).depotvente.js) : En stock / Réservés / Vendus (+ À compléter). Nouveau dépôt en 4 étapes :
client, véhicule, prix et commission (validable dès cette étape), documents (CNI, carte grise, justificatif de domicile, RIB),
téléversés ou photographiés l'un après l'autre sur téléphone (scan.js, lecture automatique Tesseract chargée à la demande).administratif.js) : toute la paperasse. À faire (déclarations d'achat et de cession au SIV sous 15 jours,
CT de moins de 6 mois, factures à éditer, mandats qui expirent, reversements, W garage et assurance qui arrivent à échéance),
Véhicules (dossier de chaque véhicule : livre de police, cession, déclaration d'achat, CT, bon de commande, facture),
Registres (livre de police, factures et export comptable, mandats) et Garage (habilitations, échéances, documents du garage).
Champs ajoutés : daSiv, cessionSiv, ctDate sur les véhicules, parametres.administratif pour le garage. Pas de SQL à lancer.apporteur.html, gratuit, compte créé par l'administrateur) : contrat signé en ligne à la première connexion,
Suivi leads (en cours, clos, terminés), Tableau de bord (commissions, ventes, leads en souffrance, taux de transformation),
Réseau (choisir un véhicule et envoyer un client, avec son accord RGPD et une reprise éventuelle), Paramètres (infos, RIB,
factures de commission, contrat). Démo : identifiant apporteur, mot de passe test.revision).Appli web statique (HTML, CSS, JavaScript, sans build), hébergeable gratuitement sur GitHub Pages.
Les données de chaque garage sont dans Supabase (une ligne JSON par garage, table crm_entreprises, voir sync.js),
avec une copie dans le navigateur (localStorage) ; tout passe par l'objet db dans app.js.
sw.js garde une copie de l'appli sur l'appareil : elle s'ouvre depuis cette copie, sans redemander chaque fichier au serveur.version.json change à chaque mise en ligne : l'action GitHub .github/workflows/version.yml le réécrit toute seule
après chaque fusion dans main (commit « Version publiée … » du robot). Ne pas le modifier à la main.maj.js lit version.json toutes les 5 minutes : nouvelle version → bandeau « Mettre à jour ». À l'ouverture, si la copie
du téléphone est plus ancienne que la version en ligne, elle est jetée et l'appli se recharge tout de suite.chargerScript dans app.js) : qrcode.js, demo.js,
et dans vendor/ le PDF et l'Excel ; la lecture des documents (Tesseract) vient d'internet.Pour l'essayer en local : ouvrir index.html dans un navigateur.
Le fichier CNAME (contenu : ocaz.re) relie ce dépôt au domaine (zone DNS OVH : 4 A sur @ vers GitHub Pages, www en CNAME).
main, / (root) ; Custom domain = ocaz.re ; Enforce HTTPS.
Le domaine doit d'abord être retiré des réglages Pages du dépôt ocaz (un domaine ne peut servir qu'un dépôt).https://ocaz.re, Redirect URLs https://ocaz.re/**.
Les données gardées dans le navigateur dépendent de l'adresse : en changeant d'adresse, il faut se reconnecter une fois.CRMZX. L'adresse et la clé publique sont dans config.js (clé publique, faite pour être visible).supabase.sql crée ou met à jour toute la base et peut être relancé sans risque (SQL Editor > Run).crm_entreprises, protégée par les règles d'accès (RLS).
Quand deux appareils modifient en même temps, la synchronisation fusionne fiche par fiche (sync.js).plaque)supabase/functions/plaque/index.ts interroge le fournisseur (immatriculationapi.com conseillé, 0,20 € la recherche ;
ou une API plaque RapidAPI). La clé est un secret Supabase, jamais dans l'appli ni dans ce dépôt.PLAQUE_UTILISATEUR (immatriculationapi.com) ou PLAQUE_RAPIDAPI_CLE (+ PLAQUE_RAPIDAPI_HOST),
et PLAQUE_LIMITE_MOIS (30 recherches payantes par garage et par mois par défaut).crm_plaque_cache.supabase.sql.plaque, coller index.ts,
décocher « Verify JWT » (la fonction vérifie elle-même le compte connecté).