Tous les guides
Intermédiaire-AvancéÀ votre rythmeGuide gratuitSection 31/33

Développement full-stack du projet

Apprenez à construire et vérifier une application web avec des outils de développement et des assistants IA. Pratiquez les étapes de conception, code et validation.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 13.7.2 : Développement full-stack du projet

🎯 Objectif pédagogique

Implémenter le projet final en suivant les bonnes pratiques Rails : développement itératif, TDD, code review, et gestion de projet avec Git flow.


Méthodologie de développement

Le développement suit une approche itérative avec des sprints courts :

## Sprint 1 (3 jours) : Fondations
- [ ] Initialiser le projet Rails
- [ ] Configurer la base de données (PostgreSQL + pgvector)
- [ ] Implémenter l'authentification (Devise)
- [ ] Créer le layout principal (Bootstrap)
- [ ] Déployer sur Heroku (CI/CD)

## Sprint 2 (3 jours) : Fonctionnalités core
- [ ] Modèles et migrations
- [ ] CRUD principal
- [ ] Interface utilisateur (Turbo + Stimulus)
- [ ] Tests RSpec

## Sprint 3 (3 jours) : Intégration IA
- [ ] Service OpenAI
- [ ] Pipeline RAG (embeddings + recherche)
- [ ] Interface de chat
- [ ] Gestion des erreurs et limites

## Sprint 4 (3 jours) : Finitions
- [ ] Administration (Pundit)
- [ ] Responsive design
- [ ] Performance (caching, N+1)
- [ ] Tests E2E

Git Flow pour le projet

# Branches principales
main          # Production (toujours déployable)
develop       # Développement (intégration)

# Branches de feature
git checkout -b feature/user-auth
# ... développer ...
git push origin feature/user-auth
# Créer une Pull Request vers develop

# Convention de commits
git commit -m "feat: add user authentication with Devise"
git commit -m "fix: resolve N+1 query in conversations#index"
git commit -m "test: add RSpec tests for AiService"
git commit -m "docs: update README with setup instructions"

Scaffold intelligent avec Rails

# Générer les modèles rapidement
rails generate model User name:string email:string role:string
rails generate model Conversation user:references title:string
rails generate model Message conversation:references role:string content:text tokens_used:integer
rails generate model Document title:string content:text category:string
rails generate model Chunk document:references content:text chunk_index:integer

# Générer un controller complet
rails generate controller Conversations index show create --skip-routes

# Migrations
rails db:migrate

TDD : tester en même temps que vous développez

# spec/services/ai_service_spec.rb

RSpec.describe AiService do
  describe '.chat' do
    it 'returns a response from OpenAI' do
      VCR.use_cassette('openai_chat') do
        result = AiService.chat('Dis bonjour')
        expect(result).to be_a(String)
        expect(result.length).to be > 0
      end
    end

    it 'includes system message when provided' do
      VCR.use_cassette('openai_chat_system') do
        result = AiService.chat(
          'Quel est ton rôle ?',
          system_message: 'Tu es un assistant juridique.'
        )
        expect(result).to include('juridique').or include('droit')
      end
    end
  end
end

# spec/models/conversation_spec.rb
RSpec.describe Conversation do
  it { should belong_to(:user) }
  it { should have_many(:messages).dependent(:destroy) }
  it { should validate_presence_of(:title) }

  describe '#last_message' do
    it 'returns the most recent message' do
      conversation = create(:conversation)
      old_msg = create(:message, conversation: conversation, created_at: 1.hour.ago)
      new_msg = create(:message, conversation: conversation, created_at: Time.current)

      expect(conversation.last_message).to eq(new_msg)
    end
  end
end

Code Review checklist

## Avant chaque Pull Request, vérifiez :

### Fonctionnel
- [ ] La feature fonctionne comme prévu
- [ ] Les edge cases sont gérés
- [ ] Pas de régression sur les features existantes

### Code Quality
- [ ] DRY (pas de duplication)
- [ ] Methods < 10 lignes
- [ ] Nommage explicite (pas de variables x, y, temp)
- [ ] Strong Parameters utilisés
- [ ] N+1 queries éliminées

### Tests
- [ ] Tests unitaires pour les models/services
- [ ] Tests d intégration pour les controllers
- [ ] Tests passent en CI

### Sécurité
- [ ] Input sanitisé
- [ ] Autorisations Pundit en place
- [ ] Pas de secrets dans le code
Vérification rapide

Quel est l'avantage principal du développement itératif (sprints) ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.