All guides
Intermediate-AdvancedSelf-pacedFree GuideSection 31/33

Développement full-stack du projet

Learn to build and check a web application with development tools and AI assistants. Practise design, coding and validation.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and 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
Quick Check

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

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.