FeedForward is an advanced AI-powered platform for providing formative feedback on student assignments. The system leverages multiple AI models with sophisticated aggregation methods to generate comprehensive, constructive feedback aligned with custom rubric criteria.
- Multi-draft submissions with iterative feedback improvement
- Progress tracking across assignment versions with detailed comparisons
- Visual feedback display with emoji indicators and performance tracking
- Real-time feedback with instructor review workflow
- Privacy-focused design with temporary draft storage
- Custom rubric creation with weighted categories and detailed criteria
- Multi-model AI integration supporting OpenAI, Anthropic, and other providers
- Flexible aggregation methods (mean, weighted mean, median, trimmed mean)
- Advanced feedback review with AI response comparison and editing
- Course and student management with enrollment and progress oversight
- Plugin architecture for extensible assessment types
- Multi-model orchestration with configurable runs per model
- Async processing pipeline for efficient draft handling
- SQLite database with comprehensive data models
- FastHTML + HTMX for responsive web interface
- Tailwind CSS for modern, accessible UI
- Comprehensive testing and quality assurance
- Python 3.8+
- Git
- API keys for at least one AI provider (OpenAI, Anthropic, etc.)
- Clone and setup:
git clone https://github.com/BARG-Curtin-University/feedforward.git
cd feedforward- Using uv (recommended):
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment and install
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"- Or using pip:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt- Configure environment:
# Copy and edit environment file
cp .env.example .env
# Edit .env with your settings and API keys- Initialize and run:
# Initialize database
python app/init_db.py
# Run the application
python app.pyKey environment variables:
SECRET_KEY- Flask secret key for sessionsOPENAI_API_KEY- OpenAI API keyANTHROPIC_API_KEY- Anthropic API key (optional)DATABASE_URL- Database connection string (default: SQLite)SMTP_*- Email configuration (optional)
# Code quality
ruff format . # Format code
ruff check . --fix # Lint and fix
mypy app/ # Type checking
# Testing
pytest # Run all tests
python tools/test_ai_integration.py # Test AI features
python tools/test_instructor_feedback_ui.py # Test UI
# Database
python app/init_db.py # Initialize database
python tools/create_demo_accounts.py # Create demo users- FastHTML + HTMX - Modern web framework with reactive UI
- SQLAlchemy ORM - Database abstraction with comprehensive models
- LiteLLM - Multi-provider AI model integration
- SQLite Database - Lightweight, file-based storage
- Tailwind CSS - Utility-first styling framework
- Plugin Architecture - Extensible assessment types
- Multi-Model Support - OpenAI, Anthropic, Google, Cohere, HuggingFace
- Advanced Aggregation - Multiple algorithms for feedback synthesis
- Async Processing - Background task handling for AI requests
- Role-Based Security - Separate interfaces for students, instructors, admins
- Student submits draft β Temporary storage
- Background processing β Multi-model AI evaluation
- Score aggregation β Rubric-aligned feedback synthesis
- Instructor review β Optional feedback editing
- Student access β Progress tracking and comparison
- Login with institutional credentials
- View assignments on the dashboard
- Submit drafts with iterative improvements
- Review feedback with emoji indicators and detailed analysis
- Track progress across multiple draft versions
- Create courses and manage enrollments
- Design assignments with custom rubrics
- Configure AI settings (models, runs, aggregation)
- Review submissions with AI-generated feedback
- Edit and approve feedback before student release
- System configuration and user management
- AI provider setup and API key management
- Analytics and reporting on system usage
- Plugin management for custom assessment types
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Follow code style:
ruff format . && ruff check . --fix - Add tests for new functionality
- Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Use type hints for all function signatures
- Follow PEP 8 style guidelines (enforced by ruff)
- Write comprehensive tests for new features
- Update documentation for API changes
- Use meaningful commit messages
MIT License - see LICENSE file for details
- Built for educational innovation at Curtin University
- Powered by state-of-the-art AI language models
- Designed for scalable, privacy-focused learning environments