Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Chiffrez une toiture-terrasse selon les DTU avec les vraies références fabricants, puis suivez chaque zone jusqu'à la réception. Sur le téléphone, même sans réseau.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @kwhrapat-cellOnlineOwner 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 ↗Portail applicatif du MVP : Tableau de bord, Chantiers, Devis, Clients, Calculateur, Paramètres — avec authentification et données réelles.
Ce projet est pensé pour être développé seul, sans équipe externe, avec l'aide d'un assistant IA (Claude). Chaque étape ci-dessous peut être copiée- collée telle quelle.
npm install
cp .env.example .env.local
supabase/schema.sql.Project URL et anon public key
dans .env.local.npm run dev
Ouvrir http://localhost:3000 → vous êtes redirigé vers /login.
Cliquer sur Créer un compte : cela crée votre utilisateur, votre
entreprise et votre profil administrateur en une seule fois.
Dans Supabase → Table Editor → entreprises, copier l'id de votre
entreprise. Le coller à la place de <ENTREPRISE_ID> dans
supabase/seed.sql, puis exécuter ce fichier dans SQL Editor. La page
Chantiers affichera alors ces données réelles.
NEXT_PUBLIC_SUPABASE_URL et NEXT_PUBLIC_SUPABASE_ANON_KEY.git push redéploie automatiquement — aucune
intervention manuelle nécessaire ensuite.Stripe refuse les entreprises basées en Nouvelle-Calédonie : les forfaits sont encaissés par Lemon Squeezy, qui est le vendeur officiel vis-à-vis du client (« merchant of record ») : il encaisse la carte ou PayPal, applique les taxes, envoie la facture au client, puis reverse l'argent sur PayPal (la Nouvelle-Calédonie n'est pas dans sa liste de virements bancaires). Frais indicatifs : 5 % + 0,50 $ par paiement, plus des frais de versement PayPal — à revérifier sur leur page de tarifs.
supabase/migration-paiement-lemonsqueezy.sql dans Supabase →
SQL Editor, puis passer sa ligne à « Oui » dans supabase/ETAT-MIGRATIONS.md.https://devis-etanche.vercel.app/api/webhooks/lemonsqueezy, choisir une
phrase secrète au hasard, et cocher tous les événements subscription_….LEMONSQUEEZY_API_KEY, LEMONSQUEEZY_STORE_ID,
LEMONSQUEEZY_VARIANT_ARTISAN, LEMONSQUEEZY_VARIANT_PRO,
LEMONSQUEEZY_WEBHOOK_SECRET, et SUPABASE_SERVICE_ROLE_KEY (Supabase →
Project Settings → API, ⚠️ secrète, jamais publique), puis redéployer.Depuis /parametres, choisir un forfait payant ouvre la page de paiement
Lemon Squeezy ; une fois le paiement confirmé, le webhook met automatiquement
à jour entreprises.forfait. Le bouton « Gérer mon abonnement » renvoie
ensuite vers l'espace Lemon Squeezy (changer de forfait, de carte, résilier,
factures). À la fin d'un abonnement résilié ou impayé, l'entreprise revient
d'elle-même au forfait Découverte.
Pour encaisser réellement : activer la boutique dans Lemon Squeezy (questionnaire + vérification d'identité, compter jusqu'à quelques semaines), puis remplacer la clé, les numéros de variantes et le webhook de test par ceux du mode réel.
Exécuter supabase/storage.sql dans le SQL Editor (après avoir créé un
bucket public nommé photos depuis Storage → New bucket). Les photos
s'ajoutent alors directement depuis la fiche d'un chantier.
Chaque devis a une page dédiée (/devis/[id]) mise en page pour
l'impression. Le bouton "Exporter en PDF" déclenche l'impression du
navigateur (Ctrl/Cmd+P → "Enregistrer en PDF") — aucune dépendance
supplémentaire, fonctionne immédiatement.
public/sw.js) met en cache les pages principales
pour une consultation hors connexion.lib/offline/queue.ts) et synchronisées
automatiquement au retour du réseau.Sur /calculateur, le bouton "Générer un devis à partir de ce calcul"
transmet les quantités calculées vers /devis/nouveau, où elles arrivent
déjà réparties en lignes (désignation, quantité, prix unitaire par défaut,
modifiable avant enregistrement).
Chaque chantier a un token_public généré automatiquement. Depuis la fiche
chantier, le bouton "Copier le lien de suivi client" génère une URL du type
https://votre-site/espace-client/<token> à envoyer au client : il y voit
l'avancement, les zones et les dernières photos, sans jamais se connecter.
La sécurité repose sur le fait que le token est un UUID non devinable — les
données exposées sont volontairement limitées (pas de montants, pas
d'informations sur les autres chantiers) via la fonction Postgres
espace_client_chantier (voir fin de supabase/schema.sql).
lib/calc/etancheite.ts) est le seul endroit à modifier
pour ajuster des ratios : toutes les pages qui l'utilisent se mettent à
jour automatiquement.| Page | État |
|---|---|
| Tableau de bord | ✅ Connectée à Supabase (stats + chantiers récents réels) |
| Chantiers (liste + création) | ✅ Connectée, formulaire "Nouveau chantier" fonctionnel |
| Détail chantier | ✅ Connectée, zones réelles + formulaire "Ajouter une zone" |
| Devis (liste + création) | ✅ Connectée, formulaire avec lignes dynamiques et calcul auto HT/TTC |
| Clients (liste + création) | ✅ Connectée, formulaire "Nouveau client" fonctionnel |
| Calculateur | ✅ Formules DTU réelles, aucune donnée externe requise |
| Paramètres | ✅ Connectée : entreprise, équipe, forfait + paiement Lemon Squeezy |
| Connexion / Inscription | ✅ Fonctionnel (Supabase Auth) |
| Photos de chantier | ✅ Upload réel (Supabase Storage) |
| Export PDF devis | ✅ Page imprimable dédiée par devis |
| Mode hors ligne | ✅ Cache + file de synchronisation basique |
| Paiement / forfaits | ✅ Lemon Squeezy (page de paiement + webhook de mise à jour automatique) |
| Calculateur → Devis | ✅ Génération de devis pré-rempli en un clic |
| Espace client | ✅ Page publique de suivi via lien sécurisé (sans compte) |
Toutes les pages listées "✅ Connectée" lisent et écrivent réellement dans
Supabase — plus aucune donnée en dur dans app/.