Skip to content

Une application de portfolio moderne et complète construite avec la stack T3 (TypeScript, Next.js, tRPC, Prisma), permettant de gérer et présenter de manière professionnelle profils, expériences, formations, compétences et projets.

License

Notifications You must be signed in to change notification settings

milocartal/portfolio

Repository files navigation

Portfolio Personnel

Une application de portfolio moderne et complète construite avec la T3 Stack (TypeScript, Next.js, tRPC, Prisma), permettant de gérer et présenter de manière professionnelle profils, expériences, formations, compétences et projets.

Next.js TypeScript tRPC Prisma Tailwind CSS

📚 Documentation

→ Documentation complète dans /src/app/docs/

✨ Fonctionnalités

  • 📄 Gestion de CV dynamique - Création et personnalisation de CV avec différents thèmes
  • 🔐 Authentification complète - NextAuth.js avec gestion des rôles et permissions
  • ⚡ Administration en temps réel - Interface d'administration pour gérer tous les contenus
  • 📝 Éditeur riche - Intégration de Lexical pour l'édition de contenu markdown
  • 🎨 Interface moderne - Design responsive avec Tailwind CSS et shadcn/ui
  • 🔍 Contrôle d'accès - Système de permissions granulaires avec AccessControl
  • 📊 Gestion des données - Base de données PostgreSQL avec Prisma ORM
  • 🚀 Performance optimisée - Stack Next.js 15 avec Server Components et optimisations

🛠️ Technologies utilisées

Core Stack

  • Next.js 15 - Framework React avec App Router
  • TypeScript - Typage statique pour JavaScript
  • tRPC - API type-safe end-to-end
  • Prisma - ORM moderne pour TypeScript

Base de données

Authentification & Autorisation

UI/UX

Développement

  • ESLint - Linter JavaScript/TypeScript
  • Prettier - Formatteur de code
  • pnpm - Gestionnaire de paquets performant

🚀 Démarrage rapide

Prérequis

Assurez-vous d'avoir installé :

Installation en 5 minutes

1. Cloner le projet

git clone https://github.com/milocartal/portfolio.git
cd portfolio

2. Installer les dépendances

pnpm install

3. Configuration de l'environnement

Créez un fichier .env à la racine du projet :

# Base de données
DATABASE_URL="postgresql://username:password@localhost:5432/portfolio"

# NextAuth.js
AUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# Environnement
NODE_ENV="development"

# Générer AUTH_SECRET
# openssl rand -base64 32

4. Configuration de la base de données

Option A : Base de données locale avec Docker

./start-database.sh


**Option B : Base de données existante**

Assurez-vous que PostgreSQL est installé et configuré, puis mettez à jour `DATABASE_URL` dans `.env`.

#### 5. Initialiser la base de données
Assurez-vous que PostgreSQL est installé et configuré, puis mettez à jour l'URL de connexion.

### 5. Initialiser la base de données

```bash
# Générer le client Prisma
pnpm db:generate

# (Optionnel) Peupler avec des données de test
pnpm seed

6. Lancer l'application


### 6. Lancer l'application

```bash
# Démarrer le serveur de développement
pnpm dev

🎉 L'application est maintenant accessible sur http://localhost:3000

Compte de test : admin@example.com / admin123 (après pnpm seed)


📖 Pour plus de détails : Consultez le Guide de développement complet

📁 Structure du projet

portfolio/
├── src/
│   ├── app/                      # Next.js App Router
│   │   ├── page.tsx              # Page d'accueil
│   │   ├── layout.tsx            # Layout racine
│   │   ├── admin/                # Interface d'administration
│   │   ├── api/                  # Routes API (NextAuth, tRPC)
│   │   ├── docs/                 # 📚 Documentation complète
│   │   └── _components/          # Composants réutilisables
│   │       ├── ui/               # Composants UI (shadcn/ui)
│   │       ├── education/        # Gestion des formations
│   │       ├── experience/       # Gestion des expériences
│   │       ├── skill/            # Gestion des compétences
│   │       ├── lexical/          # Éditeur de texte riche
│   │       └── ...
│   ├── server/                   # Code serveur
│   │   ├── api/                  # Routers tRPC
│   │   ├── auth/                 # Configuration NextAuth
│   │   └── db.ts                 # Client Prisma
│   ├── lib/                      # Modèles et utilitaires
│   ├── utils/                    # Helpers métier
│   └── trpc/                     # Configuration client tRPC

🎯 Fonctionnement

🌐 Interface publique

  • Consultation des CV publics
  • Visualisation des profils, expériences et projets

🔐 Interface d'administration

Accessible via /admin (authentification requise avec rôle admin) :

Module Description
👤 Profil Informations personnelles, coordonnées
💼 Expériences Postes, entreprises, périodes
🎓 Formations Diplômes, écoles, certifications
🛠️ Compétences Technologies, niveaux, catégories
🚀 Projets Portfolio de réalisations
👥 Utilisateurs Gestion des accès et rôles

📄 Système de CV (en développement)

  • Sélection des éléments à inclure
  • Personnalisation de l'ordre des sections
  • Choix du thème de présentation
  • Export et partage

📜 Commandes disponibles

Développement

pnpm dev                 # Démarrer le serveur de développement
pnpm turbo              # Démarrer avec Turbo (expérimental, plus rapide)
pnpm build              # Construire pour la production
pnpm start              # Démarrer en mode production

Base de données

pnpm db:generate        # Générer le client Prisma
pnpm db:push            # Appliquer le schéma à la DB (dev)
pnpm db:migrate         # Créer/appliquer une migration (prod)
pnpm db:studio          # Ouvrir Prisma Studio (interface graphique)
pnpm seed               # Peupler avec des données de test

Qualité du code

pnpm lint               # Vérifier les erreurs de lint
pnpm lint:fix           # Corriger automatiquement
pnpm format:check       # Vérifier le formatage
pnpm format:write       # Formater le code

🤝 Contribution

  1. Forker le projet
  2. Créer une branche feature (git checkout -b feature/nouvelle-fonctionnalite)
  3. Commiter les changements (git commit -m 'Ajout nouvelle fonctionnalité')
  4. Pousser vers la branche (git push origin feature/nouvelle-fonctionnalite)
  5. Ouvrir une Pull Request

📄 Licence

Ce dépôt est public mais n’est pas open source.
Sauf accord écrit, tous droits sont réservés. Aucune réutilisation, modification, redistribution ou exploitation commerciale n’est autorisée.

  • But du dépôt : transparence et démonstration du projet Portfolio.
  • Contributions : ouvrez une issue pour les bugs/retours. Les pull requests externes peuvent être fermées sans examen.
  • Composants tiers : les dépendances sont couvertes par leurs propres licences (voir chaque paquet).

Ce qui est autorisé

  • Lire le code et consulter l’historique des commits.
  • Ouvrir des issues pour signaler un problème ou proposer une idée.

Ce qui est interdit sans accord écrit

  • Réutiliser le code dans un autre projet, public ou privé.
  • Redistribuer, publier des copies ou proposer des builds.
  • Déployer ce code en production ou vendre un service basé dessus.

Pour toute demande de licence ou d’exception : milo.cartal.pro@gmail.com.

Référence : voir le fichier LICENSE.

🆘 Support

Pour toute question ou problème :


Développé avec ❤️ en utilisant la T3 Stack

About

Une application de portfolio moderne et complète construite avec la stack T3 (TypeScript, Next.js, tRPC, Prisma), permettant de gérer et présenter de manière professionnelle profils, expériences, formations, compétences et projets.

Topics

Resources

License

Stars

Watchers

Forks