Puts nearby restaurants on a map and settles the "where do we eat?" argument with a random-pick wheel.
- C# / .NET
- React / TypeScript
- PostgreSQL
- Docker
- RabbitMQ
- Keycloak
Full-stack software engineer · Tallinn, Estonia
I build software that solves real problems.
I work across the whole stack — currently at Directo, building C#/.NET services and React interfaces. MSc Computer Science student at TalTech, with internship and teaching-assistant experience behind me.
The tools I reach for first, day to day.
Worked with, comfortable picking up again.
Platform architecture
Instead of rebuilding auth, email, error handling and messaging for every project, I run them once as core services that talk over an async message bus. Every app I build — shipped or planned — plugs into the same core instead of reinventing it.
Hover or tap a core service for its role and connections.
Built on the platform
The platform only earns its keep when real products run on it. These apps consume the shared hubs — auth, messaging, email, errors — instead of reinventing them. Hover or tap one for its stack and what it does.
Puts nearby restaurants on a map and settles the "where do we eat?" argument with a random-pick wheel.
TODO: one line on what this app does.
TODO: one line on what this app does.
Planned platform migrations
Published on NuGet
Every layer of the platform ships as a NuGet package — and each comes in two halves: a contract package holding the abstractions, and an implementation you can swap or replace. A new service references what it needs and composes the rest.
Contract
Implementation
Contract
Implementation
Contract
Implementation
Contract
Implementation
Contract
Implementation
Contract
Implementation
Implementation
using alaasmagi.Base.DataAccess.EF;
// CRUD, soft-delete, audit fields and default
// query filters — all inherited, nothing to write.
public class RestaurantRepository(AppDbContext db)
: BaseRepositorySoftDelete<Restaurant>(db);
How little you write
One line of inheritance and a repository has full CRUD, soft-delete, audit tracking and query filtering. The contract packages define the shape; the implementation packages bring the behaviour — a consumer just composes them.
The standard starting point for every .NET backend I build — the layered structure, the alaasmagi.Base packages and conventions already wired in, so each new service starts consistent instead of from scratch.
github.com/alaasmagi/alaasmagi-dotnet-templateWork history & about
I wired up my parents' home network while I was still in school — they still run on it today. That's roughly how this started: I cared about how the machines talked to each other long before I wrote a line of code. Networks turned into hosting Minecraft servers, which turned into teaching myself Python, which turned into this — building software end to end, most interested in the plumbing everyone else finds tedious.
Building and maintaining a SaaS platform for business management, focused on REST API development in C# and .NET. Also contributing React and TypeScript on the frontend, with AI tools as part of the daily workflow.
Specializing in software architecture, artificial intelligence, machine learning and IT management.
Led the modernization of the Software Engineering course materials, migrating all practical content from VB.NET and Windows Forms to C# and WPF on .NET 9.0. Made key technology decisions with the lecturers and ran lab sessions for both Estonian and English groups, reviewing student repositories and assessing submissions.
View report [Estonian] →Built and maintained AI-driven microservices in Go and PHP for article processing, vectorization and content recommendations. Built the backend for the Postimees 2025 election compass — the data model, the candidate–voter matching algorithm, and integration with Estonia's election service.
View report [Estonian] →Guided first-year students through C and Python and the fundamentals of PostgreSQL. Focused on software-engineering habits — clean code, structured problem-solving — and gave personalized feedback during hands-on assignments.
View report [Estonian] →Bachelor's degree focused on software and web development. My thesis became EduCode — a QR-code course-attendance system, later rebuilt as EduCode v2.
I got my hands on a computer at five and was immediately more interested in the networking than the games. That became YouTube tech rabbit holes, hosting Minecraft servers for friends, and eventually wiring up the family's home network. By the end of high school I'd taught myself Python and taken a programming course — the curiosity never really switched off.
Recommendation
“Aleksander is a curious, hardworking, and fast-learning developer who adapts quickly to new programming languages and tools.”
Selected work
A few things I've shipped outside the platform — thesis work, small products and tools. Each has a live build or source you can open.
A mobile app for booking wellness appointments — pick a service, choose a masseur, reserve a slot. Social login, biometric auth and push notifications, backed by Firebase.
My bachelor's thesis: an offline-first, QR-code course-attendance system. A C# / ASP.NET REST backend with React and React Native clients in a layered architecture.
An enhanced tic-tac-toe with configurable rules, a larger board and movable pieces. A shared C# game engine drives both a console app and a Razor Pages web UI.
An Estonian net / gross / employer-cost calculator with tax rules configurable via environment variables. ASP.NET MVC, plus an OpenAI-generated plain-language explanation of each result.
The EduCode rebuild — same offline-first, layered concept, addressing usability findings. A C# / ASP.NET backend with fully rebuilt Flutter and Vue clients.
Explore the rest of my repositories — and get in touch with any questions.
View GitHubGet in touch
Have a role, a project, or a question? Send a message, or grab my CV — I read everything that lands here.