How it's built

Tech Stack

Every tool listed below is a real dependency in this project's own manifests. We list the declared version and the reason it is here, rather than a wall of logos.

Frontend

A modern Angular stack with server-side rendering, so pages are crawlable and fast on first paint rather than JavaScript-dependent.

Angular

^22.1.5

Standalone components and signals give fine-grained reactivity, so a page only re-renders the part of the UI that actually changed.

Project site (opens in a new tab)

TypeScript

~6.0.3

The calculator and invoicing logic is pure, unit-tested TypeScript kept in plain functions, which is what makes it straightforward to verify and re-use.

Project site (opens in a new tab)

Tailwind CSS

^3.4.17

A shared design vocabulary instead of per-component CSS, so spacing, colour and dark mode stay consistent as the site grows.

Project site (opens in a new tab)

Angular SSR

^22.1.6

Server rendering plus prerendering for static routes means crawlers and social scrapers receive real HTML, not an empty shell.

Project site (opens in a new tab)

Content & security

Content authored as Markdown or structured blocks, then sanitised before it reaches the DOM. Any code that renders user-supplied HTML goes through these.

Backend

An ASP.NET Core API in this same repository, sharing the domain with the frontend instead of hiding it in a separate codebase.

Testing & delivery

Behaviour is pinned by automated tests, and the same tests that run locally gate the production build.

Jasmine & Karma

jasmine-core ^5.5.0

The suite covers the tax and zakat calculations, form validation, SEO metadata and sitemap generation, and runs headless in CI.

Project site (opens in a new tab)

Source on GitHub

The frontend and the API for this site live in one repository, so a change to a data model or an endpoint can be reviewed end to end instead of across two codebases.

View the repository (opens in a new tab)

We do not publish star or contributor counts on this page, because we would rather show you the code than the scoreboard.