[{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/azure/","section":"Tags","summary":"","title":"Azure","type":"tags"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/blog/","section":"Blog","summary":"","title":"Blog","type":"blog"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/blowfish/","section":"Tags","summary":"","title":"Blowfish","type":"tags"},{"content":"I work as a consultant for teams that need senior technical judgment, hands-on execution, and someone who can make complex things work.\nI help turn rough ideas, stalled initiatives, and fragile systems into dependable solutions — across software, infrastructure, delivery, and day-to-day operations.\nHere I write about systems, products, and the decisions that matter when things need to work in the real world.\n","date":"18 March 2026","externalUrl":null,"permalink":"/en/","section":"Dominic","summary":"","title":"Dominic","type":"page"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/github-actions/","section":"Tags","summary":"","title":"Github-Actions","type":"tags"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/opentofu/","section":"Tags","summary":"","title":"Opentofu","type":"tags"},{"content":"This is how I built rdgy.at – and how you can replicate it:\nHugo for the site Blowfish for the theme Azure Static Web Apps for hosting OpenTofu for infrastructure GitHub Actions for automated deployment The final URL structure looks like this:\nwww.example.com/ -\u0026gt; homepage www.example.com/blog/ -\u0026gt; blog www.example.com/projects/ www.example.com/services/ example.com -\u0026gt; forwards to https://www.example.com If you need this setup for your own business – whether as a simple blog, company website, or a standalone product like Belegmappe.at – get in touch at office@rdgy.at. We\u0026rsquo;ll talk through what you need, and I\u0026rsquo;ll be straight with you about whether and how I can help.\nGerman is the default language. Content is written first under content/de, then translated into content/en.\nPhase 1 – Build the Site Locally # 1. Install the tools # You need:\nHugo Extended Git OpenTofu Azure CLI On macOS one command is enough:\nbrew install hugo opentofu azure-cli Then verify everything installed correctly:\nhugo version tofu version az version 2. Create the site and add Blowfish # hugo new site my-site cd my-site git init git submodule add -b main \\ https://github.com/nunocoracao/blowfish.git \\ themes/blowfish mkdir -p config/_default cp themes/blowfish/config/_default/*.toml config/_default/ 3. Configure Hugo # The two most important config files:\nconfig/_default/hugo.toml – general settings, languages, navigation config/_default/params.toml – layout and appearance config/_default/hugo.toml # theme = \u0026#34;blowfish\u0026#34; baseURL = \u0026#34;https://www.example.com/\u0026#34; defaultContentLanguage = \u0026#34;de\u0026#34; defaultContentLanguageInSubdir = false enableRobotsTXT = true summaryLength = 0 [outputs] home = [\u0026#34;HTML\u0026#34;, \u0026#34;RSS\u0026#34;, \u0026#34;JSON\u0026#34;] [taxonomies] tag = \u0026#34;tags\u0026#34; category = \u0026#34;categories\u0026#34; [languages] [languages.en] weight = 2 contentDir = \u0026#34;content/en\u0026#34; [languages.de] weight = 1 contentDir = \u0026#34;content/de\u0026#34; [languages.en.menu] [[languages.en.menu.main]] name = \u0026#34;Blog\u0026#34; pageRef = \u0026#34;blog\u0026#34; weight = 10 [[languages.en.menu.main]] name = \u0026#34;Projects\u0026#34; pageRef = \u0026#34;projects\u0026#34; weight = 20 [[languages.en.menu.main]] name = \u0026#34;Services\u0026#34; pageRef = \u0026#34;services\u0026#34; weight = 30 [languages.de.menu] [[languages.de.menu.main]] name = \u0026#34;Blog\u0026#34; pageRef = \u0026#34;blog\u0026#34; weight = 10 [[languages.de.menu.main]] name = \u0026#34;Projekte\u0026#34; pageRef = \u0026#34;projects\u0026#34; weight = 20 [[languages.de.menu.main]] name = \u0026#34;Leistungen\u0026#34; pageRef = \u0026#34;services\u0026#34; weight = 30 A few things to note:\nbaseURL always points to www German lives at /, English at /en/ Navigation is defined per language here config/_default/params.toml # defaultBackgroundImage = \u0026#34;img/background.jpg\u0026#34; [homepage] layout = \u0026#34;background\u0026#34; homepageImage = \u0026#34;img/background.jpg\u0026#34; showRecent = true showRecentItems = 3 [article] showDate = true showAuthor = true showReadingTime = true showTableOfContents = true showTaxonomies = true showPagination = true showHero = true heroStyle = \u0026#34;thumbAndBackground\u0026#34; [list] showHero = true heroStyle = \u0026#34;background\u0026#34; showSummary = true showCards = true cardView = true This gives you:\nHomepage with background image Hero sections on blog and project pages Latest posts on the homepage Card view for blog and projects 4. Set up the content structure # Sections (blog, projects) get a _index.md. Individual pages (posts, projects) are regular .md files.\nmkdir -p content/de/blog mkdir -p content/de/projects mkdir -p content/en/blog mkdir -p content/en/projects mkdir -p static/img The structure looks like this:\ncontent/ ├── de/ │ ├── _index.md │ ├── blog/ │ │ ├── _index.md │ │ └── first-post/index.md │ ├── projects/ │ │ ├── _index.md │ │ └── product-a.md │ └── services.md └── en/ ├── _index.md ├── blog/ ├── projects/ └── services.md Homepage example # content/de/_index.md\n--- title: \u0026#34;Dominic\u0026#34; description: \u0026#34;Cloud engineer from Innsbruck.\u0026#34; --- I build cloud infrastructure for teams that prefer to hand off production deployments to someone experienced. Blog index example # content/de/blog/_index.md\n--- title: \u0026#34;Blog\u0026#34; description: \u0026#34;Notes on Cloud, Infrastructure as Code and Software Delivery.\u0026#34; --- Project page example # content/de/projects/product-a.md\n--- title: \u0026#34;Product A\u0026#34; description: \u0026#34;Short product description.\u0026#34; summary: \u0026#34;Short text for the project card in the overview.\u0026#34; showDate: false showReadingTime: false --- ## Idea What the product is about. ## Challenges - Challenge one - Challenge two ## Tech Stack - Hugo - PostgreSQL - Azure ## Live Project [product-a.com](https://product-a.com) Write the German content first, then create the matching translation under content/en/.\n5. Test the site locally # hugo server Open in your browser:\nhttp://localhost:1313/ – German version http://localhost:1313/en/ – English version Once the site looks the way you want locally, move on to deployment.\nPhase 2 – Infrastructure with OpenTofu # OpenTofu describes the Azure infrastructure as code. Write it once, reuse and version it forever.\n6. Provision Azure with OpenTofu # Create an infra/ directory in the project root and add the four files below. Then get your credentials and roll everything out with tofu apply.\nmkdir infra infra/variables.tf # This file declares all the inputs OpenTofu needs. The actual values don\u0026rsquo;t live here – they come from terraform.tfvars. This keeps the structure and the secrets cleanly separated.\nsensitive = true tells OpenTofu never to print these values in the terminal – not even during apply.\nlocation has a default value (westeurope) that is used unless you specify otherwise.\nvariable \u0026#34;subscription_id\u0026#34; { type = string sensitive = true } variable \u0026#34;client_id\u0026#34; { type = string sensitive = true } variable \u0026#34;client_secret\u0026#34; { type = string sensitive = true } variable \u0026#34;tenant_id\u0026#34; { type = string sensitive = true } variable \u0026#34;location\u0026#34; { type = string default = \u0026#34;westeurope\u0026#34; } infra/main.tf # This is the actual infrastructure. OpenTofu reads this file and creates the described resources in Azure – or updates them if they already exist.\nterraform block – specifies the provider version. azurerm is the official Azure plugin. Version ~\u0026gt; 3.0 allows all patch updates within version 3, but no major version jump.\nprovider \u0026quot;azurerm\u0026quot; – connects OpenTofu to your Azure account using the variables above.\nazurerm_resource_group – a resource group is a logical container in Azure. All related resources land in it. Delete the group and everything inside it goes with it.\nazurerm_static_web_app – the actual hosting. Azure Static Web Apps serves the site, distributes it globally via CDN, and handles HTTPS automatically. The Free tier is fully sufficient for a regular website.\nazurerm_static_web_app_custom_domain – links your own domain (www.example.com) to the Static Web App. cname-delegation means Azure checks that the CNAME record in DNS points to the Azure hostname before activating the domain.\nterraform { required_providers { azurerm = { source = \u0026#34;hashicorp/azurerm\u0026#34; version = \u0026#34;~\u0026gt; 3.0\u0026#34; } } required_version = \u0026#34;\u0026gt;= 1.6.0\u0026#34; } provider \u0026#34;azurerm\u0026#34; { features {} subscription_id = var.subscription_id client_id = var.client_id client_secret = var.client_secret tenant_id = var.tenant_id } resource \u0026#34;azurerm_resource_group\u0026#34; \u0026#34;site\u0026#34; { name = \u0026#34;rg-my-site\u0026#34; location = var.location } resource \u0026#34;azurerm_static_web_app\u0026#34; \u0026#34;site\u0026#34; { name = \u0026#34;stapp-my-site\u0026#34; resource_group_name = azurerm_resource_group.site.name location = azurerm_resource_group.site.location sku_tier = \u0026#34;Free\u0026#34; sku_size = \u0026#34;Free\u0026#34; } resource \u0026#34;azurerm_static_web_app_custom_domain\u0026#34; \u0026#34;www\u0026#34; { static_web_app_id = azurerm_static_web_app.site.id domain_name = \u0026#34;www.example.com\u0026#34; validation_type = \u0026#34;cname-delegation\u0026#34; } infra/outputs.tf # After apply, OpenTofu prints these values in the terminal. You\u0026rsquo;ll need them for the next steps – domain setup and the GitHub secret.\nsite_url – the auto-generated Azure URL for your site (e.g. https://proud-rock-abc123.azurestaticapps.net). Use this to verify the deployment worked before pointing your domain. deployment_token – the secret key GitHub Actions needs to upload files to Azure. Comes next as a GitHub secret. www_cname_target – the hostname your www CNAME record at your DNS provider needs to point to. output \u0026#34;site_url\u0026#34; { value = \u0026#34;https://${azurerm_static_web_app.site.default_host_name}\u0026#34; } output \u0026#34;deployment_token\u0026#34; { value = azurerm_static_web_app.site.api_key sensitive = true } output \u0026#34;www_cname_target\u0026#34; { value = azurerm_static_web_app.site.default_host_name } Get your Azure credentials # Before filling in terraform.tfvars, you need the four values from Azure. One-time setup:\n1. Log in to Azure\naz login A browser window opens – sign in with your Microsoft account.\n2. Get the Subscription ID\naz account show --query id -o tsv Use this value as subscription_id.\n3. Create a Service Principal\nA service principal is a technical account that OpenTofu uses to create resources in Azure – think of it like an API key, but for Azure.\naz ad sp create-for-rbac \\ --name \u0026#34;sp-my-site\u0026#34; \\ --role Contributor \\ --scopes /subscriptions/\u0026lt;YOUR_SUBSCRIPTION_ID\u0026gt; The output looks like this:\n{ \u0026#34;appId\u0026#34;: \u0026#34;...\u0026#34;, \u0026lt;- this is client_id \u0026#34;password\u0026#34;: \u0026#34;...\u0026#34;, \u0026lt;- this is client_secret \u0026#34;tenant\u0026#34;: \u0026#34;...\u0026#34; \u0026lt;- this is tenant_id } The secret is only shown once – save it immediately.\ninfra/terraform.tfvars # Now fill in the four values. This file contains real credentials – it must never go into the Git repository. Add it to .gitignore right away:\necho \u0026#34;infra/terraform.tfvars\u0026#34; \u0026gt;\u0026gt; .gitignore subscription_id = \u0026#34;...\u0026#34; client_id = \u0026#34;...\u0026#34; client_secret = \u0026#34;...\u0026#34; tenant_id = \u0026#34;...\u0026#34; Apply the infrastructure # cd infra tofu init tofu apply cd .. tofu init downloads the Azure provider. tofu apply shows you a preview of all resources to be created first – confirm with yes.\nPhase 3 – CI/CD with GitHub Actions # From here on, every deployment runs automatically: push to main → Hugo builds the site → Azure publishes it.\n7. Set up the GitHub repository # If you don\u0026rsquo;t have one yet, create an empty repository on github.com. Then connect it locally:\ngit remote add origin https://github.com/\u0026lt;your-username\u0026gt;/my-site.git 8. Configure GitHub Actions # Create .github/workflows/deploy.yml:\nname: Deploy rdgy.at to Azure on: push: branches: [main] jobs: build_and_deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: \u0026#39;0.157.0\u0026#39; extended: true - name: Build run: hugo --minify - name: Deploy to Azure Static Web Apps uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }} action: \u0026#34;upload\u0026#34; app_location: \u0026#34;public\u0026#34; output_location: \u0026#34;\u0026#34; skip_app_build: true Hugo builds the site into public/ – the deploy step uploads that folder directly to Azure.\n9. Add the GitHub secret # Read the deployment token from OpenTofu:\ncd infra tofu output -raw deployment_token cd .. Add it as a secret in GitHub:\nRepository → Settings → Secrets and variables → Actions → New repository secret Name:\nAZURE_STATIC_WEB_APPS_API_TOKEN Phase 4 – Domain \u0026amp; Go Live # 10. Configure the domain # Step 1: Get the CNAME target\ncd infra tofu output www_cname_target cd .. The output looks something like:\nproud-rock-abc123.azurestaticapps.net Step 2: Set the DNS records\nAt your DNS provider (e.g. Cloudflare, Namecheap, Google Domains) create two records:\nType Name Value CNAME www proud-rock-abc123.azurestaticapps.net Redirect / ALIAS @ (Apex) https://www.example.com The www record connects your domain directly to Azure. The apex record (example.com without www) is set as an HTTP redirect – most DNS providers call it \u0026ldquo;Redirect\u0026rdquo; or \u0026ldquo;URL Forward\u0026rdquo;.\nStep 3: Wait for domain validation\nAzure automatically checks whether the CNAME record is set correctly (cname-delegation from main.tf). This can take a few minutes to an hour depending on your DNS provider. HTTPS is then activated automatically – no manual certificate request needed.\nCheck the status:\naz staticwebapp hostname list --name stapp-my-site --resource-group rg-my-site Once provisioningState shows Succeeded, the domain is live.\n11. Push and go live # git add . git commit -m \u0026#34;feat: initial site\u0026#34; git push origin main GitHub Actions kicks off automatically, builds the site, and deploys it to Azure Static Web Apps.\nSummary # Phase What happens 1 – Local Set up Hugo + Blowfish, write content, test locally 2 – IaC Create Azure infrastructure with OpenTofu 3 – CI/CD Set up GitHub Actions for automated deployment 4 – Live Configure the domain, make the first push The result is a fast, static website with a blog, projects, and bilingual routing – no backend required.\n","date":"18 March 2026","externalUrl":null,"permalink":"/en/blog/hugo-azure-opentofu/","section":"Blog","summary":"A step-by-step guide to building the same Hugo setup with Blowfish, Azure Static Web Apps, OpenTofu and GitHub Actions.","title":"rdgy.at – Hugo, Blowfish, OpenTofu, Azure and GitHub Actions in Two Hours","type":"blog"},{"content":"","date":"18 March 2026","externalUrl":null,"permalink":"/en/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/tags/agritech/","section":"Tags","summary":"","title":"Agritech","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/tags/austria/","section":"Tags","summary":"","title":"Austria","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/tags/marketplace/","section":"Tags","summary":"","title":"Marketplace","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/tags/saas/","section":"Tags","summary":"","title":"Saas","type":"tags"},{"content":"Stella connects farmers and direct marketers in Austria with consumers — product-based, with live inventory, and without the friction other marketplaces bring.\nThe hard part isn\u0026rsquo;t the platform. It\u0026rsquo;s marketplace liquidity. The rollout is regional, staged, and operationally honest about that.\nstella.co.at\n","date":"1 January 2025","externalUrl":null,"permalink":"/en/projects/stella/","section":"Projects","summary":"Farm products from your area. A regional food marketplace connecting producers in Austria directly with consumers.","title":"Stella","type":"projects"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/en/tags/two-sided-platform/","section":"Tags","summary":"","title":"Two-Sided-Platform","type":"tags"},{"content":"I got tired of printing invoices every month, matching them against bank transactions, and walking into the accountant\u0026rsquo;s office with a heavy folder. So I built the alternative.\nGoBD-compliant digital receipt archiving for freelancers and SMEs in the DACH region. Deliberately focused on exactly this one workflow — nothing more.\nbelegmappe.at\n","date":"1 January 2024","externalUrl":null,"permalink":"/en/projects/belegmappe/","section":"Projects","summary":"Born out of the monthly effort of printing invoices, matching them against bank transactions, and carrying a heavy folder to the accountant.","title":"Belegmappe.at","type":"projects"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/fastify/","section":"Tags","summary":"","title":"Fastify","type":"tags"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/fintech/","section":"Tags","summary":"","title":"Fintech","type":"tags"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/fly.io/","section":"Tags","summary":"","title":"Fly.io","type":"tags"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/gobd/","section":"Tags","summary":"","title":"Gobd","type":"tags"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/nextjs/","section":"Tags","summary":"","title":"Nextjs","type":"tags"},{"content":"","date":"1 January 2024","externalUrl":null,"permalink":"/en/tags/postgresql/","section":"Tags","summary":"","title":"Postgresql","type":"tags"},{"content":"","date":"1 January 2022","externalUrl":null,"permalink":"/en/tags/b2b/","section":"Tags","summary":"","title":"B2b","type":"tags"},{"content":"","date":"1 January 2022","externalUrl":null,"permalink":"/en/tags/cloud/","section":"Tags","summary":"","title":"Cloud","type":"tags"},{"content":"","date":"1 January 2022","externalUrl":null,"permalink":"/en/tags/data-intensive/","section":"Tags","summary":"","title":"Data-Intensive","type":"tags"},{"content":"","date":"1 January 2022","externalUrl":null,"permalink":"/en/tags/event-driven/","section":"Tags","summary":"","title":"Event-Driven","type":"tags"},{"content":"Haggla is the company behind my consulting and engineering work. We take over cloud systems, production operations, and data-intensive workloads for teams that need senior experience — not more meetings.\nWe get called in when a system has grown past what the internal team can manage: fragile deployments, opaque data flows, too much knowledge concentrated in too few people. We stabilise it and hand it back.\nhaggla.at\n","date":"1 January 2022","externalUrl":null,"permalink":"/en/projects/haggla/","section":"Projects","summary":"Cloud infrastructure and production operations for teams that need senior experience without building an internal platform team.","title":"Haggla Software Solutions","type":"projects"},{"content":"","date":"1 January 2022","externalUrl":null,"permalink":"/en/tags/kafka/","section":"Tags","summary":"","title":"Kafka","type":"tags"},{"content":" Enter the purchase price, choose whether you're financing and using a broker — and instantly see all ancillary costs broken down to the cent.\n1Enter parameters → 2Adjust rates (optional) → 3Read result 1Purchase parameters Purchase price € Total price incl. ancillary costs (approx. 10–12 % in Austria). Purchase type Cash purchase With mortgage Loan amount € The financed portion — mortgage registration fee is calculated on this amount. Broker No broker With broker Ancillary costs — — Purchase price — Purchase price Total costs — Price + ancillary Ancillary costs in % — of purchase price Cost breakdown Property transfer tax§ 7 Abs. 1 Z 3 GrEStG — — Land register entryTP 9 lit. b GGG — — Notary costs (incl. 20 % VAT)NTG tariff incl. contract, escrow, land register — — Broker fee (incl. 20 % VAT)§ 23 IMMVO — max. 3 % net — — Mortgage registration feeTP 9 lit. b Z 1 GGG — on loan amount — — Total ancillary costs — — 2Adjust rates Transfer tax % Standard: 3.50 % (§ 7 GrEStG) Land register entry % Standard: 1.10 % (TP 9 GGG) Notary costs (net) % Typ. 1.0–2.0 % net + 20 % VAT (NTG) Broker fee (net) % Max. 3.00 % net (§ 23 IMMVO) + 20 % VAT Mortgage registration % Standard: 1.20 % of loan (TP 9 GGG) Your purchase at a glance Ancillary costs — Ancillary costs in % — Total investment — Loan amount — — Alle Angaben ohne Gewähr. Die Ergebnisse dieses Rechners dienen ausschließlich der unverbindlichen Orientierung und ersetzen keine individuelle Beratung durch eine Bank, einen Notar oder Rechtsanwalt. rdgy.at Embed this tool on your website ↓ \u0026lt;iframe src=\"https://www.rdgy.at/tools/nebenkostenrechner.html?kaufpreis=430000\u0026amp;kreditbetrag=344000\u0026amp;makler=1\u0026amp;kredit=1\u0026amp;grest=3.5\u0026amp;gb=1.1\u0026amp;notar=1.5\u0026amp;maklerpct=3\u0026amp;pfand=1.2\u0026amp;theme=dark\" width=\"100%\" height=\"900\" style=\"border:none; border-radius:16px; display:block;\" title=\"Ancillary Cost Calculator – rdgy.at\"\u0026gt; \u0026lt;/iframe\u0026gt; ","externalUrl":null,"permalink":"/en/tools/nebenkostenrechner/","section":"Tools","summary":"","title":"Ancillary Cost Calculator","type":"tools"},{"content":"","externalUrl":null,"permalink":"/en/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/en/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" Company # RDGY Software GmbH\nTiergartenstraße 132\n6020 Innsbruck\nAustria\nEmail: office@rdgy.at\nCompany Information # Commercial register number: FN 665064k\nTrade register / GISA: 39292735\nResponsible for Content # Dominic Rudigier\npursuant to § 25 MedienG\nBusiness Purpose # Software development, platform engineering, infrastructure automation and related consulting services.\nBasic Direction of the Website # This website provides information about RDGY Software GmbH, its projects, services and technical work.\nLiability for Content # The contents of this website are created with reasonable care. However, no guarantee is given for correctness, completeness or current validity.\nLiability for Links # This website contains links to external websites of third parties. Their contents are outside our control. Responsibility for linked content lies with the respective operators of those websites.\nCopyright # Unless stated otherwise, the content of this website is subject to copyright. Third-party content is marked where applicable.\n","externalUrl":null,"permalink":"/en/imprint/","section":"Dominic","summary":"","title":"Imprint","type":"page"},{"content":" Enter your purchase price, down payment, term and interest rate — then optionally simulate extra repayments to see how much you save on interest and how much earlier you become debt-free.\n1Configure loan → 2Test extra repayments → 3Read your results 1Loan Parameters Purchase Price € Total price incl. additional costs (approx. 10–12 % in Austria: land register, notary, agent). Down Payment € Recommendation: at least 20 % of purchase price — banks charge surcharges below that threshold. Loan Amount (Purchase Price − Down Payment) 350.000 € Term Jahre Longer term = lower monthly payment, but significantly more total interest. Interest Rate p.a. % Surcharges vary by bank and creditworthiness. Monthly Payment — p.m. Loan Amount — — Total Interest — — Total Repayment — Loan + Interest Amortization Schedule Balance without EP Balance with EP Cum. Interest without EP Cum. Interest with EP 2Extra Repayments Penalty 2.00 % Extra repayments reduce your outstanding balance directly — saving interest and shortening your term. Many contracts allow up to 10 % p.a. penalty-free. Set the amount to 0 to skip this step.\nPrepayment Penalty % Bank fee for early repayment. Common in Austria: 1–3 %. Many contracts allow 10 % p.a. penalty-free. Type of Extra Repayment One-time Yearly Monthly Amount € After Year Jahr The earlier the extra repayment, the higher the interest savings — because the remaining balance is still large. Yearly Amount € From Year Jahr Until Year (incl.) Jahr Monthly Extra Amount € From Month Monat Until Month Monat Without Extra Repayments Term— Total Interest— Repayment— With Extra Repayments Term— Total Interest— Repayment— Total Extra Repayments— Total Penalty (2.00 %)— Interest Savings— Term Reduction— Net Savings (after Penalty)— 3 Your Plan at a Glance Total Interest — without EP — Total Interest — with EP — Per €1 borrowed — ohne ST — Per €1 borrowed — mit ST — Net Interest Savings — Debt-free from — — Alle Angaben ohne Gewähr. Die Ergebnisse dieses Rechners dienen ausschließlich der unverbindlichen Orientierung und ersetzen keine individuelle Beratung durch eine Bank, einen Notar oder Rechtsanwalt. rdgy.at Embed this tool on your website ↓ \u0026lt;!-- All parameters optional. theme=dark|light overrides OS preference. --\u0026gt; \u0026lt;iframe src=\"https://www.rdgy.at/tools/kreditrechner.html?kaufpreis=430000\u0026amp;eigenkapital=80000\u0026amp;laufzeit=25\u0026amp;zinssatz=3.75\u0026amp;poenale=2\u0026amp;theme=dark\" width=\"100%\" height=\"2400\" style=\"border:none; border-radius:16px; display:block;\" title=\"Loan Calculator – rdgy.at\"\u0026gt; \u0026lt;/iframe\u0026gt; ","externalUrl":null,"permalink":"/en/tools/kreditrechner/","section":"Tools","summary":"","title":"Loan Calculator","type":"tools"},{"content":" ","externalUrl":null,"permalink":"/en/tools/nettogehaltrechner/","section":"Tools","summary":"","title":"Net Salary Calculator","type":"tools"},{"content":" Controller # RDGY Software GmbH\nTiergartenstraße 132\n6020 Innsbruck\nAustria\nEmail: office@rdgy.at\nPurpose of This Page # This privacy policy explains what personal data is processed when you visit this website or contact us by email.\nNature of the Website # This is a static website. It currently does not provide user accounts, comment functions, contact forms or its own application backend for visitors.\nFor ordinary website visits, the main personal data processing therefore happens at the hosting and network layer.\nHosting Provider and Region # This website is hosted on Microsoft Azure using Azure Static Web Apps. The Azure resource for this website is provisioned in the Azure region West Europe (westeurope).\nMicrosoft classifies West Europe as a region in the Europe geography and locates that region in the Netherlands.\nTechnical Delivery of the Website # Microsoft documents that Azure Static Web Apps offers globally distributed static content and serves static assets through geographically distributed delivery points.\nThis means:\nthe primary Azure resource for this website is configured in West Europe static files may still be delivered through Azure\u0026rsquo;s distributed edge and network infrastructure request handling may therefore not always be limited to a single datacenter region Where Microsoft processes customer data as part of Azure services, Microsoft\u0026rsquo;s contractual privacy and security commitments are governed by its Data Protection Addendum and related GDPR commitments.\nHosting and Server Logs # When you access this website, the hosting platform and related delivery infrastructure may process technical access data, including:\nIP address requested URL and hostname date and time of the request HTTP status information referrer URL browser, device and operating system information technical security, routing and diagnostic metadata This processing is required in order to:\ndeliver the website content provide transport security and stable availability defend against abuse and malicious traffic troubleshoot operational and security incidents Legal basis: Art. 6(1)(f) GDPR (legitimate interests in secure, stable, and defensible website operation).\nRecipients and Processors # Personal data processed in connection with the hosting of this website may be received by:\nMicrosoft Azure as hosting and infrastructure provider technical service providers engaged by Microsoft within its cloud delivery chain We do not currently use separate visitor analytics tools such as Google Analytics, Matomo, Plausible, or Microsoft Application Insights on this website.\nInternational Data Transfers # The website resource itself is operated in the Azure region West Europe within the Europe geography. At the same time, Microsoft states that Azure Static Web Apps uses geographically distributed delivery points for static content.\nBased on that platform design, we infer that technical request processing may, depending on visitor location and delivery path, involve Azure edge or network infrastructure outside the West Europe region and potentially outside the EEA.\nWhere such processing occurs through Microsoft cloud services, it is subject to Microsoft\u0026rsquo;s contractual privacy and security framework for its enterprise cloud services.\nLocal Storage and Technical Preferences # This website does not currently use analytics or marketing cookies. Depending on theme features and browser behavior, the site may use your browser\u0026rsquo;s local storage for technical preference values, for example display or accessibility preferences.\nSuch data remains in your browser and is not used by us for analytics or advertising purposes.\nEmail Contact # If you contact us by email, the data you provide will be processed to handle your request and any necessary follow-up communication.\nLegal basis:\nArt. 6(1)(b) GDPR if your message relates to a contract or pre-contractual request Art. 6(1)(f) GDPR for general business communication No Analytics or Marketing Cookies # This website currently does not use analytics, advertising trackers, or marketing cookies. If that changes, this privacy policy will be updated.\nExternal Links # This website links to external services such as LinkedIn, GitHub and project websites. When you follow those links, the privacy policies of the respective providers apply.\nRetention # Personal data is retained only as long as necessary for the respective purpose.\nIn particular:\nemail correspondence is retained for as long as required to process the request and any related business communication technical hosting and security logs are retained only as long as operationally necessary under the relevant platform settings, incident-handling needs, and legal obligations We do not knowingly collect special categories of personal data through normal website use.\nYour Rights # Under the GDPR, you have the right to:\naccess your personal data request rectification request erasure request restriction of processing object to processing data portability, where applicable If you believe that data processing on this website violates data protection law, you may lodge a complaint with the Austrian Data Protection Authority (Datenschutzbehörde).\n","externalUrl":null,"permalink":"/en/privacy/","section":"Dominic","summary":"","title":"Privacy Policy","type":"page"},{"content":"","externalUrl":null,"permalink":"/en/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"I help selected companies build, operate, and optimize their Azure infrastructure — fully as code, through Haggla Software Solutions.\n☁️ Azure Infrastructure as Code\nComplete IaC setup with OpenTofu: Container Apps, PostgreSQL Flexible Server, Service Bus, Key Vault, CI/CD pipelines. Your entire infrastructure as reviewable, versionable code — no click-ops, no surprises.\n📊 Data-Intensive Production Environments\nI design and operate architectures for data-intensive systems on Azure: scalable data pipelines, event-driven architectures with Service Bus, high-performance database setups, and reliable production deployments.\n🔧 Ongoing Maintenance \u0026amp; Operations\nI take over the day-to-day operations of your Azure environment on a retainer basis: monitoring, updates, incident response, cost optimization, and documentation — without requiring an in-house cloud team.\nGet in touch: office@rdgy.at Tell me about your stack and your data. Together we\u0026rsquo;ll figure out how I can best support you.\n","externalUrl":null,"permalink":"/en/services/","section":"Dominic","summary":"","title":"Services","type":"page"},{"content":"","externalUrl":null,"permalink":"/en/tools/","section":"Tools","summary":"","title":"Tools","type":"tools"}]