# Évolutions de Queen
Les objectifs sont de moderniser Queen pour améliorer ça maintenabilité, ses performances et intégrer la nouvelle version de Lunatic
## Les choses à faire
- [ ] Découper le code pour aller vers une clean architecture
```
public
|_index.html
|_favicon.ico
src
|_ui
|_routes
|_components
|_pages
|_shared
|_assets
|_coreApi
|-coreProvider.tsx
|-index.ts
|_index.tsx
|_theme.tsx
|_core (exclusively .ts file)
|_ports
|_adapter
...
index.ts
|_i18n
index.ts
package.json
yarn.lock.json
tsconfig.json
.prettierrc.js
.eslintrc.js
.gitignore
Dockerfile
README.md
LICENSE
.env
.env.local
```
Pas de dépendances à React dans `core`
- [ ] Réfléchir à la gestion des états
- [ ] Propositions :
- [ ] utiliser [React Query](https://tanstack.com/query/v4/docs/quick-start)
- [ ] utiliser [Zustand](https://github.com/pmndrs/zustand)
- [ ] utiliser un autre state manager
- [ ] Refactoring importants pour mieux gerer l'asynchrone
- [ ] Refactoring de la partie authentification -> Port/Adapter comme [ici](https://github.com/InseeFr/Stromae/blob/v2-master/src/utils/keycloak/keycloakOidcClient.js#L12)
- :warning: Attention que Queen et Pearl ne se marchent dessus
- [ ] Refactoring de la partie API -> pareil aller vers un client [type](https://github.com/ddecrulle/Knowledge/blob/main/src/core/api/createApiClient.js)
- [ ] Améliorer la synchronisation (pas de hook de synchronisation)
- [ ] Améliorer l'implémentation de la couche d'accès à la bdd du navigateur
- [ ] Enlever le Shadow Dom visible [ici](https://github.com/InseeFr/Queen/blob/master/src/components/app/app.js#L30)
- :warning: Faire attention aux sucharges de styles de pearl et lunatic
- [ ] Montée de version des dépendances : React 18, mui 5, react router 6, Dexie ...
- [ ] Refondre l'orchestrateur pour intégrer la nouvelle version de Lunatic
- [ ] Améliorer le build de Queen,
- [ ] le fichier `public/entry.js` dans public qui ajoute QUEEN_URL dans le local storage pour récupérer les réssources statiques en mfe n'est pas très acceptable
- [ ] Tracker les rerender fautifs
- [ ] Revoir le model de données des paradatas (ne plus avoir de doublons)
- [ ] Mieux gerer les ref des componsants (pour pouvoir naviguer au clavier avec les tabulations)
- [ ] Améliorer l'accessibilité ?