Skip to main content

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:

  1. Set up your development environment - Configure your workspace for PagoPA development
  2. Understand our conventions - Learn our Git workflows, naming conventions, and code standards
  3. Deploy applications - Automate your deployments with GitHub Actions
  4. Deploy infrastructure - Use Terraform modules to deploy Azure resources

Quick wins:

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!

Mono Repository Required

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:

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.

Need help deciding?

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.