jersal-projects-core¶
This repository is the foundation of the Jersal organization. It wears three hats: shared infrastructure, portfolio website, and documentation hub.
Repository layout¶
jersal-projects-core/
├── .github/workflows/ # CI/CD pipelines
│ ├── terraform-plan.yml # Terraform plan on PRs to release
│ ├── terraform-apply.yml # Terraform apply on push to release
│ ├── site-deploy.yml # Portfolio site deployment
│ └── hub-deploy.yml # Documentation hub deployment
├── hub/ # This documentation hub (Material for MkDocs)
│ ├── mkdocs.yml
│ └── docs/
├── site/app/ # Portfolio website (Vite + TypeScript + Tailwind)
│ ├── src/
│ ├── index.html
│ └── vite.config.ts
├── terraform/
│ ├── backend/ # State backend bootstrapping
│ │ ├── shared/ # Shared state storage
│ │ └── site/ # Site state storage
│ ├── envs/ # Environment root modules
│ │ ├── shared/ # PostgreSQL, RBAC
│ │ └── site/ # Static Web App, RBAC
│ └── modules/ # Reusable Terraform modules
│ ├── postgres-flex/ # Azure PostgreSQL Flexible Server
│ ├── rbac/ # Role assignments
│ ├── resource-group/ # Azure Resource Groups
│ └── swa/ # Azure Static Web Apps
└── README.md
What it provides¶
Shared infrastructure¶
| Resource | Purpose | Details |
|---|---|---|
| PostgreSQL Flexible Server | Shared database server | Standard_B1ms, swedencentral, version 15 |
| Resource groups | Azure resource organization | rg-jersal-projects-shared, rg-jersal-site-sc |
| State backends | Terraform remote state storage | 2 storage accounts with blob containers |
| RBAC assignments | CI/CD access control | Contributor + Storage Blob Data Contributor |
Portfolio site¶
The Vite application at site/app/ serves as the public-facing portfolio at jersal.net. It showcases projects, work experience, and technologies.
- Stack: Vite 7.x, TypeScript 5.x, Tailwind CSS 4.x
- Hosting: Azure Static Web App (westeurope)
- Deploy: Automatic on push to
releasebranch
Documentation hub¶
This hub (what you're reading) provides organization-wide documentation, standards, and project tracking.
- Stack: Material for MkDocs
- Hosting: Azure Static Web App (separate from portfolio)
- Deploy: Automatic on push to
releasebranch whenhub/changes
CI/CD¶
All CI/CD runs through GitHub Actions targeting the release branch.
| Workflow | Trigger | What it does |
|---|---|---|
terraform-plan.yml |
PR to release (terraform/** changes) |
Runs terraform plan for shared and site environments |
terraform-apply.yml |
Push to release (terraform/** changes) |
Runs terraform apply for shared and site environments |
site-deploy.yml |
Push to release (site/app/** changes) |
Builds and deploys portfolio to Azure SWA |
hub-deploy.yml |
Push to release (hub/** changes) |
Builds and deploys this hub to Azure SWA |
Authentication¶
All CI/CD uses GitHub OIDC for Azure authentication. No stored credentials. See OIDC setup for details.