Projects

Engineering across software, platforms and infrastructure.

A selection of professional, academic and independent projects spanning backend development, integration, automation, cloud and software delivery.

Nackademin

Full-Stack · Microservices · Team Project

Pensionat Booking System

An ongoing team project evolving a working full stack guesthouse booking system from a Spring Boot monolith toward microservices as its responsibilities grow. Customer management is being separated from booking and room responsibilities into its own Spring Boot service and MySQL database, while preserving the existing Next.js frontend and business rules.

JavaSpring BootMicroservicesREST APIsMySQLDockerReactNext.js
My contribution
  • Contributed to the original full stack system by implementing core booking features and integrating the Next.js frontend with the Spring Boot backend and MySQL database. Configured the team Git workflow with branch protection and Pull Request reviews, documented the project and shared solutions reused by the team.
  • Created the separate customer service repository by extracting and reorganising customer functionality into an independent Spring Boot application with its own layered structure, REST API, validation, error handling and MySQL database.
  • Cleaned and reorganised the booking backend, restored it to a functional state and adapted bookings to store the customer ID instead of a direct customer relationship, preparing the boundary between the services.
  • Currently responsible for the next implementation phase, including REST communication and failure handling between services, integration tests, application Dockerfiles, Docker Compose for the complete system, documentation and deployment.
Outcome

The work has preserved a functional booking system while establishing the first independent service boundary. Customer management now has its own Spring Boot application and MySQL database, while the booking model references customers by ID, providing a working foundation for connecting the services and completing the remaining delivery requirements.

Own project

DevOps · GitOps Platform

Electricity Price Sweden

Created to demonstrate a reliable delivery path from source code to Kubernetes without rebuilding artifacts between environments. A Flask application developed for the project visualises hourly electricity prices across Swedish regions, while separate application and GitOps repositories automate validation and controlled promotion through DEV, STAGING and PROD.

PythonFlaskDockerGitHub ActionsGitOpsKubernetesHelmArgo CDPrometheusGrafanaTrivy
My contribution
  • Developed the Flask application to retrieve, process and visualise electricity prices from an external API using Pandas and Plotly. Added health, readiness and Prometheus endpoints together with automated tests using pytest.
  • Designed the architecture across two repositories and automated tests, coverage, container image builds for multiple architectures and publication to GHCR with GitHub Actions. Added Trivy scanning, Gitleaks secret detection, CycloneDX SBOM generation and Dependabot.
  • Built Helm and Argo CD deployment across dedicated DEV, STAGING and PROD namespaces, with Pull Request based promotion of the same immutable image digest, SemVer releases and declarative rollback without rebuilding.
  • Implemented manifest and policy validation with Helm, kubeconform, kube-linter and OPA/Conftest, together with nonroot containers, NetworkPolicy and autoscaling.
  • Established runtime observability with Prometheus, Grafana and Alertmanager, defining and validating alert rules for availability, latency, error rates, upstream failures, resource usage and container restarts.
Outcome

The project produced a complete working GitOps flow in which one scanned container digest is promoted through DEV, STAGING and PROD and deployed by Argo CD without rebuilding. The application runs in three Kubernetes namespaces with health checks, policy controls, autoscaling, observability and a declarative rollback path, providing a reproducible demonstration of production oriented software delivery.

Nackademin

DevOps · Infrastructure Automation

Infrastructure Automation with Ansible

Created to replace repeated manual configuration of existing Linux hosts with structured and reusable automation. The solution uses Ansible playbooks, roles, inventories, encrypted variables and Jinja2 templates to configure web and database servers, security controls, monitoring and recurring system administration tasks.

AnsibleLinuxInfrastructure as CodeApacheMariaDBPrometheusNode ExporterDockerAnsible VaultJinja2
My contribution
  • Designed a modular Ansible structure with inventories, group variables, encrypted configuration through Ansible Vault, reusable roles and Jinja2 templates for separate web and database server responsibilities.
  • Automated Apache installation, service management, Virtual Host configuration and web content deployment. Configured MariaDB, created the application database and user, and assigned database permissions through a dedicated role.
  • Integrated a custom Ansible collection into the web server role, using a purpose-built module to generate and update a deterministic image from the deployed web content. Also automated the visitor application as an enabled user-level systemd service.
  • Implemented security and administration automation for default deny firewall rules, sudo restrictions, user management, hostnames, timezone configuration and selected AlmaLinux 9 compliance checks.
  • Installed Node Exporter as a systemd service on managed hosts and automated Prometheus configuration and Docker based monitoring on the control node, including scrape targets for the web and database servers.
Outcome

Produced a reusable automation baseline that configures web and database hosts consistently from one control node. Dedicated roles deploy Apache and MariaDB, while focused playbooks apply firewall, compliance and monitoring controls, replacing repeated manual steps with version controlled and maintainable infrastructure configuration.

Nackademin

DevOps · Hybrid Infrastructure

Windows Server & Azure Hybrid Infrastructure

Created to demonstrate how centralised identity and resource administration in a Windows Server domain can extend into Microsoft cloud services. The completed lab combines Active Directory, PowerShell automation and Group Policy with synchronised Microsoft Entra ID identities, Azure infrastructure, storage, secure connectivity and monitoring.

Windows ServerActive DirectoryMicrosoft AzureMicrosoft Entra IDPowerShellAzure FilesGroup PolicyHybrid Identity
My contribution
  • Designed and configured a Windows Server 2022 domain environment with Active Directory Domain Services, DNS, organisational units, security groups and role based access to shared resources.
  • Automated Active Directory user provisioning from CSV data with PowerShell, including account name generation, Swedish character normalisation, configurable organisational units, existing account validation and secure password handling.
  • Configured Group Policy, password and account lockout policies, NTFS permissions, folder redirection, file and print services, and IIS. Extended local users and groups into Microsoft Entra ID through identity synchronisation and connected them with Microsoft cloud services.
  • Extended the environment with Azure virtual infrastructure, Azure Files, Azure SQL Database, VPN connectivity, monitoring and storage administration. Configured a Windows Server file server in an Azure virtual machine with mirrored NTFS storage.
Outcome

The project produced a completed hybrid lab in which corresponding users and groups were represented in both Active Directory and Microsoft Entra ID. Centralised policies and PowerShell automation standardised local administration, while Azure Files and an Azure hosted Windows file server with mirrored storage demonstrated cloud connected identity, infrastructure and file services.

Add the PDF file to public/documents first.