- Accueil
- Build With Me
- Apprendre
Build With Me · Apprendre
Apprendre à construire, niveau par niveau.
Neuf niveaux, du vocabulaire de base à l’exploitation d’un produit. Chaque niveau renvoie à ce qui existe vraiment pour l’apprendre : Build School pour le web, la documentation officielle et les guides de ce site pour Apple et l’IA.
Les niveaux
De zéro à un produit qui tourne.
Sites, applications web, SaaS — avec Build School.
- 0
Les bases de l’ordinateur et du développement
Fichiers et dossiers, terminal, ce qu’est un serveur, une base de données, une API — le vocabulaire qui évite de se perdre.
- 1
Les fondations de la programmation
Variables, fonctions, conditions, collections, types — dans le langage de votre plateforme.
- DisponibleLe manuel TypeScriptMicrosoft
- Build SchoolBuild School N3 — Réduire le périmètre de la V1
- Build SchoolBuild School N4 — Comprendre ton architecture
- 2
Git, GitHub et environnement de développement
Versionner chaque étape, revenir en arrière, travailler avec un agent de code sans perdre le contrôle.
- Build SchoolBuild School N5 — Dépôt + agent de code
- DisponiblePro Git (livre)Git
- 3
Le développement propre à la plateforme
Les écrans, l’état, la navigation et les conventions de votre plateforme.
- Build SchoolBuild School N8 — Le parcours principal
- DisponibleReact — apprendreMeta / React
- 4
Bases de données et backend
Modéliser les données, l’authentification, l’autorisation et les intégrations.
- Build SchoolBuild School N6 — Base de données
- Build SchoolBuild School N7 — Authentification
- Build SchoolBuild School N9 — Autorisation & sécurité
- Build SchoolBuild School N10 — Paiements
- Build SchoolBuild School N11 — Emails
- 5
Déploiement et distribution
Mettre en ligne, distribuer une bêta, soumettre à un store.
- Build SchoolBuild School N15 — Déploiement
- 6
Architecture produit
Où vivent les règles, les données et les responsabilités — et ce qui rend un changement sûr.
- 7
Ingénierie logicielle de production
Tests, sécurité, surveillance des erreurs, préparation au lancement prouvée.
- Build SchoolBuild School N14 — Erreurs & Debug Mode
- Build SchoolBuild School N16 — ShipCheck & Ship Passport
- Build SchoolBuild School N17 — Lancement
- DisponibleShipCheck — votre app est-elle prête pour la production ?
- DisponibleOWASP ASVS (vérification de sécurité)OWASP
- 8
Faire vivre et grandir un produit
Analytics, référencement, retours utilisateurs, rythme des versions.
- Build SchoolBuild School N12 — Analytics
- PrévuBuild School N13 — SEO & métadonnéesPrévu : Début 2027
- PrévuBuild School N18 — Surveiller & améliorerPrévu : Début 2027
Formats
Écrit d’abord, jamais seulement oral.
- Guides écrits pas à pas
- Checklists à cocher
- Exemples de code vérifiés
- Enregistrements d’écran sous-titrés (dans Build School)
- Projets d’entraînement
- Aucune leçon uniquement narrée
Starters
Des points de départ qui existent vraiment.
Un starter n’est marqué disponible que si ses fichiers et ses instructions existent. Les autres sont prévus, et indiqués comme tels.
App SwiftUI de base (iOS)Une liste de tâches : un modèle @Observable partagé par l’environnement, ajout, coche, suppression, état vide.Disponible · iOS 17+
- Prérequis
- Un Mac avec Xcode 26 ou plus récent.
- Versions prises en charge
- iOS 17+
- Variables d’environnement
- Aucune.
- Sécurité
- Aucune donnée ne quitte l’appareil et rien n’est enregistré : les tâches disparaissent à la fermeture. Ajoutez SwiftData pour les garder.
- Licence
- MIT
- Maintenance
- Revu à chaque version majeure de Xcode.
Installation
- Dans Xcode : File → New → Project → iOS → App. Interface : SwiftUI. Nom de votre choix.
- Réglez la cible de déploiement (Minimum Deployments) sur iOS 17 ou plus récent.
- Remplacez tout le contenu du fichier <Nom>App.swift par le code ci-dessous, et supprimez ContentView.swift (le starter le contient).
- Lancez avec ⌘R sur un simulateur, puis sur votre iPhone (un compte Apple gratuit suffit pour tester sur votre appareil).
import SwiftUI
import Observation
@main
struct StarterApp: App {
@State private var store = TaskStore()
var body: some Scene {
WindowGroup {
ContentView()
.environment(store)
}
}
}
struct TaskItem: Identifiable, Hashable {
let id = UUID()
var title: String
var isDone = false
}
@Observable
final class TaskStore {
var items: [TaskItem] = []
func add(_ title: String) {
let trimmed = title.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return }
items.append(TaskItem(title: trimmed))
}
func toggle(_ item: TaskItem) {
guard let index = items.firstIndex(where: { $0.id == item.id }) else { return }
items[index].isDone.toggle()
}
func delete(at offsets: IndexSet) {
items.remove(atOffsets: offsets)
}
}
struct ContentView: View {
@Environment(TaskStore.self) private var store
@State private var draft = ""
var body: some View {
NavigationStack {
List {
Section {
HStack {
TextField("New task", text: $draft)
.onSubmit(addDraft)
Button("Add", action: addDraft)
.disabled(draft.trimmingCharacters(in: .whitespaces).isEmpty)
}
}
Section {
if store.items.isEmpty {
ContentUnavailableView("No tasks yet", systemImage: "checklist", description: Text("Add your first task above."))
}
ForEach(store.items) { item in
Button {
store.toggle(item)
} label: {
Label(item.title, systemImage: item.isDone ? "checkmark.circle.fill" : "circle")
}
.accessibilityValue(item.isDone ? "Done" : "Not done")
}
.onDelete(perform: store.delete)
}
}
.navigationTitle("Tasks")
}
}
private func addDraft() {
store.add(draft)
draft = ""
}
}
#Preview {
ContentView()
.environment(TaskStore())
}
Typechecked: Xcode 27.1 (iOS SDK 27.1, macOS SDK 27.0), Swift 5 and Swift 6 modes — 2026-10-23