Structure du projet et stack technique

Prérequis

Avant de lire cette page, assurez-vous d'avoir un premier Portal en fonctionnement en suivant le Démarrage rapide de l'AI Portal.

L'essentiel du développement quotidien peut être laissé à l'IA. Connaître la structure du modèle vous permet toutefois de vérifier si l'IA a placé son code au bon endroit, et facilite la localisation des problèmes.

Stack technique

Le modèle de Portal est basé sur @nocobase/portal-template-default, dont le code source se trouve sur nocobase/portal-template-default.

TechnologieRôle
React 19 + TypeScriptFramework front-end
ViteServeur de développement et outil de build
RefineFramework de couche données, qui gère les ressources, le routage, les formulaires et les permissions
Tailwind CSS 4Styles
shadcn/uiBase de composants, dont le code source appartient au projet
lucideBibliothèque d'icônes
pnpmGestionnaire de paquets

Cette combinaison est la stack front-end que l'IA maîtrise le mieux aujourd'hui, ce qui rend son code plus juste.

Le Portal est pour l'instant un projet purement front-end, la logique métier passant par l'API de NocoBase, les composants standard, etc. La possibilité de faire écrire du code back-end de Portal à l'AI Agent arrive prochainement.

Structure des répertoires

src/
├── app/            Routage et chargement des extensions
├── pages/          Connexion, inscription, mot de passe oublié, etc.
├── components/     Composants
│   ├── ui/         Base de composants shadcn/ui
│   ├── app-shell/  Mise en page, navigation, états de chargement
│   ├── auth/       Composants d'authentification
│   └── ...
├── extensions/     Extensions, actives une fois installées
├── lib/            Wrapper du client NocoBase et logique ACL
├── providers/      Providers Refine
├── hooks/          Hooks personnalisés
└── locales/        Textes localisés

Quelques emplacements clés :

  • src/app/routes.tsx — structure des routes. Les routes authentifiées et non authentifiées sont séparées, et les routes apportées par les extensions sont montées automatiquement
  • src/app/extensions.tsx — chargement des extensions, via import.meta.glob qui parcourt src/extensions/*/extension.tsx
  • src/providers/data.ts — le data provider de Refine, qui traduit la syntaxe de requête de Refine en paramètres d'API NocoBase
  • src/lib/nocobase/client.tsNocoBaseClient, le wrapper bas niveau derrière chaque requête
  • src/components/ui/ — une soixantaine de composants shadcn/ui, prêts à l'emploi

Les pages métier vont généralement sous src/extensions/, un répertoire par module fonctionnel. Voir Composants standard et extensions.

Fichiers clés

FichierRôle
AGENTS.mdConventions de développement destinées à l'AI Agent. Vous pouvez y ajouter les règles propres à votre projet
components.jsonConfiguration shadcn/ui, dont le style, la bibliothèque d'icônes et les alias de chemins
.env / .env.localVariables d'environnement, actualisées automatiquement par nb portal dev et deploy
vite.config.tsConfiguration de build, dont le proxy d'API utilisé pendant le développement

Variables d'environnement

VariableDescription
NOCOBASE_API_URLRacine de la REST API NocoBase, doit se terminer par /api. Généralement /api pour les déploiements de même origine
NOCOBASE_PORTAL_BASEChemin public sur lequel le Portal est monté. / en développement local, le chemin de déploiement réel comme /x/main/ pour les builds
NOCOBASE_AUTHENTICATORNom de l'authenticator, basic par défaut
NOCOBASE_API_TOKENToken temporaire pour le développement. N'y commitez pas de valeur réelle
API_CLIENT_STORAGE_PREFIXPréfixe de stockage du token. À aligner si le serveur le personnalise
API_CLIENT_STORAGE_TYPEMode de stockage du token, localStorage par défaut
API_CLIENT_SHARE_TOKENIndique si le token est partagé, false par défaut

nb portal dev et nb portal deploy les écrivent pour vous, vous n'avez donc généralement pas à y toucher. Les trois dernières n'ont besoin d'être alignées que si le serveur a personnalisé le stockage des tokens d'authentification.

Pendant le développement, si NOCOBASE_API_URL est une adresse absolue, Vite met en place un proxy pour relayer les requêtes, ce qui vous évite d'avoir à gérer le CORS vous-même.

Commandes courantes

Voici celles que vous utiliserez au quotidien. L'installation des dépendances, l'actualisation des variables d'environnement et les builds sont pris en charge par la CLI en arrière-plan :

CommandeRôle
nb portal listVoir les Portals de l'application courante
nb portal info <portal>Consulter le chemin de développement, le chemin de déploiement et l'URL d'accès d'un Portal
nb portal create <portal>Créer l'espace de travail de développement d'un nouveau Portal à partir du modèle
nb portal pull <portal>Récupérer le code source distant du Portal dans l'espace de travail de développement local
nb portal dev <portal>Démarrer le serveur de développement local et voir les modifications en direct
nb portal push <portal>Pousser les modifications locales du code source vers le distant
nb portal deploy <portal>Construire et déployer, pour rendre les modifications visibles aux utilisateurs
nb portal config <portal>Ajuster le source storage, les réglages Git et le chemin de l'espace de travail de développement
nb portal destroy <portal>Supprimer l'enregistrement du Portal et ses fichiers déployés

Pour les paramètres complets de chaque commande, consultez la Référence des commandes nb portal.

Où se trouve l'espace de travail de développement

L'espace de travail de développement d'un Portal est créé dans le répertoire où vous vous trouviez au moment d'exécuter nb portal create ou nb portal pull :

./<portal>

Vous pouvez indiquer un autre emplacement avec --path au moment de la création ou de la récupération. Les artefacts de déploiement construits vont ailleurs — sous le storage de l'application cible, maintenus en synchronisation par nb portal deploy, et dont vous n'avez normalement pas à vous occuper.

Si vous ne savez plus où se trouve l'espace de travail de développement d'un Portal, il suffit de le consulter :

nb portal info main

Liens connexes