- Overview
- Features
- User Roles
- Getting Started
- Usage Guide
- Technical Stack
- Installation
- Configuration
- API Documentation
- Contributing
TehtavaApp is a comprehensive web-based assignment and course management system designed for educational institutions. It enables teachers to create courses, manage materials, assign tasks, and track student progress, while providing students with an intuitive interface to access course content, submit assignments, and monitor their performance.
- 📚 Course Management - Create and manage courses with materials and assignments
- 👥 Group Management - Organize students into groups for collaborative work
- 📝 Assignment System - Create, assign, and grade assignments with rubrics
- 🤖 AI-Powered Grading - Automated assignment grading with OpenAI/Azure OpenAI
- 📄 Material Distribution - Upload and share course materials (PDFs, documents, images)
- 📊 Progress Tracking - Monitor student performance and generate statistics
- 🔔 Real-time Notifications - Stay updated with course activities
- 💬 Inline Comments - Provide detailed feedback on submissions
- 🎯 Grading System - Comprehensive grading with rubrics and history
-
Create Courses
- Set course name, description, start/end dates
- Define course structure and objectives
- Activate/deactivate courses
- Add multiple teachers to a course
-
Course Materials
- Upload files (PDF, Word, Excel, PowerPoint, images)
- Organize materials by topic
- Bulk upload multiple materials
- Track material access statistics
- Update or delete materials
-
Assignments
- Create assignments with descriptions and deadlines
- Set maximum scores and grading rubrics
- Attach materials and resources
- Define assignment types (individual/group)
- Schedule assignment releases
-
Student Groups
- Create and manage student groups
- Assign students to groups
- Track group performance
- Manage group enrollments
-
AI-Powered Grading 🤖 NEW!
- Automatic grading using OpenAI GPT-4o or Azure OpenAI
- Two modes: Assisted (teacher approval) or Automatic
- Uses assignment rubrics for detailed evaluation
- Generates constructive feedback in Finnish
- Provides confidence scores and reasoning
- Configurable AI provider and model selection
- Transparent AI attribution (optional)
-
Submission Review
- View all student submissions
- Download submitted files
- Provide inline comments
- Grade with rubric support
- Track grading history
-
Statistics & Reports
- Course completion rates
- Assignment submission statistics
- Grade distributions
- Student activity reports
- Export data for analysis
- Notifications
- Automatic notifications for new submissions
- Reminders for upcoming deadlines
- Real-time updates via SignalR
- Email notifications (optional)
-
Course Access
- Browse available courses
- Enroll in courses
- View course materials
- Download course resources
- Track course progress
-
Assignments
- View assigned tasks
- Check deadlines and requirements
- Upload submissions
- Edit submissions before deadline
- View grades and feedback
-
Progress Tracking
- View personal statistics
- Check grades for all courses
- Monitor assignment completion
- Track performance trends
- Inline Comments
- Receive detailed feedback
- View teacher comments
- Understand grading criteria
- Learn from mistakes
-
Account Administration
- Create/edit/delete user accounts
- Assign roles (Admin, Teacher, Student)
- Manage user permissions
- Reset passwords
- View user activity
-
System Configuration
- Configure system settings
- Manage integrations
- Monitor system health
- View audit logs
Capabilities:
- Enroll in courses
- Access course materials
- Submit assignments
- View grades and feedback
- Participate in groups
- Receive notifications
Restrictions:
- Cannot create courses
- Cannot grade assignments
- Cannot manage other users
- Cannot access admin features
Capabilities:
- All student capabilities
- Create and manage courses
- Upload course materials
- Create and grade assignments
- Manage student groups
- View course statistics
- Send notifications to students
Restrictions:
- Cannot manage system settings
- Cannot create/delete users (except from their courses)
- Cannot access other teachers' courses (unless added)
Capabilities:
- All teacher capabilities
- Full user management
- Access all courses
- System configuration
- View all statistics
- Manage system settings
- View audit logs
-
Login
- Navigate to the application URL
- Enter your username and password
- Click "Kirjaudu sisään" (Login)
-
Browse Courses
- Go to "Kurssit" (Courses) from the navigation
- Browse available courses
- Click on a course to view details
-
Enroll in a Course
- Open the course details
- Click "Liity kurssille" (Join Course)
- Confirm enrollment
-
Access Materials
- Open your enrolled course
- Go to "Materiaalit" (Materials) tab
- Download or view materials
-
Submit Assignments
- Go to "Tehtävät" (Assignments) tab
- Click on an assignment
- Upload your submission
- Click "Lähetä" (Submit)
-
Check Grades
- Go to "Profiili" (Profile)
- View your grades and statistics
- Check assignment feedback
-
Create a Course
- Go to "Kurssit" → "Omat kurssit" (My Courses)
- Click "+ Luo uusi kurssi" (Create New Course)
- Fill in course details:
- Name
- Description
- Start/End dates
- Click "Tallenna" (Save)
-
Add Materials
- Open your course
- Go to "Materiaalit" tab
- Click "+ Lisää materiaali" (Add Material)
- Upload file or enter content
- Click "Tallenna"
-
Create Assignments
- Go to "Tehtävät" tab
- Click "+ Lisää tehtävä" (Add Assignment)
- Set:
- Title and description
- Due date
- Maximum score
- Grading rubric (optional)
- Click "Tallenna"
-
Create Groups
- Go to "Ryhmät" (Groups) tab
- Click "+ Lisää ryhmä" (Add Group)
- Name the group
- Add students
- Click "Tallenna"
-
Grade Submissions
- Go to "Tehtävät" → Select assignment
- Click on a submission
- Review the submitted work
- Provide feedback with inline comments
- Enter grade
- Click "Tallenna arviointi" (Save Grade)
-
View Statistics
- Go to "Tilastot" (Statistics) tab
- View course completion rates
- Check assignment statistics
- Export data if needed
- Framework: React 18 with TypeScript
- UI Library: Material-UI (MUI) v5
- State Management: Redux Toolkit
- Routing: React Router v6
- HTTP Client: Axios
- Real-time: SignalR
- Build Tool: Vite
- Code Quality: ESLint, TypeScript strict mode
- Framework: ASP.NET Core 8.0 (C#)
- Architecture: Clean Architecture with SOLID principles
- Authentication: JWT with ASP.NET Core Identity
- Database: SQL Server with Entity Framework Core
- File Storage: Azure Blob Storage
- Real-time: SignalR
- API Documentation: Swagger/OpenAPI
- Logging: ILogger with structured logging
- Hosting: Azure App Service
- Database: Azure SQL Database
- Storage: Azure Blob Storage
- CDN: Azure CDN (optional)
- CI/CD: GitHub Actions / Azure DevOps
-
Backend:
- .NET 8.0 SDK
- SQL Server 2019+ or Azure SQL Database
- Azure Storage Account (for file uploads)
-
Frontend:
- Node.js 18+
- npm or yarn
- Clone the repository
git clone <repository-url>
cd TehtavaApp/Backend/TehtavaApp.API- Configure Database
# Update connection string in appsettings.json or appsettings.Development.json
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=TehtavaApp;Trusted_Connection=True;TrustServerCertificate=True"
}
}- Configure Azure Storage
{
"Storage": {
"Azure": {
"ConnectionString": "your-azure-storage-connection-string",
"ContainerName": "uploads"
}
}
}- Run Migrations
dotnet ef database update- Start the Backend
dotnet runBackend will run on http://localhost:5001
- Navigate to Frontend
cd Frontend/tehtavaappfrontend- Install Dependencies
npm install- Configure API URL
Create
.envfile:
VITE_API_URL=http://localhost:5001/api- Start the Frontend
npm run devFrontend will run on http://localhost:5173
The system automatically creates an admin account on first run:
- Email: admin@tehtavaapp.com
- Password: Admin123!
Backend (appsettings.json):
{
"Jwt": {
"Key": "your-secret-key-at-least-32-characters",
"Issuer": "TehtavaApp",
"Audience": "TehtavaApp"
},
"Storage": {
"Azure": {
"ConnectionString": "azure-storage-connection-string",
"ContainerName": "uploads"
}
},
"AdminUser": {
"Email": "admin@tehtavaapp.com",
"Password": "Admin123!"
}
}Frontend (.env):
VITE_API_URL=http://localhost:5001/apiThe system uses SQL Server with Entity Framework Core. Default configuration:
- Connection string:
appsettings.json - Migrations: Automatic on startup
- Seeding: Admin user and roles
Configure AI-powered grading in appsettings.json:
OpenAI Setup:
{
"AIGrading": {
"Enabled": true,
"Provider": "OpenAI",
"Mode": "Assisted",
"MarkAsAIGenerated": true,
"OpenAI": {
"ApiKey": "your-openai-api-key",
"Model": "gpt-4o",
"MaxTokens": 2000
}
}
}Azure OpenAI Setup:
{
"AIGrading": {
"Enabled": true,
"Provider": "AzureOpenAI",
"Mode": "Assisted",
"MarkAsAIGenerated": true,
"AzureOpenAI": {
"Endpoint": "https://your-resource.openai.azure.com",
"ApiKey": "your-azure-api-key",
"DeploymentName": "your-deployment-name",
"ApiVersion": "2024-02-15-preview"
}
}
}- Development: Use User Secrets for API keys
dotnet user-secrets set "AIGrading:OpenAI:ApiKey" "your-key"
- Production: Use Azure Key Vault or Environment Variables
- Never commit API keys to version control
- Add
appsettings.jsonto.gitignore
Configuration Options:
Enabled: Enable/disable AI gradingProvider: "OpenAI" or "AzureOpenAI"Mode: "Assisted" (teacher approval) or "Automatic"MarkAsAIGenerated: Show AI attribution to studentsModel: AI model to use (e.g., "gpt-4o", "gpt-4-turbo")MaxTokens: Maximum response length (default: 2000)
Admin Panel: Administrators can also configure AI settings through the web interface:
- Login as Admin
- Navigate to Admin Panel → AI Grading Settings
- Configure provider and credentials
- Test connection
- Save settings
POST /api/auth/login
POST /api/auth/register
POST /api/auth/refreshGET /api/course # Get all courses
GET /api/course/{id} # Get course by ID
POST /api/course # Create course
PUT /api/course/{id} # Update course
DELETE /api/course/{id} # Delete courseGET /api/material # Search materials
GET /api/material/{id} # Get material
GET /api/material/course/{courseId} # Get course materials
POST /api/material # Upload material
POST /api/material/bulk-upload # Bulk upload
PUT /api/material/{id} # Update material
DELETE /api/material/{id} # Delete materialGET /api/assignment # Get all assignments
GET /api/assignment/{id} # Get assignment
POST /api/assignment # Create assignment
PUT /api/assignment/{id} # Update assignment
DELETE /api/assignment/{id} # Delete assignment
GET /api/assignment/{id}/submissions # Get submissions
POST /api/assignment/{id}/submit # Submit assignmentFull API Documentation: Available at /swagger when running in development mode.
1. Login → Dashboard
2. Navigate to "Kurssit" (Courses)
3. Browse and enroll in a course
4. View "Materiaalit" (Materials)
5. Download/view materials
6. Go to "Tehtävät" (Assignments)
7. Select assignment and upload file
8. Check "Profiili" for grades
1. Login → Dashboard
2. Navigate to "Omat kurssit" (My Courses)
3. Create new course
4. Add materials via "Materiaalit" tab
5. Create assignments via "Tehtävät" tab
6. Organize students into "Ryhmät" (Groups)
7. Review submissions and provide grades
8. Monitor progress in "Tilastot" (Statistics)
Supported File Types:
- Documents: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
- Images: JPG, PNG, GIF, WEBP
- Text: TXT, MD, HTML
File Size Limits:
- Individual files: 100 MB
- Bulk upload: 100 MB per file
Features:
- Numerical grades (0-5 Finnish scale)
- Rubric-based grading
- Inline comments
- Grading history
- Grade statistics
- Export capabilities
Overview: TehtavaApp now includes intelligent AI-powered grading capabilities that assist teachers in evaluating student submissions quickly and consistently.
Supported AI Providers:
- OpenAI - GPT-4o, GPT-4-turbo
- Azure OpenAI - Enterprise-grade with custom deployments
Operating Modes:
-
Assisted Mode (Recommended)
- AI generates grading suggestions
- Teacher reviews and can modify before applying
- Full control over final grades
- Learn from AI's reasoning
-
Automatic Mode
- AI grades are applied directly
- Teacher can review afterwards
- Faster for large volumes
- Configurable confidence thresholds
How It Works:
- Teacher opens a student submission
- Clicks "Generate AI Grading Suggestion"
- AI analyzes:
- Assignment description and requirements
- Grading rubric (if defined)
- Student's submission content
- AI provides:
- Grade (0-5 scale)
- Detailed constructive feedback in Finnish
- Reasoning for the grade
- Confidence score (0-100%)
- Scores per rubric criterion (if applicable)
- Teacher can:
- ✅ Accept the suggestion as-is
- ✏️ Modify grade or feedback
- ❌ Reject and grade manually
Benefits:
- ⚡ Speed: Grade assignments in seconds
- 🎯 Consistency: Same criteria applied to all submissions
- 📝 Quality Feedback: Detailed, constructive comments
- 🔍 Transparency: See AI's reasoning and confidence level
- 📊 Rubric Support: Evaluates against defined criteria
- 🌐 Finnish Language: Feedback generated in Finnish
- 🔒 Privacy: Optional AI attribution marking
Configuration: Administrators can configure AI grading through the admin panel:
- Enable/disable AI grading
- Choose AI provider (OpenAI or Azure OpenAI)
- Set operating mode (Assisted or Automatic)
- Configure API keys and model settings
- Toggle AI attribution visibility
- Test connection before use
Cost Efficiency:
- Average cost: ~€0.008 per assignment (less than 1 cent)
- Significant time savings for teachers
- Scales to any number of submissions
Security & Privacy:
- API keys stored securely (User Secrets / Azure Key Vault)
- Metadata tracked for transparency
- GDPR compliant
- Optional marking of AI-graded submissions
Notification Types:
- New materials
- New assignments
- Assignment deadlines
- Grades published
- Course updates
- Group activities
Delivery Methods:
- In-app notifications
- Real-time updates (SignalR)
- Email notifications (optional)
- JWT-based authentication
- Secure password hashing (ASP.NET Core Identity)
- Token expiration and refresh
- Role-based access control
- Role-based permissions (Admin, Teacher, Student)
- Course-level permissions
- Resource-level access control
- API endpoint protection
- HTTPS required in production
- SQL injection prevention (EF Core)
- XSS protection
- CSRF protection
- File upload validation
- Secure file storage (Azure Blob)
- Frontend caching (5-minute TTL)
- Lazy loading of components
- Code splitting
- Image optimization
- Database query optimization
- CDN for static assets
- Stateless API design
- Azure auto-scaling
- Database connection pooling
- Blob storage for files
- SignalR backplane (Redis)
Issue: Cannot login
- Check credentials
- Verify database connection
- Check JWT configuration
- Clear browser cache/cookies
Issue: File upload fails
- Check file size (max 100MB)
- Verify file type is supported
- Check Azure Storage connection
- Verify storage container exists
Issue: Notifications not working
- Check SignalR connection
- Verify WebSocket support
- Check firewall settings
- Clear browser cache
Issue: Slow performance
- Clear frontend cache
- Check network connection
- Verify database performance
- Check Azure resource limits
- Documentation: This README and SOLID_REFACTORING.md
- API Docs:
/swaggerendpoint - Issues: GitHub Issues (if applicable)
When reporting bugs, please include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Browser/environment details
- Screenshots (if applicable)
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Write/update tests
- Ensure all tests pass
- Submit a pull request
- Follow SOLID principles
- Write unit tests
- Use TypeScript/C# type safety
- Follow existing code style
- Document new features
[Specify your license here]
- ✅ Course management
- ✅ Material distribution
- ✅ Assignment system
- ✅ Grading with rubrics
- ✅ Group management
- ✅ Real-time notifications
- ✅ SOLID refactoring completed
- ✅ Performance optimizations
- Yleiskatsaus
- Ominaisuudet
- Käyttäjäroolit
- Aloitus
- Käyttöohje
- Tekninen toteutus
- Asennus
- Konfigurointi
- API-dokumentaatio
- Osallistuminen
TehtavaApp on kattava verkkopohjainen tehtävien- ja kurssinhallintajärjestelmä oppilaitoksille. Se mahdollistaa opettajien luoda kursseja, hallita materiaaleja, antaa tehtäviä ja seurata opiskelijoiden edistymistä, samalla tarjoten opiskelijoille intuitiivisen käyttöliittymän kurssimateriaalien käyttöön, tehtävien palauttamiseen ja suorituksen seuraamiseen.
- 📚 Kurssinhallinta - Luo ja hallitse kursseja materiaaleineen ja tehtävineen
- 👥 Ryhmähallinta - Järjestä opiskelijat ryhmiin yhteistyötä varten
- 📝 Tehtäväjärjestelmä - Luo, anna ja arvioi tehtäviä rubriikkien avulla
- 🤖 Tekoälypohjainen arviointi - Automaattinen tehtävien arviointi OpenAI:lla tai Azure OpenAI:lla
- 📄 Materiaalien jakelu - Lataa ja jaa kurssimateriaalia (PDF, dokumentit, kuvat)
- 📊 Edistymisen seuranta - Seuraa opiskelijoiden suoriutumista ja luo tilastoja
- 🔔 Reaaliaikaiset ilmoitukset - Pysy ajan tasalla kurssiaktiviteeteista
- 💬 Riviviestit - Anna yksityiskohtaista palautetta palautuksiin
- 🎯 Arviointijärjestelmä - Kattava arviointi rubriikkeineen ja historioineen
-
Kurssien luominen
- Aseta kurssin nimi, kuvaus, alku-/loppupäivät
- Määrittele kurssirakenne ja tavoitteet
- Aktivoi/deaktivoi kurssit
- Lisää useita opettajia kurssille
-
Kurssimateriaalit
- Lataa tiedostoja (PDF, Word, Excel, PowerPoint, kuvat)
- Järjestä materiaalit aihealueittain
- Massalataa useita materiaaleja
- Seuraa materiaalien käyttötilastoja
- Päivitä tai poista materiaaleja
-
Tehtävät
- Luo tehtäviä kuvauksilla ja määräaikoina
- Aseta maksimipistemäärät ja arviointirubrikit
- Liitä materiaaleja ja resursseja
- Määrittele tehtävätyypit (yksilö/ryhmä)
- Ajasta tehtävien julkaisut
-
Opiskelijaryhmät
- Luo ja hallitse opiskelijaryhmiä
- Jaa opiskelijat ryhmiin
- Seuraa ryhmien suoriutumista
- Hallitse ryhmäilmoittautumisia
-
Tekoälypohjainen arviointi 🤖 UUSI!
- Automaattinen arviointi OpenAI GPT-4o:lla tai Azure OpenAI:lla
- Kaksi tilaa: Avustettu (opettaja hyväksyy) tai Automaattinen
- Käyttää tehtävän rubriikkia yksityiskohtaiseen arviointiin
- Luo rakentavaa palautetta suomeksi
- Tarjoaa luotettavuuspisteet ja perustelut
- Konfiguroitava AI-palveluntarjoaja ja malli
- Läpinäkyvä AI-merkintä (valinnainen)
-
Palautusten tarkastelu
- Katso kaikki opiskelijoiden palautukset
- Lataa palautetut tiedostot
- Anna riviviestejä
- Arvioi rubriikkien tuella
- Seuraa arviointihistoriaa
-
Tilastot ja raportit
- Kurssin suoritusasteet
- Tehtävien palautustilastot
- Arvosanajakaumat
- Opiskelijoiden aktiivisuusraportit
- Vie dataa analysointia varten
- Ilmoitukset
- Automaattiset ilmoitukset uusista palautuksista
- Muistutukset tulevista määräajoista
- Reaaliaikaiset päivitykset SignalR:n kautta
- Sähköposti-ilmoitukset (valinnainen)
-
Kurssipääsy
- Selaa saatavilla olevia kursseja
- Ilmoittaudu kursseille
- Katso kurssimateriaaleja
- Lataa kurssiresursseja
- Seuraa kurssin edistymistä
-
Tehtävät
- Katso annetut tehtävät
- Tarkista määräajat ja vaatimukset
- Lataa palautuksia
- Muokkaa palautuksia ennen määräaikaa
- Katso arvosanat ja palaute
-
Edistymisen seuranta
- Katso henkilökohtaiset tilastot
- Tarkista arvosanat kaikille kursseille
- Seuraa tehtävien suoritusta
- Seuraa suorituskehitystä
- Riviviestit
- Vastaanota yksityiskohtaista palautetta
- Katso opettajan kommentit
- Ymmärrä arviointikriteerit
- Opi virheistä
-
Tilienhallinta
- Luo/muokkaa/poista käyttäjätilejä
- Määritä roolit (Ylläpitäjä, Opettaja, Opiskelija)
- Hallitse käyttöoikeuksia
- Nollaa salasanoja
- Katso käyttäjien aktiivisuutta
-
Järjestelmän konfigurointi
- Määritä järjestelmän asetukset
- Hallitse integraatioita
- Seuraa järjestelmän tilaa
- Katso auditointilokeja
Valtuudet:
- Ilmoittaudu kursseille
- Käytä kurssimateriaalia
- Palauta tehtäviä
- Katso arvosanat ja palaute
- Osallistu ryhmiin
- Vastaanota ilmoituksia
Rajoitukset:
- Ei voi luoda kursseja
- Ei voi arvioida tehtäviä
- Ei voi hallita muita käyttäjiä
- Ei pääsyä ylläpitoominaisuuksiin
Valtuudet:
- Kaikki opiskelijan valtuudet
- Luo ja hallitse kursseja
- Lataa kurssimateriaaleja
- Luo ja arvioi tehtäviä
- Hallitse opiskelijaryhmiä
- Katso kurssitilastoja
- Lähetä ilmoituksia opiskelijoille
Rajoitukset:
- Ei voi hallita järjestelmäasetuksia
- Ei voi luoda/poistaa käyttäjiä (paitsi omilta kursseilta)
- Ei pääsyä muiden opettajien kursseihin (ellei lisätty)
Valtuudet:
- Kaikki opettajan valtuudet
- Täysi käyttäjähallinta
- Pääsy kaikkiin kursseihin
- Järjestelmän konfigurointi
- Kaikkien tilastojen katselu
- Hallitse järjestelmäasetuksia
- Katso auditointilokeja
-
Kirjaudu sisään
- Siirry sovelluksen URL-osoitteeseen
- Syötä käyttäjätunnus ja salasana
- Klikkaa "Kirjaudu sisään"
-
Selaa kursseja
- Mene navigaatiosta kohtaan "Kurssit"
- Selaa saatavilla olevia kursseja
- Klikkaa kurssia nähdäksesi tiedot
-
Liity kurssille
- Avaa kurssin tiedot
- Klikkaa "Liity kurssille"
- Vahvista ilmoittautuminen
-
Käytä materiaaleja
- Avaa ilmoittautunut kurssisi
- Mene "Materiaalit"-välilehdelle
- Lataa tai katso materiaaleja
-
Palauta tehtäviä
- Mene "Tehtävät"-välilehdelle
- Klikkaa tehtävää
- Lataa palautuksesi
- Klikkaa "Lähetä"
-
Tarkista arvosanat
- Mene kohtaan "Profiili"
- Katso arvosanasi ja tilastosi
- Tarkista tehtävien palaute
-
Luo kurssi
- Mene "Kurssit" → "Omat kurssit"
- Klikkaa "+ Luo uusi kurssi"
- Täytä kurssin tiedot:
- Nimi
- Kuvaus
- Alku-/loppupäivät
- Klikkaa "Tallenna"
-
Lisää materiaaleja
- Avaa kurssisi
- Mene "Materiaalit"-välilehdelle
- Klikkaa "+ Lisää materiaali"
- Lataa tiedosto tai syötä sisältö
- Klikkaa "Tallenna"
-
Luo tehtäviä
- Mene "Tehtävät"-välilehdelle
- Klikkaa "+ Lisää tehtävä"
- Aseta:
- Otsikko ja kuvaus
- Määräaika
- Maksimipisteet
- Arviointirubiikki (valinnainen)
- Klikkaa "Tallenna"
-
Luo ryhmiä
- Mene "Ryhmät"-välilehdelle
- Klikkaa "+ Lisää ryhmä"
- Nimeä ryhmä
- Lisää opiskelijoita
- Klikkaa "Tallenna"
-
Arvioi palautukset
- Mene "Tehtävät" → Valitse tehtävä
- Klikkaa palautusta
- Tarkista palautettu työ
- Anna palautetta riviviesteillä
- Syötä arvosana
- Klikkaa "Tallenna arviointi"
-
Katso tilastoja
- Mene "Tilastot"-välilehdelle
- Katso kurssin suoritusasteita
- Tarkista tehtävätilastot
- Vie tietoja tarvittaessa
- Kehys: React 18 TypeScriptin kanssa
- UI-kirjasto: Material-UI (MUI) v5
- Tilan hallinta: Redux Toolkit
- Reititys: React Router v6
- HTTP-asiakas: Axios
- Reaaliaikainen: SignalR
- Build-työkalu: Vite
- Koodin laatu: ESLint, TypeScript strict mode
- Kehys: ASP.NET Core 8.0 (C#)
- Arkkitehtuuri: Clean Architecture SOLID-periaattein
- Autentikointi: JWT ASP.NET Core Identityn kanssa
- Tietokanta: SQL Server Entity Framework Coren kanssa
- Tiedostojen tallennus: Azure Blob Storage
- Reaaliaikainen: SignalR
- API-dokumentaatio: Swagger/OpenAPI
- Lokitus: ILogger strukturoidulla lokituksella
- Isännöinti: Azure App Service
- Tietokanta: Azure SQL Database
- Tallennus: Azure Blob Storage
- CDN: Azure CDN (valinnainen)
- CI/CD: GitHub Actions / Azure DevOps
-
Backend:
- .NET 8.0 SDK
- SQL Server 2019+ tai Azure SQL Database
- Azure Storage -tili (tiedostojen lataukseen)
-
Frontend:
- Node.js 18+
- npm tai yarn
- Kloonaa repositorio
git clone <repository-url>
cd TehtavaApp/Backend/TehtavaApp.API- Konfiguroi tietokanta
# Päivitä yhteysmerkkijono appsettings.json- tai appsettings.Development.json-tiedostossa
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=TehtavaApp;Trusted_Connection=True;TrustServerCertificate=True"
}
}- Konfiguroi Azure Storage
{
"Storage": {
"Azure": {
"ConnectionString": "azure-storage-yhteysmerkkijono",
"ContainerName": "uploads"
}
}
}- Suorita migraatiot
dotnet ef database update- Käynnistä backend
dotnet runBackend toimii osoitteessa http://localhost:5001
- Siirry frontendiin
cd Frontend/tehtavaappfrontend- Asenna riippuvuudet
npm install- Konfiguroi API URL
Luo
.env-tiedosto:
VITE_API_URL=http://localhost:5001/api- Käynnistä frontend
npm run devFrontend toimii osoitteessa http://localhost:5173
Järjestelmä luo automaattisesti ylläpitäjätilin ensimmäisellä käynnistyskerralla:
- Sähköposti: admin@tehtavaapp.com
- Salasana: Admin123!
- Dokumentaatio: Tämä README ja SOLID_REFACTORING.md
- API-dokumentaatio:
/swagger-päätepiste - Ongelmat: GitHub Issues (jos käytettävissä)
Raportoidessasi virheitä, sisällytä:
- Vaiheet toistamiseen
- Odotettu toiminta
- Todellinen toiminta
- Selain-/ympäristötiedot
- Kuvakaappaukset (jos mahdollista)
[Määritä lisenssisi tähän]
- 🤖 UUSI: Tekoälypohjainen arviointi
- OpenAI ja Azure OpenAI -integraatiot
- Avustettu ja automaattinen arviointitila
- Rubriikkipohjainen arviointi
- Suomenkielinen palaute
- Admin-paneeli AI-asetusten hallintaan
- Läpinäkyvä metadata ja luottamuspisteet
- ✅ Kurssinhallinta
- ✅ Materiaalien jakelu
- ✅ Tehtäväjärjestelmä
- ✅ Arviointi rubriikkeineen
- ✅ Ryhmähallinta
- ✅ Reaaliaikaiset ilmoitukset
- ✅ SOLID-refaktorointi valmis
- ✅ Suorituskykyoptimoinnit
Päivitetty: 2025-10-31
Versio: 1.1.0 (🤖 AI-Powered Grading)
Tila: Tuotantovalmis