# Full Stack Form

Application complète de gestion des utilisateurs avec authentification JWT, construite avec React (frontend) et Python FastAPI (backend).

## 🌟 Fonctionnalités

- **Authentification JWT** : Connexion/inscription sécurisée
- **Gestion des utilisateurs** : CRUD complet avec rôles (admin/utilisateur)
- **Interface moderne** : Design responsive avec Lucide React
- **Tests complets** : Jest + Cypress E2E
- **Déploiement automatique** : Backend sur Vercel, Frontend sur GitHub Pages

## 🚀 Déploiement

- **Frontend** : https://sinclqir.github.io/full-stack-form
- **Backend** : https://full-stack-form-server.vercel.app

## 📦 Installation

```bash
npm install full-stack-form
```

## 🛠️ Développement local

### Prérequis
- Node.js >= 18
- Python >= 3.8
- MySQL

### Frontend
```bash
# Installer les dépendances
npm install

# Démarrer en mode développement
npm run dev

# Build pour production
npm run build

# Tests
npm test
npm run cypress:run
```

### Backend
```bash
cd server

# Installer les dépendances Python
pip install -r requirements.txt

# Démarrer le serveur
python main.py
```

## 🏗️ Architecture

```
full-stack-form/
├── src/                    # Frontend React
│   ├── pages/             # Pages de l'application
│   ├── config/            # Configuration API
│   └── assets/            # Ressources statiques
├── server/                # Backend Python FastAPI
│   ├── main.py           # Point d'entrée API
│   ├── auth.py           # Authentification JWT
│   ├── models.py         # Modèles de données
│   └── database.py       # Configuration base de données
├── cypress/              # Tests E2E
└── .github/workflows/    # CI/CD GitHub Actions
```

## 🔧 Configuration

### Variables d'environnement

#### Frontend
```env
VITE_API_URL=https://full-stack-form-server.vercel.app
```

#### Backend
```env
MYSQL_HOST=localhost
MYSQL_DATABASE=fullstackform_db
MYSQL_USER=root
MYSQL_PASSWORD=your_password
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin_password
JWT_SECRET_KEY=your_secret_key
```

## 🧪 Tests

```bash
# Tests unitaires
npm test

# Tests E2E
npm run cypress:run

# Couverture de code
npm run test:coverage
```

## 📚 API Endpoints

- `POST /register` - Inscription utilisateur
- `POST /login` - Connexion utilisateur
- `GET /users` - Liste des utilisateurs (admin)
- `GET /public-users` - Liste publique des utilisateurs
- `DELETE /users/{id}` - Supprimer un utilisateur (admin)

## 🤝 Contribution

1. Fork le projet
2. Créer une branche feature (`git checkout -b feature/AmazingFeature`)
3. Commit les changements (`git commit -m 'Add some AmazingFeature'`)
4. Push vers la branche (`git push origin feature/AmazingFeature`)
5. Ouvrir une Pull Request

## 📄 Licence

Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.

## 👨‍💻 Auteur

**sinclqir**
- GitHub: [@sinclqir](https://github.com/sinclqir)

## 🙏 Remerciements

- [React](https://reactjs.org/)
- [FastAPI](https://fastapi.tiangolo.com/)
- [Vite](https://vitejs.dev/)
- [Cypress](https://www.cypress.io/)
- [Lucide React](https://lucide.dev/) 