Full-stack software engineer · Tallinn, Estonia

Aleksander Laasmägi

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.

Aleksander Laasmägi

Fluent

The tools I reach for first, day to day.

  • C# / .NET Backend
  • React / TypeScript Interfaces
  • PostgreSQL Databases
  • Docker Containers
  • RabbitMQ Messaging
  • Keycloak Identity

Familiar

Worked with, comfortable picking up again.

  • JavaScript
  • HTML
  • CSS
  • Vue
  • React Native
  • Flutter / Dart
  • Java / Spring
  • PHP / Laravel
  • Go
  • Python
  • C
  • MySQL
  • SQLite
  • Redis
  • Git
  • Figma
  • Vercel
  • Tailwind CSS
  • Bootstrap
  • Azure
  • AWS
  • Oracle Cloud
  • Firebase
  • Supabase

Platform architecture

One shared core, many apps

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.

EduCode
invoice-service
openai-salary-calculator
food-dashboard
tictactwo
fitness-app
PassMan
twitch-tracker
Core service App on the core In progress / planned
  • EduCode
  • invoice-service
  • openai-salary-calculator
  • food-dashboard
  • tictactwo
  • fitness-app
  • PassMan
  • twitch-tracker

Hover or tap a core service for its role and connections.

Built on the platform

Real apps, running on the core

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.

Built spec-first with OpenSpec / SDD, and the first app wired into the shared platform — it authenticates through identity-hub and publishes events to message-hub.

  • C# / .NET
  • React / TypeScript
  • PostgreSQL
  • Docker
  • RabbitMQ
  • Keycloak

TODO: one line on what this app does.

TODO: optional note — how it uses the platform.

  • Tech
  • Tech
  • Tech

TODO: one line on what this app does.

TODO: optional note — how it uses the platform.

  • Tech
  • Tech
  • Tech

Planned platform migrations

EduCode v2 Attendance system · Flutter + Vue
Halóre Wellness booking · mobile
Tic-Tac-Two Game · C# / .NET
Salary Calculator Net-pay tool · ASP.NET

Published on NuGet

The shared core, packaged in layers

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.

18 packages · alaasmagi.Base.* · v1.1.9

Contract — abstractions Implementation — behaviour
01 Domain Entities, base types, core model
02 DTO Data transfer objects & mapping
03 Data access Repositories, EF Core, unit of work
04 Application Services & business logic
05 Messaging Async events over a broker
06 Keycloak Identity & access integration
07 Cross-cutting Errors & caching, used across layers
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.

Standardized scaffolding GitHub template

.NET backend template

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-template

Work history & about

How I got here

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.

View CV View recommendation
  1. 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.

  2. Specializing in software architecture, artificial intelligence, machine learning and IT management.

  3. 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] →
  4. 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] →
  5. 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] →
  6. Bachelor's degree focused on software and web development. My thesis became EduCode — a QR-code course-attendance system, later rebuilt as EduCode v2.

  7. 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.”
Hardo Kampus Senior Software Developer · AS Postimees Grupp Internship recommendation · translated from Estonian
Read the full letter →

Selected work

Projects

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.

Halóre app screenshot

Halóre

Shipped

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.

  • Mobile
  • Firebase
  • Push notifications
EduCode v1 screenshot

EduCode (v1)

Shipped

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.

  • C#
  • ASP.NET
  • React
  • React Native
Tic-Tac-Two screenshot

Tic-Tac-Two

Shipped

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.

  • C#
  • .NET
  • Razor Pages
OpenAI Salary Calculator screenshot

OpenAI Salary Calculator

Shipped

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.

  • ASP.NET MVC
  • .NET
  • OpenAI API
EduCode v2 screenshot

EduCode v2

Ongoing · Fall 2026

The EduCode rebuild — same offline-first, layered concept, addressing usability findings. A C# / ASP.NET backend with fully rebuilt Flutter and Vue clients.

  • C#
  • ASP.NET
  • Flutter
  • Vue

More on GitHub

Explore the rest of my repositories — and get in touch with any questions.

View GitHub

Get in touch

Let's build something

Have a role, a project, or a question? Send a message, or grab my CV — I read everything that lands here.