-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ajout des instructions personnalisées pour Copilot et configuration d…
…es workflows CI/CD
- Loading branch information
1 parent
c3b0cd4
commit abc91b3
Showing
4 changed files
with
265 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
|
||
# Custom Instructions for Copilot | ||
|
||
## General Instructions | ||
|
||
- **Naming**: Use explicit names for variables and functions. | ||
- **Structure**: Ensure modular and well-organized architecture. | ||
- **Security**: Protect against vulnerabilities such as XSS, CSRF, and others. | ||
- **SOLID**: Adhere to SOLID principles. | ||
- **Imports**: When generating code, add the import if it is missing. | ||
|
||
## Front-end Instructions | ||
|
||
- **User Friendly**: Intuitive, easy-to-use, and modern interface. | ||
- **Accessibility**: WAG 2.1.1 (A) - Interactive components are keyboard accessible. | ||
- **Responsive Design**: Mobile First approach. | ||
- **Performance**: Lighthouse score of 90+. | ||
- **SEO**: Use HTML5 semantic tags and metadata. Implement sitemap, robots.txt, Open Graph, Twitter Card, etc. | ||
- **Internationalization**: Support for American English and French with i18n. | ||
- **CSS Framework**: Bootstrap 5. | ||
- **JavaScript Framework**: Vue.js 3 (Composition API). | ||
- **Tests**: Jest. | ||
- **Design Pattern**: Atomic Design. | ||
- **Type Checking**: TypeScript. | ||
- **UI**: Modern and minimalist. | ||
|
||
## Back-end Instructions | ||
|
||
- **REST API**: Follow REST principles and best practices. | ||
- **Tests**: Unit tests with pyTest and 80% code coverage. | ||
- **Exception Handling**: Proper exception management. Add comments to list possible causes of exceptions and always provide clear error messages. | ||
- Explicitly re-raise using `raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail='An error occurred while checking login attempts') from e`. | ||
- Explicitly re-raise using `except Exception as exc` and `raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='Token has expired') from exc`. | ||
- **Validation**: Validate input and output data with Pydantic V2. | ||
- **ORM**: Use SQLAlchemy V2. | ||
- **Dependencies**: Use Poetry for dependency management. | ||
- **Naming Conventions**: Follow PEP8 naming conventions. | ||
- **Logger**: Use the singleton logger from `from app.core.logger_config import logger` for logging. | ||
|
||
### Architecture | ||
|
||
- Separation of concerns: Use a layered architecture (Controllers, Services, Repositories). | ||
- Centralized session management. | ||
- Dependency injection. | ||
- Consistent use of HTTP status codes. | ||
|
||
## Pydantic Schema | ||
|
||
- Class Naming: `ModelNameSchema`. | ||
- Link with Postgres: | ||
|
||
```python | ||
model_config = {"from_attributes": True} | ||
``` | ||
|
||
- Add necessary validations: | ||
|
||
```python | ||
from pydantic import BaseModel, Field, field_validator | ||
|
||
@field_validator('coach_apply_date', mode='before') | ||
@classmethod | ||
def parse_coach_date(cls, value): | ||
... | ||
``` | ||
|
||
## API Endpoints | ||
|
||
- Example of a standard route: | ||
|
||
```python | ||
from fastapi import APIRouter, HTTPException, status | ||
from sqlalchemy.exc import IntegrityError | ||
|
||
@router.delete( | ||
"/themes/{theme_id}", | ||
status_code=status.HTTP_204_NO_CONTENT, | ||
response_model=None, | ||
responses={ | ||
404: {"description": "Theme not found"}, | ||
403: {"description": "Not enough permissions"}, | ||
409: {"description": "Theme cannot be deleted - has dependencies"} | ||
} | ||
) | ||
@role_required(UserRole.COACH) | ||
async def delete_theme( | ||
theme_id: int, | ||
db: AsyncSession = Depends(get_db), | ||
current_user: User = Depends(get_current_user) | ||
): | ||
try: | ||
await theme_service.delete(theme_id) | ||
except IntegrityError: | ||
raise HTTPException( | ||
status_code=status.HTTP_409_CONFLICT, | ||
detail="Theme cannot be deleted as it has associated content" | ||
) | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
name: CI | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
workflow_dispatch: | ||
|
||
permissions: | ||
contents: read | ||
pages: write | ||
id-token: write | ||
|
||
jobs: | ||
lint-and-build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '20' | ||
cache: 'npm' | ||
|
||
- name: Install dependencies | ||
run: npm install | ||
|
||
- name: Run linter | ||
run: npm run lint | ||
|
||
- name: Build Project | ||
run: npm run build | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
name: Deploy to GitHub Pages | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
workflow_dispatch: | ||
|
||
permissions: | ||
contents: read | ||
pages: write | ||
id-token: write | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '20' | ||
cache: 'npm' | ||
|
||
- name: Setup Pages | ||
uses: actions/configure-pages@v5 | ||
|
||
- name: Install dependencies | ||
run: npm ci | ||
|
||
- name: Build project | ||
run: npm run build | ||
|
||
- name: Upload artifact | ||
uses: actions/upload-pages-artifact@v3 | ||
with: | ||
path: './dist' | ||
|
||
deploy: | ||
needs: build | ||
runs-on: ubuntu-latest | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
|
||
steps: | ||
- name: Deploy to GitHub Pages | ||
id: deployment | ||
uses: actions/deploy-pages@v4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,81 @@ | ||
# json-template-generator | ||
# JSON Template Generator | ||
|
||
[Edit in StackBlitz next generation editor ⚡️](https://stackblitz.com/~/github.com/MovingLive/json-template-generator) | ||
Un générateur de modèles JSON interactif et intuitif développé avec React et TypeScript. | ||
|
||
## 🌟 Caractéristiques | ||
|
||
- Génération automatique de modèles JSON à partir de données existantes | ||
- Interface utilisateur moderne et réactive | ||
- Support du glisser-déposer pour les fichiers JSON | ||
- Validation JSON en temps réel | ||
- Copie en un clic et export des modèles générés | ||
- Interface responsive et accessible | ||
|
||
## 🔍 Architecture | ||
|
||
```mermaid | ||
graph TB | ||
UI[Interface Utilisateur] | ||
JsonInput[Composant JsonInput] --> UI | ||
JsonOutput[Composant JsonOutput] --> UI | ||
Utils[jsonUtils] --> UI | ||
Types[Types JSON] --> UI | ||
JsonInput --> Types | ||
JsonOutput --> Types | ||
Utils --> Types | ||
style UI fill:#ddf,stroke:#333 | ||
style JsonInput fill:#fdd,stroke:#333 | ||
style JsonOutput fill:#fdd,stroke:#333 | ||
style Utils fill:#dfd,stroke:#333 | ||
style Types fill:#ffd,stroke:#333 | ||
``` | ||
|
||
## 🚀 Démarrage Rapide | ||
|
||
### Installation | ||
|
||
### Développement | ||
|
||
### Production | ||
|
||
## 🛠️ Technologies | ||
|
||
- React 18 | ||
- TypeScript | ||
- Tailwind CSS | ||
- Vite | ||
- Lucide React Icons | ||
|
||
## 📚 Structure du Projet | ||
|
||
## 🔄 Flux de Travail | ||
|
||
1. Entrez ou uploadez votre JSON source | ||
2. Vérification automatique de la validité | ||
3. Génération du modèle avec types préservés | ||
4. Export ou copie du résultat | ||
|
||
## 🌐 Demo en Ligne | ||
|
||
- Editer sur StackBlitz ⚡️ | ||
|
||
## 📦 Scripts Disponibles | ||
|
||
- `npm run dev` - Lance le serveur de développement | ||
- `npm run build` - Compile pour la production | ||
- `npm run lint` - Vérifie le code | ||
- `npm run preview` - Prévisualise la version de production | ||
|
||
## 🤝 Contribution | ||
|
||
1. Forkez le projet | ||
2. Créez votre branche (`git checkout -b feature/AmazingFeature`) | ||
3. Commitez vos changements (`git commit -m 'Add some AmazingFeature'`) | ||
4. Poussez vers la branche (`git push origin feature/AmazingFeature`) | ||
5. Ouvrez une Pull Request | ||
|
||
## 📝 Licence | ||
|
||
Distribué sous la licence MIT. Voir LICENSE pour plus d'informations. |