📍 Paris, FR | 🎓 Étudiant-Apprenti Développeur logiciel ESIEA | 🌐 Portfolio | 💼 LinkedIn
| Écosystème | Outils & Philosophies |
|---|---|
| 🧠 Cerveau | Architectures propres, Design Patterns, Algorithmes clairs et efficaces |
| 🛠 Boîte à outils | C# • PHP • JavaScript/TypeScript • React • Node.js • MySQL/PostgreSQL • Electron • TailwindCSS |
| 🔬 Labo | Automatisation • Optimisation • Débogage extrême • Scripts bash |
| 🌍 Philosophies | Code résilient • UX invisible • "Moins mais mieux" • "Si c’est compliqué, c’est mal conçu" |
(Ce qui me fait me lever à 3h du mat’ — parfois littéralement)
Application bureau WPF + Site web PHP - Synchronisation temps réel
- Développement d'un écosystème synchronisé comprenant :
- 📱 Application bureau WPF pour administrateurs (gestion prestations, créneaux, suivi RDV)
- 🌐 Site web public pour prise de rendez-vous en ligne (Visio ou présentiel)
- 🔄 Synchronisation temps réel via MySQL
- 🎯 Interface intuitive pour gestion complète du cycle de rendez-vous
- Stack : C# • WPF • PHP • HTML5 • CSS • MySQL • Architecture Client-Serveur
- Statut : ✅ Stable
🛠️ Architecture Skyndar
// Exemple gestion des créneaux WPF
public void GenererCreneaux(Prestation prestation, CalendarDay DayInWeek)
{
DateTime Tdate = (DayInWeek != null) ? DayInWeek.Date : new DateTime(currentMonth.Year, currentMonth.Month, 1);
int offset = ((int)Tdate.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
DateTime firstMonday = Tdate.AddDays(-offset);
DateTime lastSunday = firstMonday.AddDays(6);
ObservableCollection<Creneau> existingcreneaux = BDD.GetCreneauxForPrestation(prestation.Id, firstMonday,lastSunday);
ObservableCollection<CalendarDay> existingdayweeks = BDD.GetDayInWeeks(DayInWeek.Date);
DaysInWeeks.Clear();
for (int j = 0; j < 7; j++)
{
DateTime jour = firstMonday.AddDays(j);
CalendarDay jourInDB = existingdayweeks.FirstOrDefault(d => d.Date.Date == jour.Date);
CalendarDay dayVM;
if (jourInDB != null)
{
dayVM = jourInDB;
}
else
{
dayVM = new CalendarDay(0, jour, jour.Day, true);
int newId = BDD.GetOrInsertId(dayVM);
dayVM.Id = newId;
}
DaysInWeeks.Add(dayVM);
}
}Plateforme web dédiée à la cuisine et découverte culinaire :
📚 Gestion complète des recettes (CRUD, commentaires, favoris)
🧠 Quiz multijoueur en temps réel via ngrok
📊 Dashboard personnel avec contenus favoris
📱 Interface responsive adaptée mobile/desktop
🏆 Système de scoring et classement des joueurs
Stack : PHP 8.x • MySQL • JavaScript • HTML/CSS • ngrok • Git
Statut : 🧪 Bêta privée
Repo: Lien
📊 Exemple de quiz
Question: Quel ingrédient manque dans cette recette de carbonara ?
A) Crème fraîche
B) Lardons
C) Œufs (bonne réponse !)
D) Tomates
Backend pour gérer les achats d’items dans les jeux.
Gestion inventaire et transactions sécurisées
Statut: ✅ Stable
Repo: lien
📦 Voir la structure de l'API
// Exemple de route pour voir les item
public class ItemController : ControllerBase
{
private readonly IItemService _itemService;
public ItemController(IItemService itemService)
{
_itemService = itemService;
}
// GET: api/<ItemController>
[HttpGet]
public async Task<IActionResult> GetItems()
{
var result = await _itemService.GetAllItemsAsync();
if (result.Success)
{
return Ok(result);
}
else return StatusCode(result.StatusCode, result);
}
}Site éducatif interactif pour élèves et enseignants.
Articles, livres, ressources pédagogiques
Système de commentaires et likes
Statut: ✅ Actif
🌐 URL : Journal Educatif
📖 Extrait de code PHP
Copier le code
// Récupération des articles récents
$stmt = $pdo->query("SELECT * FROM articles ORDER BY date DESC LIMIT 5");
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);Application desktop pour écouter YouTube.
Lecture en arrière-plan, interface minimaliste
Statut: ✅ Stable
Repo: Lien
🎵 Extrait code Electron
Copier le code
// Création de la fenêtre principale
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
});
mainWindow.loadURL('https://youtube.com');📈 GitHub en Temps Réel
💡 Manifeste Le code raconte une histoire, pas juste fonctionne.
Simplicité > complexité inutile.
Apprendre > savoir.
L’échec est un commit.
La résilience est une compétence : survivre au chaos.
📬 Collaborons ! 💬 Projets fous : [email protected]
🤝 Collaborations : LinkedIn
🐙 Code : GitHub
"Le futur n’est pas une destination, c’est une direction. Et j’aime conduire vite — mais avec un bon GPS et une boîte à outils bien remplie."