How shervinbdndev/hoshiko works
Hoshiko is an ASP.NET MVC learning app organized around staged lessons and quizzes, with user progress tracking and certificate issuance. Learners enter through the web UI, authenticate, access stages, complete learning and quizzes, and may earn certificates; admins manage stage, lesson, quiz, and user-progress data. The graph also shows persistence and identity infrastructure. Source excerpts establish several calls, while some controller/service links rely on the SOURCE INDEX; unsampled view behavior is not inferred.
Main entry points: Program.cs MVC app setup · ApplicationDbContext.cs Application database · AdminController.cs Admin management · CertificateService.cs Certificate service
Components 25
Web application
- MVC app setup
src/Hoshiko.Web/Program.cs - Admin management
src/Hoshiko.Web/Controllers/AdminController.cs - Home and certificate
src/Hoshiko.Web/Controllers/HomeController.cs - User administration
src/Hoshiko.Web/Services/UserService.cs
Learning workflow
- Stage workflow
src/Hoshiko.Web/Controllers/StageController.cs - Stage progress
src/Hoshiko.Web/Services/StageProgressService.cs - Progress contract
src/Hoshiko.Core/Interfaces/IStageProgressService.cs - Stage repository contract
src/Hoshiko.Core/Interfaces/IStageRepository.cs - Stage and quiz model
src/Hoshiko.Domain/Entities/StageEntities.cs - Slug helper
src/Hoshiko.Infrastructure/Helpers/SlugHelper.cs
Identity and certificates
- Account endpoints
src/Hoshiko.Web/Controllers/AccountController.cs - Authentication
src/Hoshiko.Web/Services/AuthService.cs - Auth contract
src/Hoshiko.Core/Interfaces/IAuthService.cs - Current user
src/Hoshiko.Web/Services/CurrentUserService.cs - Current-user contract
src/Hoshiko.Core/Interfaces/ICurrentUserService.cs - Certificate service
src/Hoshiko.Web/Services/CertificateService.cs - Certificate contract
src/Hoshiko.Core/Interfaces/ICertificateService.cs - Domain user
src/Hoshiko.Domain/Entities/User.cs - Identity user
src/Hoshiko.Infrastructure/Identity/AppUser.cs
Persistence
- Stage repository
src/Hoshiko.Infrastructure/Repositories/StageRepository.cs - Generic repository contract
src/Hoshiko.Core/Interfaces/IGenericRepository.cs - Generic repository
src/Hoshiko.Infrastructure/Repositories/GenericRepository.cs - Application database
src/Hoshiko.Infrastructure/Data/ApplicationDbContext.cs - Initial data setup
src/Hoshiko.Infrastructure/Data/DbInitializer.cs
Other components
- Visitor
Connections 38
- Visitor → MVC app setup: opens app
- MVC app setup → Application database: configures
src/Hoshiko.Web/Program.cs - MVC app setup → Authentication: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Stage repository: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Certificate service: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Current user: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Stage progress: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Generic repository: registers
src/Hoshiko.Web/Program.cs - MVC app setup → Initial data setup: runs initialization
src/Hoshiko.Web/Program.cs - Account endpoints → Authentication: calls
src/Hoshiko.Web/Controllers/AccountController.cs - Authentication → Identity user: uses identity
src/Hoshiko.Web/Services/AuthService.cs - Authentication → Auth contract: implements
src/Hoshiko.Web/Services/AuthService.cs - Stage workflow → Stage repository: loads stages
src/Hoshiko.Web/Controllers/StageController.cs - Stage workflow → Stage progress: updates progress
src/Hoshiko.Web/Controllers/StageController.cs - Stage workflow → Certificate service: checks certificate
src/Hoshiko.Web/Controllers/StageController.cs - Stage progress → Progress contract: implements
src/Hoshiko.Web/Services/StageProgressService.cs - Stage progress → Application database: reads and writes
src/Hoshiko.Web/Services/StageProgressService.cs - Certificate service → Certificate contract: implements
src/Hoshiko.Web/Services/CertificateService.cs - Certificate service → Application database: reads and writes
src/Hoshiko.Web/Services/CertificateService.cs - Home and certificate → Certificate service: checks certificate
src/Hoshiko.Web/Controllers/HomeController.cs - Admin management → User administration: gets users
src/Hoshiko.Web/Controllers/AdminController.cs - Admin management → Stage progress: loads stage progress
src/Hoshiko.Web/Controllers/AdminController.cs - Admin management → Certificate service: gets certificates
src/Hoshiko.Web/Controllers/AdminController.cs - Admin management → Generic repository: adds content
src/Hoshiko.Web/Controllers/AdminController.cs - Admin management → Application database: queries and saves
src/Hoshiko.Web/Controllers/AdminController.cs - Admin management → Slug helper: generates slugs
src/Hoshiko.Web/Controllers/AdminController.cs - Stage repository → Generic repository: inherits
src/Hoshiko.Infrastructure/Repositories/StageRepository.cs - Stage repository → Stage repository contract: implements
src/Hoshiko.Infrastructure/Repositories/StageRepository.cs - Stage repository → Application database: queries stages
src/Hoshiko.Infrastructure/Repositories/StageRepository.cs - Generic repository → Generic repository contract: implements
src/Hoshiko.Infrastructure/Repositories/GenericRepository.cs - Generic repository → Application database: uses context
src/Hoshiko.Infrastructure/Repositories/GenericRepository.cs - Application database → Stage and quiz model: maps entities
src/Hoshiko.Infrastructure/Data/ApplicationDbContext.cs - Application database → Identity user: stores identity
src/Hoshiko.Infrastructure/Data/ApplicationDbContext.cs - Initial data setup → Application database: seeds data
src/Hoshiko.Infrastructure/Data/DbInitializer.cs - Initial data setup → Slug helper: generates slugs
src/Hoshiko.Infrastructure/Data/DbInitializer.cs - Current user → Current-user contract: implements
src/Hoshiko.Web/Services/CurrentUserService.cs - User administration → Identity user: uses identity
src/Hoshiko.Web/Services/UserService.cs - Application database → Domain user: maps domain user
src/Hoshiko.Infrastructure/Data/ApplicationDbContext.cs