Even as the AI apocalypse overtakes most projects, cluttering your repositories with .md-files to instruct the harness, I believe that having an intuitive grasp of a solid software foundation still brings real value to your organization.
In this series I’ll share my two sents on how to address this when starting a new project from scratch.
I’ll mainly be addressing my own turf, which involves the following technologies:
- Linux
- Git
- Docker
- devcontainer for development
- Docker Compose for both development and production
- Nginx
- .NET
- Lit and Web Components (My second choice)
- Vite
- Note
- YARP
- Bash for scripting
These days, I use a random VPS for both testing and hosting. But most of the approaches sketched here will be fully applicable on any cloud provider.
But no matter which technologies or hosting environment you choose, a few foundational things should be solved in every project you start:
- Formatting
- Linting
- Testing strategy (Unit, Integration, E2E)
- Secret and configuration management
- Continuous Integration and Continuous Deployment (CI/CD)
- Observability (Logging, metrics, and tracing)
- Dependency management
- NuGet
- npm
- Etc.
To kick things off, I’ll start by addressing something most developers avoid like the plague: code formatting.