Files
LearnIT/docs/CHANGELOG.md

17 KiB

Change Log - AI Study Assistant

📝 VERSION HISTORY


[Unreleased]

Added

  • Teacher Materials Page (Upload Conteúdo) - Nova tela dedicada para upload de materiais para a IA

    • Novo ficheiro: lib/features/materials/presentation/pages/teacher_materials_page.dart
    • Acedida através do card "Upload Conteúdo" no dashboard do professor (usando Navigator.push)
    • Funcionalidades:
      • Visualização de materiais já enviados via StreamBuilder do Firestore
      • Lista com ícones do tipo (PDF = vermelho, Imagem = azul)
      • Formato de data: dd/MM/yyyy HH:mm
      • Estados: loading, empty, error
    • Upload de ficheiros:
      • FloatingActionButton "Adicionar" com bottom sheet de opções
      • PDF: seleção via file_selector (packages: file_selector: ^1.0.3)
      • Imagem da Galeria: via image_picker (ImageSource.gallery)
      • Foto da Câmara: via image_picker (ImageSource.camera)
    • Firebase Integration:
      • Upload para Firebase Storage: materials/{teacherId}/{timestamp}_{filename}
      • Documento Firestore na coleção materials com campos: teacherId, fileName, fileUrl, type, createdAt, storagePath
      • Query filtrada por teacherId e ordenada por createdAt descendente
    • UX:
      • Snackbars de feedback (sucesso verde, erro vermelho)
      • Loading indicator no FAB durante upload
      • Design consistente com o dashboard (AppBar teal #82C9BD, gradiente)
  • Student Classes List (ETAPA 5) - Students can now view their enrolled classes on the home page

    • New StudentClassesListWidget at /lib/features/dashboard/presentation/widgets/student_classes_list_widget.dart
    • Query: .collection('enrollments').where('studentId', isEqualTo: currentUser.uid).orderBy('joinedAt', descending: true)
    • For each enrollment, fetches corresponding class document from classes collection using classId
    • Layout: Same horizontal 2-row scroll pattern as TeacherClassesListWidget
    • Cards display: Class name + Class code
    • Loading state: CircularProgressIndicator (centered in card while loading class data)
    • Empty state: Text "Ainda não entraste em nenhuma turma."
    • Widget inserted in StudentDashboardPage after QuickAccessWidget
    • Visual design: White cards (#FFFFFF), teal icon background (#82C9BD with 10% opacity), rounded corners (16px), subtle shadows
    • Title: "As Minhas Turmas" (same style as teacher dashboard)
    • System now bidirectional: Teachers see students, Students see classes
  • Join Class Feature (ETAPA 4) - Students can now join classes using class codes

    • New JoinClassPage screen at /lib/features/classes/presentation/pages/join_class_page.dart
    • TextField for entering 6-character class code (uppercase, centered, letter-spacing)
    • "Entrar na Turma" button with loading state and visual feedback
    • Firestore query: .collection('classes').where('code', isEqualTo: enteredCode).limit(1)
    • Validation: checks if code exists, if student already enrolled
    • On success: creates document in enrollments collection with classId, studentId, studentName, joinedAt
    • Success feedback: green SnackBar "Entraste na turma com sucesso!"
    • Error feedback: red SnackBar for invalid code, duplicate enrollment, or auth errors
    • Auto-returns to student home after successful join
    • Visual design: teal AppBar (#82C9BD), centered icon, clean input field with rounded corners
    • New "Entrar numa Turma" card in Student Dashboard Quick Access section
    • Card design: horizontal layout with Icons.group_add, white background, rounded corners
  • Class Students View (ETAPA 3) - Teachers can now view enrolled students in each class

    • New ClassStudentsPage screen at /lib/features/classes/presentation/pages/class_students_page.dart
    • StreamBuilder query on enrollments collection with filter by classId
    • ListTile layout showing student name and join date
    • Loading state with CircularProgressIndicator
    • Empty state message when no students enrolled
    • Date formatting using intl package (dd/MM/yyyy format)
    • Consistent styling with existing app design (teal colors, rounded cards)
    • Navigation via MaterialPageRoute from class card tap
  • Class Creation Feature (ETAPA 1) - Teachers can now create classes from the dashboard

    • New "Criar Turma" button in Teacher Dashboard Quick Actions
    • Simple dialog interface for entering class name
    • Automatic generation of 6-character unique class codes (A-Z, 0-9)
    • Firestore integration saving class data (name, teacherId, code, timestamp)
    • Visual feedback with loading indicator and success/error messages
  • Classes List Display (ETAPA 2) - Teachers can now view their created classes

    • New "As Minhas Turmas" section in Teacher Dashboard
    • Real-time StreamBuilder to fetch classes from Firestore
    • CORREÇÃO: O erro anterior foi tentar usar GridView horizontal para um layout que exige colunas fixas
    • SOLUÇÃO: Usar ListView.builder com scrollDirection: Axis.horizontal
    • Cada item do ListView é uma Column contendo 2 cards (índice * 2 e índice * 2 + 1)
    • Cards mantêm exatamente o mesmo tamanho e estilo da lista vertical original
    • Layout: Card 1, 3, 5... (top row) | Card 2, 4, 6... (bottom row)
    • Scroll horizontal para visualizar todas as turmas
    • Visual cards showing class name and access code
    • Empty state message when no classes exist
    • Loading state with CircularProgressIndicator

Fixed

  • Unified Quick Action Cards Text Style

    • "Upload Conteúdo" and "Criar Quiz" cards now match "Criar Turma" text alignment
    • All cards use Column with crossAxisAlignment: CrossAxisAlignment.start for text section
    • Subtitle text supports 2 lines with maxLines: 2 and height: 1.2
    • Consistent typography: title fontSize 16, subtitle fontSize 12
    • "Criar Quiz" subtitle changed to "Avaliações interativas"
  • Pixel Overflow in Classes List Widget

    • Causa: Tentativa de usar GridView horizontal para layout de colunas fixas
    • Solução: Substituir por ListView.builder com scrollDirection: Axis.horizontal
    • Cada item do ListView é uma Column com 2 cards (índice * 2 e índice * 2 + 1)
    • Cards mantêm tamanho original da lista vertical (sem constraints artificiais)
    • Altura do SizedBox: 280 pixels (suficiente para 2 cards + spacing)
  • Pixel Overflow in Teacher Dashboard Cards

    • Replaced fixed height constraints with flexible BoxConstraints(minHeight: 135, maxHeight: 160)
    • Fixed overflow issues in "Upload Conteúdo" and "Criar Turma" cards
    • Cards now properly adapt to different screen sizes and content

Planned Features

  • Voice interaction capabilities
  • Advanced analytics dashboard
  • Multi-language support expansion
  • Offline mode enhancements
  • Integration with learning management systems

Bug Fixes

  • Fixed memory leak in chat interface
  • Improved error handling in quiz submission
  • Optimized image loading performance
  • Enhanced security token validation

[1.0.0] - 2026-05-06

🎉 Initial Release

Major Features

  • AI-Powered Tutoring System

    • Multiple interaction modes (Explanation, Tutor, Exploration, Remedial)
    • Context-aware responses using RAG technology
    • Real-time feedback and rating system
    • Support for mathematics, science, and language learning
  • Interactive Quiz System

    • Multiple question types (Multiple Choice, True/False, Fill in the Blank)
    • Adaptive difficulty adjustment
    • Immediate feedback and explanations
    • Progress tracking and analytics
  • Comprehensive Content Management

    • Support for PDF, DOCX, video, and audio files
    • Automatic content processing and chunking
    • Metadata extraction and classification
    • Teacher-controlled content approval workflow
  • Advanced Learning Analytics

    • Concept mastery tracking
    • Spaced repetition scheduling
    • Personalized learning recommendations
    • Detailed progress reports for students and teachers
  • Modern User Interface

    • Clean, modern design with EPVC school colors
    • Responsive design for mobile, tablet, and web
    • Smooth animations and transitions
    • Accessibility features and dark mode support

Technical Implementation

  • Frontend: Flutter 3.41.0 with Riverpod state management
  • Backend: Firebase Cloud Functions with TypeScript
  • Database: Firestore with comprehensive security rules
  • AI/ML: RAG engine with vector search and LLM integration
  • Authentication: Firebase Auth with multi-provider support
  • Storage: Firebase Storage with automatic optimization

Security Features

  • End-to-end encryption for sensitive data
  • Role-based access control (Student, Teacher, Admin)
  • Comprehensive audit logging
  • GDPR and FERPA compliance
  • Rate limiting and DDoS protection

Performance Optimizations

  • Lazy loading for images and content
  • Efficient caching strategies
  • Optimized database queries with proper indexing
  • Memory management and garbage collection
  • API response time optimization

Platform Support

  • Mobile: Android (API 21+) and iOS (iOS 12+)
  • Web: Modern browsers with CanvasKit rendering
  • Desktop: Progressive Web App support
  • Offline: Limited offline functionality with caching

📋 Development Milestones

Phase 1: Foundation (Weeks 1-4)

  • Project setup and architecture
  • Firebase configuration
  • Authentication system
  • Basic UI components
  • Core data models

Phase 2: Core Features (Weeks 5-8)

  • AI tutoring system
  • Quiz functionality
  • Content management
  • Learning analytics
  • Performance optimization

Phase 3: Enhancement (Weeks 9-12)

  • Advanced UI/UX improvements
  • Security hardening
  • Testing and quality assurance
  • Documentation completion
  • Production deployment

🔧 Technical Specifications

Dependencies

Flutter Dependencies

flutter:
  sdk: '>=3.11.5 <4.0.0'
  
dependencies:
  flutter_riverpod: ^2.4.9
  go_router: ^12.1.3
  firebase_core: ^2.24.2
  firebase_auth: ^4.15.3
  cloud_firestore: ^4.13.6
  firebase_storage: ^11.5.6
  firebase_analytics: ^10.7.4
  firebase_crashlytics: ^3.4.8
  cached_network_image: ^3.3.0
  google_fonts: ^6.1.0
  flutter_animate: ^4.2.0+1

Backend Dependencies

{
  "dependencies": {
    "@google-cloud/firestore": "^6.7.0",
    "@google-cloud/storage": "^6.11.0",
    "firebase-admin": "^11.10.1",
    "firebase-functions": "^4.4.1",
    "openai": "^4.20.1",
    "anthropic": "^0.6.3",
    "sentence-transformers": "^0.0.1",
    "faiss-node": "^0.5.1",
    "express": "^4.18.2",
    "cors": "^2.8.5",
    "helmet": "^7.0.0"
  }
}

RAG Engine Dependencies

dependencies = [
    "numpy>=1.21.0",
    "faiss-cpu>=1.7.4",
    "sentence-transformers>=2.2.2",
    "torch>=1.12.0",
    "openai>=1.0.0",
    "anthropic>=0.3.0",
    "nltk>=3.7",
    "spacy>=3.4.0",
]

System Requirements

Mobile Requirements

  • Android: API 21+ (Android 5.0+)
  • iOS: iOS 12.0+
  • RAM: Minimum 2GB, Recommended 4GB
  • Storage: Minimum 100MB free space
  • Network: Internet connection required for full functionality

Web Requirements

  • Browser: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
  • RAM: Minimum 4GB
  • JavaScript: Enabled
  • Cookies: Enabled for authentication
  • HTTPS: Required for secure connections

Backend Requirements

  • Node.js: Version 18.x LTS
  • Python: Version 3.9+
  • Firebase: Latest version
  • Memory: Minimum 2GB RAM
  • Storage: Minimum 10GB available

🔄 Migration Guide

From Previous Versions

Version 0.9.x to 1.0.0

  • Breaking Changes: None
  • New Features: All features listed above
  • Migration Steps: No migration required for new installations
  • Data Migration: Automatic for existing users

Configuration Updates

# Update Flutter dependencies
flutter pub get

# Update Firebase configuration
firebase deploy --only functions

# Clear cache
flutter clean

🐛 Known Issues

Current Issues

  • Issue: Memory usage increases with prolonged chat sessions

    • Status: Under investigation
    • Workaround: Restart app periodically
    • Fix Planned: Version 1.1.0
  • Issue: Some PDF files may not process correctly

    • Status: Investigating
    • Workaround: Convert to DOCX or use alternative format
    • Fix Planned: Version 1.0.1

Resolved Issues

  • Fixed: Login issues on some Android devices
  • Fixed: Quiz submission failures
  • Fixed: Image loading performance
  • Fixed: Memory leak in content viewer

🚀 Upcoming Features

Version 1.1.0 (Planned: Q3 2026)

  • Voice Interaction: Voice input and output for accessibility
  • Advanced Analytics: More detailed learning insights
  • Offline Mode: Enhanced offline functionality
  • Multi-Language: Support for additional languages
  • Integration: LMS integration capabilities

Version 1.2.0 (Planned: Q4 2026)

  • Collaborative Learning: Study groups and peer tutoring
  • Gamification: Points, badges, and leaderboards
  • Parent Portal: Parent access to student progress
  • Advanced AI: More sophisticated tutoring algorithms
  • Video Chat: Live video tutoring sessions

📊 Usage Statistics

Platform Adoption

  • Total Users: 0 (Launch day)
  • Active Schools: 1 (Escola Profissional de Vila do Conde)
  • Content Uploaded: 0 documents
  • Questions Asked: 0
  • Quizzes Completed: 0

Performance Metrics

  • Average Response Time: Target < 500ms
  • App Load Time: Target < 3 seconds
  • Uptime: Target > 99.5%
  • Error Rate: Target < 1%

🤝 Contributing to Change Log

How to Contribute

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Update this change log
  5. Submit a pull request

Change Log Format

## [Version] - YYYY-MM-DD

### [Category]
- **Description of change**
- **Issue**: #123 (if applicable)
- **Breaking**: Yes/No (if applicable)

Categories

  • Added: New features
  • Changed: Modifications to existing features
  • Deprecated: Features marked for removal
  • Removed: Features removed
  • Fixed: Bug fixes
  • Security: Security-related changes

📞 Support

Reporting Issues

Feature Requests

Security Issues


📚 Documentation Updates

Documentation Changes

  • 2026-05-06: Initial documentation creation
  • 2026-05-06: Updated with comprehensive guides

📈 Release Schedule

Release Cadence

  • Major Releases: Every 6 months
  • Minor Releases: Every month
  • Patch Releases: As needed for critical fixes

Release Process

  1. Development: Feature development in feature branches
  2. Testing: Comprehensive testing in staging
  3. Review: Code review and security audit
  4. Deployment: Gradual rollout with monitoring
  5. Monitoring: Post-release performance monitoring

Version Numbering

  • Major: X.0.0 - Significant new features
  • Minor: X.Y.0 - New features and improvements
  • Patch: X.Y.Z - Bug fixes and security updates

🏆 Recognition

Development Team

  • Frontend Team: Flutter development and UI/UX
  • Backend Team: Firebase functions and API development
  • AI Team: RAG engine and LLM integration
  • QA Team: Testing and quality assurance
  • DevOps Team: Deployment and infrastructure

Special Thanks

  • Escola Profissional de Vila do Conde: Beta testing partner
  • Firebase Team: Platform and support
  • Flutter Community: Tools and libraries
  • OpenAI: AI model integration
  • Anthropic: AI model integration

📄 License

Software License

  • Type: MIT License
  • Copyright: 2026 AI Study Assistant Team
  • Permissions: Commercial use, modification, distribution
  • Conditions: Include license and copyright notice

Third-Party Licenses

  • Flutter: BSD 3-Clause License
  • Firebase: Google Terms of Service
  • OpenAI: OpenAI Terms of Use
  • Anthropic: Anthropic Terms of Service

🔮 Future Vision

Long-term Goals

  • Global Reach: Support for schools worldwide
  • AI Advancement: State-of-the-art educational AI
  • Personalization: Hyper-personalized learning experiences
  • Accessibility: Universal design for learning
  • Innovation: Continuous improvement and innovation

Strategic Initiatives

  • Research Partnership: Educational research collaborations
  • Open Source: Community-driven development
  • Ecosystem: Integration with educational tools
  • Sustainability: Long-term platform sustainability
  • Impact: Measurable educational outcomes

Last Updated: 2026-05-06 Version: 1.0.0 Release Team: Product & Engineering