-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Enhancement Request: Technology-Specific Project Templates
Problem Statement
The current avanade-template serves as a generic starting point but lacks technology-specific configurations, leading to significant manual setup work when creating projects for specific tech stacks. As someone who recently used this template for a C# .NET project, I encountered several gaps that required substantial customisation.
Current Template Limitations
The existing template provides:
- Generic GitHub workflows (shell/JavaScript focused)
- Basic repository structure
- General documentation templates
- Default
.gitignorethat may not cover technology-specific build artefacts
What's Missing for C# Projects
When creating a .NET/C# project, I had to manually add:
1. Project Structure
src/directory with proper C# project layout.csprojfiles with appropriate SDK references- Solution files (
.sln) - Test project structure following .NET conventions
2. Build & CI/CD
- .NET-specific GitHub Actions workflows (
dotnet-ci.yml) - NuGet package restoration and caching
- Multi-target framework support (net8.0, net9.0, net10.0)
- Proper test discovery and execution
3. Development Tools
- C#-specific
.gitignorerules (bin/, obj/, *.user files) - EditorConfig for C# formatting standards
- Roslyn analysers and code style enforcement
- Visual Studio/VS Code launch configurations
4. Documentation
- API documentation generation setup
- NuGet package metadata templates
- .NET-specific usage examples
Proposed Solution
Create technology-specific template variants that provide opinionated, ready-to-use setups:
Template Variants Suggested
avanade-template-dotnet- C#/.NET projects with CLI/library focusavanade-template-python- Python projects with packaging/testing setupavanade-template-typescript- Node.js/TypeScript applicationsavanade-template-infrastructure- Terraform/ARM templates for Azureavanade-template-documentation- Documentation-only projects
Each template would include
- Technology-specific CI/CD workflows with proper build/test/deploy steps
- Pre-configured project structure following best practices
- Development environment setup (devcontainer, VS Code settings)
- Code quality tools (linters, formatters, security scanners)
- Dependency management configuration
- Documentation templates with technology-relevant examples
Benefits
- Faster Project Initiation - Developers can start coding immediately rather than spending time on boilerplate setup
- Consistent Standards - Each tech stack follows Avanade's established patterns and best practices
- Reduced Onboarding Friction - New team members get a familiar, well-structured starting point
- Better Security Posture - Templates include security scanning and dependency management from day one
Implementation Approach
- Maintain the current generic template as the base
- Create separate repositories for each technology stack (e.g.,
avanade-template-dotnet) - Provide clear documentation on when to use each template
- Include migration guides for existing projects
Example: C# Template Structure
avanade-template-dotnet/
├── .github/
│ ├── instructions/
│ │ ├── csharp.instructions.md
│ ├── workflows/
│ │ ├── dotnet-ci.yml
│ │ └── nuget-publish.yml
├── src/
│ ├── MyProject/
│ │ ├── MyProject.csproj
│ │ └── Program.cs
│ └── MyProject.Tests/
│ └── MyProject.Tests.csproj
├── MyProject.sln
├── Directory.Build.props
├── .editorconfig
└── README.md (with .NET-specific examples)
Conclusion
This approach would significantly reduce the gap between template and production-ready code, making the Avanade template ecosystem more valuable for diverse technology projects.
Metadata
Metadata
Assignees
Labels
No labels