Montréal, QC·lukesidney.me·Fresh 2 · DenoAucun témoin · aucun formulaire
Planche01

La une.Ce que c'est

En ligne

PSA

Le tableau de bord de l'argent d'une entreprise de services : soumission, contrat, facture, paiement et heures dans une seule appli, en français d'abord.

Automatisation des services professionnels. Les soumissions de mon entreprise roulent dessus aujourd'hui. Les écrans ci-dessous viennent de la démo publique; l'entreprise et tous les chiffres y sont inventés.

Vue d'ensemble de la démo PSA : revenus, factures en attente, soumissions ouvertes et activité récente d'une entreprise de rénovation inventée.
Planche02

Composé.La pile techno

Sur quoi ça roule

Une appli Next.js sur la base de données partagée. Le code des taxes et des PDF vit dans des paquets partagés que les autres applis utilisent aussi.

Interface

  • Next.js16.2l'appli et le portail client
  • React19.2
  • Radix + shadcndes composants personnalisés
  • Recharts2.15les graphiques

Argent

  • Stripe20le paiement des factures
  • GST + QSTles deux taxes sur chaque document
  • PDF renderersoumissions, contrats, factures
  • ExcelJSles exports

Données

  • Payload3.82les dossiers et l'admin
  • Neon Postgresune base de données partagée
  • Drizzle0.45les requêtes
  • Better Auth1.5la connexion

Courriel + hébergement

  • Handlebars + juiceles gabarits de courriel
  • Resendl'envoi
  • Vercell'appli et la démo
Planche03

Sous presse.Comment ça marche

5 étapes, dans l'ordre

D'une soumission vide à l'argent à la banque. Chaque écran vient de la démo publique.

  1. Bâtir la soumission

    Quatre étapes. Les lignes sont regroupées sous des fonctionnalités, calculées en heures fois un taux. Le PDF se dessine à côté du formulaire pendant que tu tapes.

    Constructeur de soumission PSA, étape 1 sur 4, avec le PDF de la soumission qui se dessine à côté du formulaire.
  2. Passer la barrière d'envoi

    La soumission ne peut pas partir tant qu'elle n'a pas un client, un projet, un mandat, un mode de paiement et un contrat en PDF.

    Liste des soumissions PSA avec le client, le statut et le total de chacune.
  3. Un seul lien pour le client

    Il accepte, signe le contrat, remplit l'accueil ou demande une révision derrière un seul lien privé. Les demandes de révision sont triées par l'IA.

  4. Se faire payer

    Le lien de la facture ouvre un paiement Stripe. Les paiements arrivent dans Finances avec la TPS et la TVQ séparées.

    Écran Finances de PSA : revenus, taxes perçues et graphiques par mois.
  5. Pointer les heures

    Les heures de la carte de la journée tombent sur les fonctionnalités de la soumission : l'estimé et le réel sont côte à côte.

    Pointage PSA : la carte de la journée avec travail, déplacement et pauses.
Planche04

L'épreuve.Le code

La barrière d'envoi

apps/psa/lib/quotes/send-gate.ts · lines 35–45source réelle
export function evaluateSendGate(facts: SendGateFacts): SendGateResult { const missing: SendGateItem[] = [] if (!facts.hasClient) missing.push('client') if (!facts.projectName?.trim()) missing.push('project') if (facts.mandateCount < 1) missing.push('mandate') if (!facts.paymentMethod || !(PAYMENT_METHODS as readonly string[]).includes(facts.paymentMethod)) { missing.push('payment_method') } if (!facts.hasContractDraft) missing.push('contract') return { ok: missing.length === 0, missing }}

Les deux façons d'envoyer une soumission appellent cette seule fonction; aucun écran ne peut la contourner.

Planche05

La bobine.La démo

Le voir tourner

Démo du logiciel à venirEnviron 2 minutes, sur la démo : bâtir une soumission, voir la barrière la refuser, joindre le contrat, l'envoyer, payer la facture.
Planche06

Corrections.Ce que ça règle

Les problèmes que ça règle

  • Des soumissions bâties dans un chiffrier, hors de tout système.

    Un constructeur en quatre étapes qui dessine le PDF pendant que tu tapes.

  • Des contrats envoyés avant que rien ne soit signé.

    Rien ne part tant que le contrat en PDF n'est pas joint.

  • Des factures impayées que personne ne voit avant les impôts.

    La vue d'ensemble s'ouvre sur ce qui est en retard et ce qui est dû.

  • Des prix fixes qui n'apprennent jamais des vraies heures.

    Les heures tombent sur chaque fonctionnalité; la prochaine soumission part de vrais chiffres.

  • La TPS et la TVQ calculées à la main.

    Les deux taxes sont calculées et séparées sur chaque document.

Planche07

Le mot de l'éditeur.Pourquoi je l'ai bâti

Pourquoi ça existe

PSA a commencé comme outil de soumission pour des matériaux de construction, avec des prix comme « 14 tonnes de gravier à 42 $ la tonne ».

Quand mon entreprise est passée au logiciel, les soumissions sont devenues des heures. Un prix fixe sans heures mesurées, c'est un pari qu'on renouvelle à chaque mandat; alors l'appli a appris à suivre le temps par rapport à ce qu'elle avait soumis.

Illustration riso : un formulaire de soumission qui devient une feuille de temps.
Planche08

Face au présentoir.Mieux que la moyenne

Face aux outils habituels

Face à Harvest et FreshBooks. Leur côté a été lu sur les pages d'aide de chaque fournisseur le 2026-09-27.

QuoiLa moyenne du marchéCette appli
Étapes du clientUn lien pour accepter et signer; le paiement plus tard, sur une facture à part.Un seul lien : accepter, signer, accueil, payer.page du fournisseur
ContratUne signature sur la proposition (FreshBooks), ou seulement accepter et refuser (Harvest).Un contrat en PDF tiré de la soumission; rien ne part sans lui.page du fournisseur
Taxes du QuébecUn taux de taxe que tu configures toi-même.TPS et TVQ intégrées, avec des préréglages pour d'autres industries.page du fournisseur
Planche09

L'achevé d'imprimer.Le temps que ça a pris

152 commits en 293 jours

commits
152
jours avec un commit
39
jours, du premier commit à aujourd'hui
293
2025-12-09commits par semaine · record : 382026-09-27
  1. Premier commit
  2. Passage des matériaux aux mandats logiciels
  3. Déménagé dans le monorepo
  4. Dernier commit

Mesuré : git log, mes propres commits sur l'appli, 2026-09-27.

Planche10

Colophon.Sa place au registre