.NET
Le projet CRUD que j'ai construit pour avoir quelque chose à montrer aux recruteurs
Inspiré d'un coding assessment qu'André Baltieri (Balta) fait passer aux candidats, j'ai construit une app CRUD de Student et d'abonnement Premium avec une vraie auth en quelques jours, puis passé le temps gagné sur ce qui rend vraiment un projet fini.
Je voulais un projet vers lequel je pouvais renvoyer des recruteurs qui soit vraiment terminé, pas une nouvelle idée à moitié construite qui traîne dans un repo quelque part. L'idée est venue d'une vidéo d'André Baltieri, de Balta, qui parcourait un coding assessment qu'il fait passer aux candidats pour un poste chez Balta.io : construire une app complète de gestion de Student et d'abonnement Premium avec authentication en ASP.NET Core, rendue en quelques jours.
Pourquoi j'ai construit la même chose
Tout l'intérêt de Balta dans cette vidéo, c'était que finir quelque chose de simple et qui fonctionne bat une version inachevée et over-engineered de quelque chose d'ambitieux. Ça correspondait exactement à ce dont j'avais besoin pour une pièce de portfolio, donc j'ai construit le même brief pour moi-même : une app CRUD de Student et d'abonnement Premium, une vraie auth, rien d'exotique.
Ce qui a vraiment rendu ça rapide
J'ai utilisé l'Identity intégré d'ASP.NET Core au lieu d'écrire ma propre authentication à partir de zéro :
dotnet new razor -au Individual
Ce seul flag -au Individual monte un système d'identity local complet, inscription, connexion, déconnexion, et cookies persistants, sans que je touche à une implémentation JWT.
Pour les models Student et Premium, je me suis appuyé sur les data annotations au lieu d'écrire une logique de validation séparée :
public class Student
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "Full Name is required")]
[StringLength(80, MinimumLength = 5)]
public string Name { get; set; } = string.Empty;
[Required]
[EmailAddress]
public string Email { get; set; } = string.Empty;
public List<Premium> Premiums { get; set; } = new();
}
Un seul attribute sur le model gère à la fois la constraint de database et la validation du formulaire sur la page, sans JavaScript supplémentaire ni vérifications manuelles d'un côté comme de l'autre.
L'autre gros gain de temps a été le scaffolding. Le générateur de code de Microsoft peut construire l'ensemble complet des pages CRUD directement contre EF Core :
dotnet tool install -g dotnet-aspnet-codegenerator
dotnet aspnet-codegenerator razorpage Create Create -m Student -dc ApplicationDbContext -sqlite -udl -outDir Pages/Students
Ça a généré les views, les handlers de formulaire, et les appels de save pour Create, Edit, Delete, Details, et la list view en quelques minutes au lieu d'heures.
Ce que j'ai fait du temps gagné
Une fois le CRUD et l'auth de base en place, j'ai passé le reste du temps sur les parties qui font vraiment qu'un projet a l'air fini plutôt que scaffolded : nettoyer le code généré et les noms, styliser l'UI correctement au lieu de garder l'apparence Bootstrap par défaut, alimenter le database pour qu'il ne soit pas vide la première fois que quelqu'un l'ouvrirait, et ajouter des tests autour des endpoints principaux.
Ce que j'en ai retenu
La vraie leçon, c'est qu'un projet petit et complet en dit plus à un recruteur qu'un plus gros à moitié fait, et le format d'assessment de Balta est une bonne façon de s'imposer cette contrainte à soi-même.