Comment Katappult fonctionne
Un processus simple en 4 étapes, de l'idée à l'application déployée.
Décrivez votre besoin
Parlez à Claude Code ou fournissez vos maquettes et spécifications.
Katappult crée
Backend Spring Boot, frontend React, Règles métiers, tests unitaires, migrations de base de données — tout est généré automatiquement.
Personnalisez avec l'IA
Continuez à travailler avec votre assistant IA préféré sur le code généré.
Déployez et possédez
Le code vous appartient. Déployez où vous voulez, sur votre infrastructure.
La technologie
Spring Boot
Backend Java enterprise-grade, APIs REST sécurisées, microservices prêts pour la production.
React
Frontend moderne, composants réutilisables, TypeScript, tests unitaires inclus.
PostgreSQL + Liquibase
Base de données relationnelle robuste avec migrations versionnées et reproductibles.
Flutter
Application mobile cross-platform iOS & Android à partir d'une seule base de code. Performances natives, rendu fluide.
Docker
Conteneurisation de l'ensemble du stack pour un déploiement cohérent, reproductible et indépendant de l'infrastructure.
IA native
Intégration MCP pour Claude Code, GitHub Copilot, Cursor et tous les assistants modernes.
Un prompt, une feature complète
Voici un exemple de prompt soumis à Katappult — endpoints, règles techniques, modèles de réponse. Tout est décrit en markdown, rien à coder.
# Backend API – Custom Annonce feature request
## Objectif
Créer une API REST custom pour l'entité **Annonce** avec :
- endpoints publics (sans authentification)
- endpoints sécurisés (JWT requis)
- requêtes optimisées (QueryDSL, sans N+1)
---
## Règles techniques OBLIGATOIRES
- Aucun filtrage en mémoire
- Toutes les requêtes doivent être faites avec QueryDSL
- Utiliser `leftJoin(...).fetchJoin()` pour éviter le N+1
- Respecter l'architecture : Repository → Service → Controller
- Toutes les annonces publiques doivent avoir `lifecycleState = PUBLISHED`
---
## Endpoints publics
**Base path :** `/api/pub/v1/custom-annonce`
**Authentification :** aucune
### GET `/{entityUid}/details`
Retourne le détail complet d'une annonce.
**Contraintes :** Charger les relations (category, boutique, produit) via fetch join.
### GET `/new-annonces`
Retourne les 30 annonces les plus récentes.
**Contraintes :** lifecycleState = PUBLISHED · tri date DESC · limite 30
### GET `/list`
Liste paginée avec filtres optionnels.
| Paramètre | Type | Défaut |
|-------------|---------|-----------------|
| searchTerm | string | - |
| ville | string | - |
| categoryUid | string | - |
| productUid | string | - |
| enStock | boolean | true |
| page | int | requis |
| pageSize | int | requis |
| sort | string | createdDate,desc|
---
## Endpoints sécurisés
**Base path :** `/api/v1/custom-annonce`
**Authentification :** JWT requis
### GET `/annonces-of-user`
Retourne les annonces paginées d'un utilisateur (userUid, page, pageSize, status, sort).
### DELETE `/delete-annonces`
Suppression logique via `DeleteRequest` existant (`com.katappult.core.rest.vo.DeleteRequest`).
Ne pas créer de nouvelle classe.
---
## Modèles de réponse
### `CustomAnnonceListRestModel` — étend `AnnonceListRestModel`
| Champ | Source |
|-------------|-----------------------------------|
| categoryUid | annonce.getCategory().getUid() |
| categoryName| annonce.getCategory().getName() |
### `CustomAnnonceRestResponse` — étend `AnnonceRestResponse`
| Champ | Source |
|-------------|-----------------------------------|
| categoryUid | annonce.getCategory().getUid() |
| categoryName| annonce.getCategory().getName() |
| boutiqueUid | annonce.getBoutique().getUid() |
| boutiqueName| annonce.getBoutique().getName() |
| produitUid | annonce.getProduit().getUid() |
| produitName | annonce.getProduit().getName() |
---
## Agent
| Rôle | Fichier agent |
|------------------------|-----------------------|
| Développement backend | `backend-developer.md` |Prêt à adopter des agents Katappult ?
Rejoignez la révolution du vibe coding et commencez à bâtir vos applications dès aujourd'hui.
Réserver une démo