Team work manager on Azure DevOps
Internal tool the team uses to manage capacity, sprints and tasks, and to create tickets in Jira and Azure DevOps. FastAPI, Astro and Docker.
Problem
Azure DevOps does not cover the team's day-to-day: real capacity after days off, batch task creation, the sprint in one view, and the bridge to Jira. Work leaked into extra tabs, spreadsheets and copy-pasted tickets.
Solution
A web app —FastAPI and Astro/React, brought up with Docker— that talks to the Azure DevOps and Jira APIs: team capacity, sprint grid, kanban, bulk import, Jira→Azure sync and process automation.
Results
Azure DevOps and Jira
Integrations
Team day-to-day
Use
Docker Compose
Delivery
Tech stack
- Python
- Astro
- React
- Azure DevOps
- Jira
- Docker
- SQLite
- FastAPI
An internal tool I built for the team: the Azure DevOps board was not enough for day-to-day work. Here you see real capacity, you manage sprints and tasks, you create tickets in Jira and Azure, and you automate processes that used to be copy-paste.
The repository is private. This case covers what the product does, not Proeduca’s backlog.
What it covers
- Team capacity. Hours per member from Azure DevOps, after days off — not a flat hours-per-day figure.
- Sprint. Task grid, kanban, backlog and a daily standup panel. Filters for assignee, state, Area Path and parent PBI.
- Creating work. Individual or batch tasks, PBIs from scratch, bulk import from Excel/CSV and bulk update.
- Jira ↔ Azure. Sync from a project, a dashboard or an issue: preview, conflict detection and execute. Tickets can be created on both sides.
- Processes. Closure evidence, deployments tied to tags, global work-item search and a secrets vault.
The backend is FastAPI; the frontend, Astro with React islands. Docker Compose brings it up locally without installing Python or Node on the machine.
Why it sits next to the records case
Academic records and degrees are the product. This tool is how the team delivers it: without it, capacity, sprint and Jira live in three different places. The two cases are meant to be read together.
Gallery
What I learned
- → The capacity that matters is the one that subtracts days off. Hours-per-day with no calendar is a lie.
- → Jira Cloud does not expose a dashboard filter stably: it has to be resolved from gadget properties.
- → Azure DevOps remains the source of truth for the team's work. Local state (evidence, personal kanban) lives in SQLite on purpose, not the other way round.
- → An internal tool holds up if the team opens it every sprint. Everything else is inventory.
Architecture · technical leadership · .NET
Hiring a .NET Software Architect or Tech Lead?
Open to full-time employment in software architecture or technical leadership on .NET products. Tell me about the role and the team: I reply within 24–48 h.