Getting Started with DX
Welcome to the PagoPA Developer Experience initiative! This section will help you get up and running quickly, regardless of your role or experience level.
Choose Your Path
👩💻 Application Developers
If you're building APIs, web applications, or services:
- Set up your development environment - Configure your workspace for PagoPA development
- Understand our conventions - Learn our Git workflows, naming conventions, and code standards
- Deploy applications - Automate your deployments with GitHub Actions
- Deploy infrastructure - Use Terraform modules to deploy Azure resources
Quick wins:
- Use our pre-configured dev containers for instant environment setup
- Follow our Git conventions for consistent collaboration
- Deploy apps with our TypeScript deployment workflows
- Deploy infrastructure with our Terraform modules
Getting Started with DX
Getting started with DX tooling can sometimes feel overwhelming, as it covers a wide range of scenarios. This page provides initial guidance to help understand core concepts and start using DX tools effectively.
DX tools may be adopted incrementally, so you can start with a single tool and gradually expand your usage. However, some tools are designed to work assuming some prerequisites are already in place.
We know you're eager to dive in and start coding, but spending a few minutes on this section may save you from getting stuck later 🫷.
Prerequisites to adopt DX tools
Mono Repository: Yes Please!
Using a mono repository is a prerequisite to adopt DX tooling.
Mono repositories offer several advantages, and DX tools are designed with this in mind. We recommend using a mono repository, even for a single project or workspace.
To start adopting DX tools, define boundaries for team services and plan how to split team projects. Once ready, ensure you have a mono-repository on GitHub and start configuring it using DX tools.
Supported Platforms
DX tools are designed to integrate seamlessly with GitHub, support multiple Cloud Service Providers (CSPs), and align with a variety of programming languages.
These tools adhere to the principles and boundaries outlined in our Technology Radar that teams are expected to follow.
Technology Radar recommendations are thoughtfully designed to foster consistency, efficiency, and alignment across projects, ensuring a streamlined development experience.
Conventions
DX provides guidance to help teams adopt shared conventions during their journey:
- Optimize Git usage usage.
- Create effective Pull Requests.
- Name Azure resources consistently.
- Organize repository folders for Infrastructure as Code (IaC) sources.
We expect teams to adhere to these conventions to ensure a consistent experience across all projects. Some of them are enforced by DX tools, while others are optional but highly recommended.
DX Tools
DX tools are designed to be modular and reusable. They can be used independently or in combination, depending on team needs. The following tools are currently available.
Infrastructure as Code (IaC)
All DX Terraform modules are available on
the public Terraform Registry
under the pagopa-dx
organization.
Of course, everyone can contribute to improve them.
GitHub Workflows
The DX repository provides several GitHub reusable workflows documented in the pipelines section of this website.
We encourage teams to use these templates as a starting point for their GitHub Actions workflows. They are designed to speed up continuous integration and delivery for team apps and IaC code.
These templates cover various scenarios, such as code validation, web app deployment (including FaaS!), building and pushing Docker images to GitHub registry, and more. Feel free to choose the ones that best suit team needs!
Resources
If DX tooling is appreciated, there's much more to discover on this website:
- Infrastructure: DX tooling for cloud-related topics
- Pipelines: DX tooling for GitHub Actions
- Conventions: Predefined conventions to better organize resources
- Dev Containers: Standardized development environments
Stay up to date with DX blog!
Getting Support
The DX team is here to help:
- Questions? Open a GitHub issue
- Bug reports Use our issue templates for faster resolution
- Feature requests We're always looking for ways to improve
- Direct support Available for teams adopting DX golden paths
Contributing
If you have any suggestions, ideas, or feedback, please don't hesitate to reach out to us. We are always open to new ideas and improvements.
We encourage you to contribute to the DX project! Start by reviewing our contribution guidelines to understand how you can get involved and make a meaningful impact.
Not sure which path to take? Check out our conventions overview to understand how we organize work at PagoPA, or reach out to the DX team on GitHub.