Nano Banana Pro
Agent skill for nano-banana-pro
This is a multi-tenant Krav Maga academy management system built with TypeScript/Fastify backend and modular vanilla JavaScript frontend. The architecture emphasizes API-first design, modular isolation, and full-screen UI patterns.
Sign in to like and favorite skills
This is a multi-tenant Krav Maga academy management system built with TypeScript/Fastify backend and modular vanilla JavaScript frontend. The architecture emphasizes API-first design, modular isolation, and full-screen UI patterns.
AcademyApp class in /public/js/core/app.jsloadModules() array: ['students', 'classes', 'financial', 'attendance', 'dashboard']window.myModuleName = myModule;window.app.dispatchEvent('module:loaded', { name: 'myModule' })window.app.handleError(error, context)/public/js/modules/[module]/ModuleLoader for safe integration - never modify core files directly.module-isolated-* prefixes in /public/css/modules//public/js/modules/students/) as the reference implementationEvery module MUST use the centralized API client:
// Initialize API helper let moduleAPI = null; async function initializeAPI() { await waitForAPIClient(); moduleAPI = window.createModuleAPI('ModuleName'); } // Use fetchWithStates for automatic UI states await moduleAPI.fetchWithStates('/api/endpoint', { loadingElement: document.getElementById('container'), onSuccess: (data) => renderData(data), onEmpty: () => showEmptyState(), onError: (error) => showErrorState(error) });
.module-header-premium with breadcrumb navigation.stat-card-enhanced with hover effects and gradients.data-card-premium, .module-filters-premiumstudents, lesson-plans, activities, courses, instructors, payments/* Premium classes from Guidelines.MD */ .module-header-premium { background: linear-gradient(135deg, var(--color-surface) 0%, var(--color-background) 100%); } .stat-card-enhanced { background: var(--gradient-primary); transition: var(--transition-bounce); } .data-card-premium { background: linear-gradient(135deg, var(--color-surface) 0%, var(--color-background) 100%); } /* Design tokens */ --primary-color: #667eea; --secondary-color: #764ba2; --gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
Guidelines.MD and docs/CurrentArchitecture.mdpublic/js/core/app.js for existing module integration patternssrc/routes/ before implementing UICLAUDE.md for project-specific conventionsnpm run dev (TypeScript server with PostgreSQL + Prisma)npm run test (Vitest)npm run db:studio (Prisma Studio)src/routes/[entity].ts - Follow FastifyJS patternssrc/controllers/[entity]Controller.ts - Use ResponseHelperprisma/schema.prisma@/ imports (configured in tsconfig.json)public/js/shared/api-client.js - Centralized API accessindex.js and follows MVC patternpublic/js/shared/state-manager.js for caching/public/js/modules/[module]/ ├── index.js # Main entry point ├── controllers/ # MVC controllers ├── services/ # Business logic ├── views/ # HTML templates └── components/ # Reusable UI components
"João Silva", "R$ 149,90", "Prof. Marcus"){ success: true, data: [] }"João Silva", "R$ 149,90" forbidden).module-header-premium, .stat-card-enhanced (not .module-header)window.app.handleError()Before submitting code, verify:
AcademyApp.loadModules() array.module-header-premium with breadcrumb navigation.stat-card-enhanced with hover effectsfetchWithStateswindow.app.handleError()Before submitting code:
npm run test and npm run lintThis codebase has extensive AI integration with prompt management in
.github/prompts/. The system uses:
When implementing AI features, follow the patterns in
src/services/aiService.ts and maintain API-first principles.
npm run dev/public/js/modules/ for patternsRemember: This system prioritizes stability and modularity. Always isolate new functionality and follow established patterns rather than creating new approaches.