Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
5c3994e
feat(assets): add brand logos and favicons for FantasyRealm and Pixel…
pierrick-fonquerne Dec 10, 2025
0416059
fix(frontend): update App.tsx to use new logos instead of vite.svg
pierrick-fonquerne Dec 10, 2025
5d6ae7e
Merge pull request #14 from pierrick-fonquerne/FRO-57-Creer-les-logos…
pierrick-fonquerne Dec 10, 2025
fb0ed8f
ci: add path filtering to optimize build times
pierrick-fonquerne Dec 10, 2025
62f12dd
Merge pull request #15 from pierrick-fonquerne/FRO-58-Optimiser-la-CI…
pierrick-fonquerne Dec 10, 2025
7608978
fix(ci): add fetch-depth: 0 for paths-filter to work on push events
pierrick-fonquerne Dec 10, 2025
2e269a0
Merge pull request #18 from pierrick-fonquerne/fix/ci-paths-filter-fe…
pierrick-fonquerne Dec 10, 2025
553d07c
docs: add charte graphique PDF (FRO-51)
pierrick-fonquerne Dec 11, 2025
edd94ce
Merge branch 'develop' into FRO-51-Charte-graphique
pierrick-fonquerne Dec 11, 2025
0388ffe
Merge pull request #19 from pierrick-fonquerne/FRO-51-Charte-graphique
pierrick-fonquerne Dec 11, 2025
49069cc
docs: add wireframes and mockups to charte graphique (FRO-54)
pierrick-fonquerne Dec 12, 2025
5175d80
Merge pull request #20 from pierrick-fonquerne/FRO-54-Mockups-desktop…
pierrick-fonquerne Dec 12, 2025
5bd3d8c
feat(frontend): implement Design System with Tailwind CSS v4 (FRO-56)
pierrick-fonquerne Dec 12, 2025
0651e91
Merge pull request #21 from pierrick-fonquerne/feature/FRO-56-Design-…
pierrick-fonquerne Dec 12, 2025
238585e
feat(frontend): implement homepage with all sections (FRO-18)
pierrick-fonquerne Dec 12, 2025
4e56b93
test(frontend): add unit tests for layout and HomePage components (FR…
pierrick-fonquerne Dec 12, 2025
d0f5880
Merge pull request #22 from pierrick-fonquerne/FRO-18-Page-d-accueil
pierrick-fonquerne Dec 12, 2025
d5c5b77
fix(a11y): improve color contrast for WCAG 2 AA compliance
pierrick-fonquerne Dec 12, 2025
edd2144
fix(a11y): add main landmark and skip link for keyboard navigation
pierrick-fonquerne Dec 12, 2025
7230df6
Merge branch 'develop' into FRO-18-Page-d-accueil
pierrick-fonquerne Dec 12, 2025
f81309a
Merge pull request #23 from pierrick-fonquerne/FRO-18-Page-d-accueil
pierrick-fonquerne Dec 12, 2025
8c330b0
feat(infra): add Docker Compose local development environment (FRO-60)
pierrick-fonquerne Dec 15, 2025
55f53a6
Merge pull request #24 from pierrick-fonquerne/FRO-60-Environnement-d…
pierrick-fonquerne Dec 15, 2025
1ab43e0
feat(auth): implement user registration endpoint (FRO-2)
pierrick-fonquerne Jan 5, 2026
e9bbec1
feat(auth): implement complete user registration feature (FRO-2)
pierrick-fonquerne Jan 8, 2026
197093a
style(email): redesign email templates with dark fantasy theme (FRO-2)
pierrick-fonquerne Jan 8, 2026
b8ea159
Merge pull request #25 from pierrick-fonquerne/FRO-2-Inscription-util…
pierrick-fonquerne Jan 8, 2026
c59e1ce
test(integration): migrate to Testcontainers with real SQL scripts (F…
pierrick-fonquerne Jan 9, 2026
149e72d
Merge pull request #26 from pierrick-fonquerne/FRO-59-Migrer-les-test…
pierrick-fonquerne Jan 9, 2026
e7a1079
feat(auth): implement user login endpoint with JWT (FRO-10)
pierrick-fonquerne Jan 9, 2026
052ca7f
feat(auth): implement login page and auth context (FRO-10)
pierrick-fonquerne Jan 11, 2026
b75ae12
feat(auth): add dashboard page and header auth state (FRO-10)
pierrick-fonquerne Jan 12, 2026
21ab261
Merge pull request #27 from pierrick-fonquerne/FRO-10-Connexion-utili…
pierrick-fonquerne Jan 12, 2026
ac473bf
feat(auth): implement forgot password with temporary password (FRO-11)
pierrick-fonquerne Jan 12, 2026
5ea047e
feat(auth): implement forgot password page (FRO-11)
pierrick-fonquerne Jan 13, 2026
bc5dab3
fix(auth): normalize DateTime to UTC for PostgreSQL compatibility (FR…
pierrick-fonquerne Jan 14, 2026
4f37f2b
Merge pull request #28 from pierrick-fonquerne/FRO-11-Mot-de-passe-ou…
pierrick-fonquerne Jan 14, 2026
6c80a69
feat(auth): implement change password endpoint (FRO-12)
pierrick-fonquerne Jan 14, 2026
3f96c2c
feat(auth): implement change password modal (FRO-12)
pierrick-fonquerne Jan 15, 2026
b666bcc
refactor(email): move BaseUrl to environment variable and fix header …
pierrick-fonquerne Jan 15, 2026
1e9b844
Merge pull request #29 from pierrick-fonquerne/FRO-12-Changement-mot-…
pierrick-fonquerne Jan 15, 2026
e31afd7
ci: optimize GitHub Actions workflow (FRO-62)
pierrick-fonquerne Jan 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# FantasyRealm Online Character Manager - Environment Variables
# This file is a template. Run ./scripts/install.sh to generate .env with secure passwords.

# PostgreSQL Configuration
POSTGRES_USER=fantasyrealm
POSTGRES_PASSWORD=__POSTGRES_PASSWORD__
POSTGRES_DB=fantasyrealm

# MongoDB Configuration
MONGO_USER=fantasyrealm
MONGO_PASSWORD=__MONGO_PASSWORD__
MONGO_DB=fantasyrealm_logs

# pgAdmin Configuration
PGADMIN_EMAIL=contact@fantasy-realm.com
PGADMIN_PASSWORD=__PGADMIN_PASSWORD__

# Frontend URL (used for email links)
FRONTEND_URL=https://fantasy-realm.com
87 changes: 50 additions & 37 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,37 @@ on:
pull_request:
branches: [main, develop]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
changes:
name: Detect changes
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend }}
frontend: ${{ steps.filter.outputs.frontend }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Detect file changes
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
backend:
- 'src/backend/**'
- '.github/workflows/ci.yml'
frontend:
- 'src/frontend/**'
- '.github/workflows/ci.yml'

backend:
name: Backend (.NET)
needs: changes
if: ${{ needs.changes.outputs.backend == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
Expand All @@ -18,40 +46,31 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Check if backend exists
id: check
run: |
if find . -name "*.sln" -o -name "*.csproj" 2>/dev/null | grep -q .; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
fi
working-directory: src/backend

- name: Setup .NET
if: steps.check.outputs.exists == 'true'
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('src/backend/**/*.csproj') }}
restore-keys: ${{ runner.os }}-nuget-

- name: Restore dependencies
if: steps.check.outputs.exists == 'true'
run: dotnet restore

- name: Build
if: steps.check.outputs.exists == 'true'
run: dotnet build --no-restore --configuration Release

- name: Test
if: steps.check.outputs.exists == 'true'
run: dotnet test --no-build --configuration Release --verbosity normal --filter "Category!=Email"

- name: Skip (no backend yet)
if: steps.check.outputs.exists == 'false'
run: echo "Backend not yet implemented - skipping"

frontend:
name: Frontend (React)
needs: changes
if: ${{ needs.changes.outputs.frontend == 'true' }}
runs-on: ubuntu-latest
defaults:
run:
Expand All @@ -61,44 +80,38 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Check if frontend exists
id: check
run: |
if [ -f "package.json" ]; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
fi
working-directory: src/frontend

- name: Setup Node.js
if: steps.check.outputs.exists == 'true'
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: src/frontend/package-lock.json

- name: Install dependencies
if: steps.check.outputs.exists == 'true'
run: npm ci

- name: Lint
if: steps.check.outputs.exists == 'true'
run: npm run lint

- name: Type check
if: steps.check.outputs.exists == 'true'
run: npm run type-check

- name: Build
if: steps.check.outputs.exists == 'true'
run: npm run build

- name: Test
if: steps.check.outputs.exists == 'true'
run: npm run test -- --passWithNoTests

- name: Skip (no frontend yet)
if: steps.check.outputs.exists == 'false'
run: echo "Frontend not yet implemented - skipping"
ci-success:
name: CI Success
needs: [changes, backend, frontend]
if: always()
runs-on: ubuntu-latest
steps:
- name: Check results
run: |
if [[ "${{ needs.backend.result }}" == "failure" || "${{ needs.frontend.result }}" == "failure" ]]; then
echo "One or more jobs failed"
exit 1
fi
echo "CI passed successfully"
89 changes: 61 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ Application web permettant aux joueurs de :

| Couche | Technologie |
|--------|-------------|
| Frontend | React 18 + TypeScript + Vite |
| Frontend | React 19 + TypeScript + Vite |
| Backend | .NET 8 (ASP.NET Core Web API) |
| BDD Relationnelle | PostgreSQL |
| BDD NoSQL | MongoDB (logs d'activité) |
| BDD Relationnelle | PostgreSQL 18 |
| BDD NoSQL | MongoDB 8.0 (logs d'activité) |
| Conteneurisation | Docker Compose |

## Structure du projet

Expand All @@ -36,58 +37,90 @@ fantasyrealm-character-manager/

## Prérequis

- [Node.js](https://nodejs.org/) 20 LTS
- [.NET SDK](https://dotnet.microsoft.com/download) 8.0
- [PostgreSQL](https://www.postgresql.org/download/) 16
- [MongoDB](https://www.mongodb.com/try/download) 7.0
- [Docker Desktop](https://www.docker.com/products/docker-desktop/) (pour l'environnement local)
- [Node.js](https://nodejs.org/) 20 LTS (pour le développement frontend)
- [.NET SDK](https://dotnet.microsoft.com/download) 8.0 (optionnel, pour le développement backend hors Docker)

## Installation

### 1. Cloner le repository
## Installation rapide (Docker)

```bash
git clone https://github.com/votre-username/fantasyrealm-character-manager.git
# Cloner le repository
git clone https://github.com/pierrick-fonquerne/fantasyrealm-character-manager.git
cd fantasyrealm-character-manager

# Lancer l'installation automatique
./scripts/install.sh
```

### 2. Backend (.NET)
Le script va :
1. Vérifier que Docker est installé et démarré
2. Générer automatiquement des mots de passe sécurisés dans `.env`
3. Démarrer PostgreSQL 18, MongoDB 8.0 et l'API .NET
4. Exécuter les migrations SQL

**Services disponibles après installation :**

| Service | URL |
|---------|-----|
| Frontend | http://localhost:5173 |
| API | http://localhost:5000 |
| Swagger | http://localhost:5000/swagger |
| pgAdmin | http://localhost:5050 |
| PostgreSQL | localhost:5432 |
| MongoDB | localhost:27017 |

## Scripts utilitaires

```bash
cd src/backend
dotnet restore
cp appsettings.Development.example.json appsettings.Development.json
# Configurer les connexions BDD dans appsettings.Development.json
dotnet run --project src/FantasyRealm.Api
./scripts/start.sh # Démarrer l'environnement
./scripts/stop.sh # Arrêter l'environnement
./scripts/logs.sh # Voir les logs (tous les services)
./scripts/logs.sh api # Voir les logs de l'API
./scripts/migrate.sh # Exécuter les nouvelles migrations SQL
./scripts/reset-db.sh # Réinitialiser les bases de données
```

L'API sera disponible sur `http://localhost:5000`

### 3. Frontend (React)
## Développement Frontend

```bash
cd src/frontend
npm install
cp .env.example .env.local
# Configurer l'URL de l'API dans .env.local
npm run dev
```

L'application sera disponible sur `http://localhost:5173`

### 4. Base de données
## Installation manuelle (sans Docker)

<details>
<summary>Cliquer pour voir les instructions manuelles</summary>

### Prérequis

- [PostgreSQL](https://www.postgresql.org/download/) 18
- [MongoDB](https://www.mongodb.com/try/download) 8.0

### Backend (.NET)

```bash
cd src/backend
dotnet restore
# Configurer les connexions BDD dans appsettings.Development.json
dotnet run --project src/FantasyRealm.Api
```

### Base de données

```bash
# PostgreSQL - Créer la base de données
createdb -U postgres fantasyrealm

# Exécuter les scripts SQL
psql -U postgres -d fantasyrealm -f database/sql/001_create_tables.sql
psql -U postgres -d fantasyrealm -f database/sql/002_seed_data.sql

# MongoDB - Initialiser les collections
mongosh fantasyrealm database/mongodb/init.js
psql -U postgres -d fantasyrealm -f database/sql/001_initial_schema.sql
```

</details>

## Commandes utiles

### Frontend
Expand Down
Empty file removed database/sql/.gitkeep
Empty file.
Loading