The process

How Katappult works

A simple 4-step process, from idea to deployed application.

1

Describe your need

Talk to Claude Code or provide your wireframes and specifications.

2

Katappult generates

Spring Boot backend, React frontend, business rules, unit tests, database migrations — everything is generated automatically.

3

Customize with AI

Keep working with your favorite AI assistant on the generated code.

4

Deploy and own

The code is yours. Deploy anywhere you want, on your infrastructure.

The technology

Spring Boot

Enterprise-grade Java backend, secure REST APIs, production-ready microservices.

React

Modern frontend, reusable components, TypeScript, unit tests included.

PostgreSQL + Liquibase

Robust relational database with versioned and reproducible migrations.

Flutter

Cross-platform iOS & Android mobile app from a single codebase. Native performance, smooth rendering.

Docker

Full-stack containerization for consistent, reproducible deployments independent of the target infrastructure.

Native AI

MCP integration for Claude Code, GitHub Copilot, Cursor and all modern AI assistants.

Real example

One prompt, one complete feature

A real prompt submitted to Katappult — endpoints, technical rules, response models. Everything described in markdown, nothing to code.

feature-request.md
# 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` |

Ready to turn your ideas into reality?

Join the vibe coding revolution and start building your applications today.

Book a demo