You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mettre en place le squelette du projet Spark : structure de repo, serveur API FastAPI, modèle de données Idea, et premier endpoint de capture d'idée brute. Aucune logique socratique ici — on pose les rails.
Périmètre (~24h)
Structure de projet Python : spark/, spark/api/, spark/models/, spark/tests/
Modèle Idea (SQLite via SQLModel) : id, raw_text, status, created_at
POST /ideas : crée une idée brute, retourne l'id
GET /ideas/{id} : récupère une idée par id
GET /health : health check
Fichiers à créer (Writes)
spark/main.py
spark/models/idea.py
spark/api/ideas.py
spark/database.py
spark/tests/test_api_ideas.py
spark/tests/test_model_idea.py
Acceptance Criteria
La fonction create_idea() dans spark/api/ideas.py accepte un raw_text non vide et persiste un objet Idea en base, vérifié par test_create_idea_persists
POST /ideas retourne HTTP 201 avec un champ id UUID valide, vérifié par test_post_idea_returns_201
GET /ideas/{id} retourne HTTP 200 avec le raw_text original pour un id existant, vérifié par test_get_idea_returns_raw_text
GET /ideas/{id} retourne HTTP 404 pour un id inconnu, vérifié par test_get_idea_not_found
GET /health retourne HTTP 200 avec {"status": "ok"}, vérifié par test_health_check
La classe Idea dans spark/models/idea.py expose les champs id, raw_text, status, created_at, vérifié par test_idea_model_fields
Dépendances
Aucune (premier step).
Contexte marché
Les concurrents (Lovable, Bolt, Emergent) exposent tous une API REST comme couche d'entrée. Spark doit traiter chaque idée comme un artefact versionné dès le départ. Lovable a atteint $100M ARR en juin 2025 et 8M utilisateurs, validant la demande massive pour ce type de plateforme [source: TechCrunch Nov 2025].
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Directive PO — STEP_1 : Fondations techniques + API conversationnelle
Milestone : M1 — L'Étincelle Capturée
Repo : https://github.com/ncast-dev/Hub
Commit de référence : b9a8cba
Objectif
Mettre en place le squelette du projet Spark : structure de repo, serveur API FastAPI, modèle de données
Idea, et premier endpoint de capture d'idée brute. Aucune logique socratique ici — on pose les rails.Périmètre (~24h)
spark/,spark/api/,spark/models/,spark/tests/Idea(SQLite via SQLModel) :id,raw_text,status,created_atPOST /ideas: crée une idée brute, retourne l'idGET /ideas/{id}: récupère une idée par idGET /health: health checkFichiers à créer (Writes)
spark/main.pyspark/models/idea.pyspark/api/ideas.pyspark/database.pyspark/tests/test_api_ideas.pyspark/tests/test_model_idea.pyAcceptance Criteria
create_idea()dansspark/api/ideas.pyaccepte unraw_textnon vide et persiste un objetIdeaen base, vérifié partest_create_idea_persistsPOST /ideasretourne HTTP 201 avec un champidUUID valide, vérifié partest_post_idea_returns_201GET /ideas/{id}retourne HTTP 200 avec leraw_textoriginal pour un id existant, vérifié partest_get_idea_returns_raw_textGET /ideas/{id}retourne HTTP 404 pour un id inconnu, vérifié partest_get_idea_not_foundGET /healthretourne HTTP 200 avec{"status": "ok"}, vérifié partest_health_checkIdeadansspark/models/idea.pyexpose les champsid,raw_text,status,created_at, vérifié partest_idea_model_fieldsDépendances
Aucune (premier step).
Contexte marché
Les concurrents (Lovable, Bolt, Emergent) exposent tous une API REST comme couche d'entrée. Spark doit traiter chaque idée comme un artefact versionné dès le départ. Lovable a atteint $100M ARR en juin 2025 et 8M utilisateurs, validant la demande massive pour ce type de plateforme [source: TechCrunch Nov 2025].
Ref : docs/product/STEP_1.md — Spark PO, 2026-07-02
Beta Was this translation helpful? Give feedback.
All reactions