Style migration WIP for MUI.
ReviseIQ is a modern flashcard application that helps students learn and revise more effectively using AI-powered flashcards and quizzes.
- AI-powered flashcard generation using Mistral AI
- Quiz mode with multiple choice questions
- Manual flashcard creation
- Public and private decks
- Progress tracking
- Community sharing
- User profiles and achievements
- Responsive design
- React + TypeScript
MUI=> Tailwind + ShadCN- Supabase (Backend & Auth)
- Mistral AI API
- i18n (English/French)
- Node.js (v16+)
- npm
- Supabase account
- Mistral AI API key (VITE_MISTRAL_API_KEY)
- VITE_MISTRAL_API_KEY: API key for Mistral AI
- Supabase URL and Anon Key (configured in Supabase)
-
Domain Layer
- Core business logic
- Entities (
Flashcard
, User, Quiz) - Value Objects
- Aggregates
- Repository interfaces (
FlashcardRepository
)
-
Application Layer
- Use cases (CreateFlashcard, GenerateQuiz, CreateFolder...)
- Application services
- Interfaces
- DTOs => need refactor
-
Infrastructure Layer
- Supabase implementations (e.g. :
SupabaseFlashCardRepository
) - External services (Mistral AI)
- Adapters
- Persistence logic => lang & theme
- Supabase implementations (e.g. :
-
Presentation Layer
- React components
- Pages
- Layouts
- Hooks
- UI state management
- Repository Pattern
- Dependency Injection
- Factory Pattern
- Command Pattern (for use cases)
- Strict mode enabled
- Functional components preferred
- Unit tests with Jest (authentication logic)
- Integration tests with React Testing Library
- Zod validation
- Supabase Auth for authentication
- Role-based access control
- Zod for input validation
- Sanitization
- Code splitting with React.lazy and Suspense
- Memoization
- List virtualization
- Supabase query optimization
- Type-safe data fetching
- AI-powered flashcard generation using Mistral AI
- JSON strict format
- Error handling
- ESLint with TypeScript and React plugins for linting
- Prettier for code formatting
- MUI components for UI elements