Comment nous construisons

Nous sommes des ingénieurs logiciel. Avant Greppi, nous avons construit et exploité des systèmes qui devaient continuer à fonctionner — sous charge, sous changement, sous la date limite de quelqu’un d’autre. C’est cette expérience que le générateur encode : le code qu’il écrit est celui que nous écririons nous-mêmes.

Ce que nous croyons

Assumé vaut mieux que configurable

Il y a ici une seule bonne façon de faire chaque chose, et la plateforme la prend. Chaque projet reçoit des applications avec leur propre routage, une base Postgres et des migrations qui s’exécutent seules au démarrage. Vous ne câblez jamais de plomberie, et deux projets ne dérivent jamais vers des formes différentes.

Le code est bien plus lu qu’écrit

Des noms longs et descriptifs, des fichiers assez courts pour tenir dans la tête, des commentaires seulement là où le pourquoi n’est pas évident dans le code. Nos standards accompagnent chaque modification faite par l’IA — ce n’est pas un guide de style que quelqu’un a oublié d’appliquer.

Une démo n’est pas un produit

Une vraie base de données, un vrai backend, développement, test et production dès la première minute. Rien ne se réinitialise, rien n’est simulé, et ce que vous prévisualisez est ce qui se déploie.

La montée en charge se décide le premier jour

Les frontends et les backends sont des applications séparées avec leurs propres conteneurs et adresses. Grandir, c’est en ajouter une, pas démêler celle que vous avez.

À quoi ça ressemble dans votre code

invoice.entity.ts
1@Entity("invoices")
2export class Invoice {
3 @Column({ name: "due_date", type: "date" })
4 dueDate: string;
5}
6 
7synchronize: false,
8migrationsRun: true,

La forme de vos données vit dans des entités et des migrations — jamais dans un drapeau synchronize qui supprime discrètement une colonne le jour du déploiement.

Lisez le code qu’il écrit

Décrivez quelque chose, puis ouvrez la vue du code et jugez par vous-même.