A robust .NET terminal application for navigating rovers across the Martian plateau.
This project is built with a focus on modern C# standards and automated quality assurance.
- Domain Layer: Strong typing using
RecordsandEnumsensures data integrity across the application. - Input Layer: Robust parsing logic with 100% TDD coverage. This layer validates, trims, and normalises raw string inputs before they reach the core logic, preventing "garbage-in, garbage-out" scenarios.
- Directory.Build.props: Centralized project configuration to ensure consistent Target Framework (.NET 10), Nullable reference types, and Implicit Usings across all projects.
- Strict Warnings:
TreatWarningsAsErrorsis enabled globally to maintain a zero-warning codebase. - Code Style:
EnforceCodeStyleInBuildis active to ensure the project adheres to.editorconfigrules during every build.
- GitHub Actions: A
.github/workflows/build-and-test.ymlpipeline automatically validates every push to ensure the solution builds, the README is present, and all NUnit tests pass in a clean Linux environment. - Pull Request Template: A standardized PR template is located in
.github/to ensure consistent documentation of changes, testing steps, and impact analysis.
- Husky.Net: Implemented to manage local Git hooks.
- Commit Linting: A
commit-msghook enforces Conventional Commits (feat:,fix:,docs:, etc.). Commits that do not meet this standard are automatically rejected to keep the git history clean and professional.
csharp-mars-rover/
├── .github/
│ ├── workflows/ # CI/CD Automation scripts
│ └── pull_request_template.md
├── MarsRover.Console/ # Main Entry Point (Terminal UI)
│ ├── Models/ # Domain entities (Enums, Records)
│ ├── Parsers/ # Input Layer (String-to-Type conversion)
│ └── Program.cs # Entry Point logic
├── MarsRover.Tests/ # NUnit Test Suite
│ ├── Parsers/ # Comprehensive unit tests for all parsers
│ └── ...
├── .husky/ # Local Git Hook configurations
├── Directory.Build.props # Global MSBuild settings
├── MarsRover.slnx # Visual Studio Solution
└── README.md
- .NET 10 SDK
- Husky.Net (for local commit linting)
- Clone the repository.
- Run
dotnet tool restoreto install Husky. - Run
dotnet husky installto set up local git hooks. - Use
dotnet testto run the suite of NUnit tests.