How project-studying-dotnet/streetcode-server-august-2026 works
Streetcode is an ASP.NET Core backend for a platform presenting Ukrainian history through place-based articles (“Streetcodes”), with APIs for browsing and maintaining content. The main web workflow is an HTTP request routed through a controller and MediatR to a feature handler, which reads or changes domain data and returns a result. Separate Identity and Email services provide authentication and asynchronous email delivery. The sampled handlers establish some repository and blob-storage calls; other feature branches are represented from the tree, so their internal wiring is not asserted.
Main entry points: Streetcode Streetcode handlers · StreetcodeController.cs Streetcode endpoints · Features Auth and registration · RequestEmailDeliveryCommandHandler.cs Request delivery
Components 30
History content
- Streetcode handlers
Streetcode/Streetcode.BLL/MediatR/Streetcode - Content DTOs
Streetcode/Streetcode.BLL/DTO/Streetcode - Sources and citations
Streetcode/Streetcode.BLL/MediatR/Sources - Media features
Streetcode/Streetcode.BLL/MediatR/Media - Text parsing
Streetcode/Streetcode.BLL/MediatR/Streetcode/Text/GetParsed/GetParsedTextAdminPreviewHandler.cs - Team listings
Streetcode/Streetcode.BLL/MediatR/Team/GetAllMain/GetAllMainTeamHandler.cs
Streetcode API
- Web API
Streetcode/Streetcode.WebApi/Program.cs - Streetcode endpoints
Streetcode/Streetcode.WebApi/Controllers/Streetcode/StreetcodeController.cs - Result mapping
Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs - Feedback email request
Streetcode/Streetcode.BLL/MediatR/Email/SendEmailHandler.cs
Identity service
- Identity API
Streetcode.Identity/src/Streetcode.Identity.WebApi/Controllers/AuthController.cs - Auth and registration
Streetcode.Identity/src/Streetcode.Identity.Application/Features - Identity operations
Streetcode.Identity/src/Streetcode.Identity.Infrastructure/Identity/IdentityService.cs - Refresh tokens
Streetcode.Identity/src/Streetcode.Identity.Infrastructure/Security/RefreshTokenService.cs - Event outbox
Streetcode.Identity/src/Streetcode.Identity.Infrastructure/Persistence/Outbox/OutboxPublisher.cs
Email delivery
- Email request consumer
Streetcode.Email/src/Streetcode.Email.Infrastructure/Kafka/EmailRequestedConsumer.cs - Request delivery
Streetcode.Email/src/Streetcode.Email.Application/EmailRequests/RequestEmailDeliveryCommandHandler.cs - Delivery domain
Streetcode.Email/src/Streetcode.Email.Domain/EmailDeliveries/EmailDelivery.cs - Email database
Streetcode.Email/src/Streetcode.Email.Infrastructure/Persistence/EmailDbContext.cs - Job scheduler
Streetcode.Email/src/Streetcode.Email.Infrastructure/BackgroundJobs/HangfireEmailJobScheduler.cs - Send delivery job
Streetcode.Email/src/Streetcode.Email.Infrastructure/BackgroundJobs/SendEmailDeliveryJob.cs - SMTP sender
Streetcode.Email/src/Streetcode.Email.Infrastructure/EmailSending/MailKitEmailDeliverySender.cs
Persistence and integrations
- Content repositories
- SQL Server
- Blob storage
Streetcode/Streetcode.BLL/Interfaces/BlobStorage/IBlobService.cs - Identity database
Streetcode.Identity/src/Streetcode.Identity.Infrastructure/Persistence/StreetcodeIdentityDbContext.cs - Kafka
- SMTP service
Other components
- API caller
- Authentication client
Connections 27
- API caller → Web API: sends HTTP
- Web API → Streetcode endpoints: routes requests
- Streetcode endpoints → Streetcode handlers: sends queries
- Streetcode endpoints → Result mapping: maps results
- Streetcode handlers → Content repositories: reads or writes
- Content repositories → SQL Server: queries data
- Streetcode handlers → Content DTOs: returns content
- Streetcode handlers → Blob storage: loads media
- Streetcode handlers → Sources and citations: serves sources
- Streetcode handlers → Media features: serves media
- Streetcode handlers → Text parsing: parses text
- Streetcode handlers → Team listings: lists team
- Authentication client → Identity API: sends requests
- Identity API → Auth and registration: dispatches commands
- Auth and registration → Identity operations: uses identity
- Auth and registration → Refresh tokens: manages sessions
- Identity operations → Identity database: persists identity
- Refresh tokens → Identity database: stores tokens
- Event outbox → Kafka: publishes events
- Feedback email request → Kafka: publishes request
- Kafka → Email request consumer: delivers event
- Email request consumer → Request delivery: requests delivery
- Request delivery → Email database: stores delivery
- Request delivery → Job scheduler: schedules job
- Job scheduler → Send delivery job: dispatches job
- Send delivery job → SMTP sender: sends email
- SMTP sender → SMTP service: submits message