Unity3D Calculator App with only the ability to add integers. But with a big architectural under-hood
- Strictly establish Clear Architecture without workarounds and hacks
- Implement as much as reasonable via TDD
- Provide Unit and Functional tests — they always should pass
- Follow major good programming practices
- Make use of Railway Oriented Programming with a grain of Functional Style (all logic branches must be explicit)
- Unity Solution should be clean and not produce garbage on the start|run|first build
- Project should be as Reproducible (reproducing builds support) as possible
- Strictly follow git flow
- Strictly follow Semantic Versioning
- Strictly follow Keep a Changelog
- The project should be created in a fashion as if it real production project and maintained by the team
- All changes must have a task at the Kanban Board (provided by GitHub Project)
- Every merge produces a release
- Every release has a build
- Avoid plugins and external dependencies in the Asset folder
- Prefer external dependencies via OpenUMP and NuGet for Unity
- All code should follow IOC principle
- All MonoBehaviours should be internal
- Only contract-code should be public (tests shall access internals using assembly attributes)
- The project should use Addressables for resources and scene management
- Prefer reasonable naming and stuff placement over traditional one (Scrips folder is useless))
- In the root of the
Assets
folder is placedCalculator-Initial
— the only starting scene - If you want to, you could initialize any other scene
In Inspector override
Main Scene
field value inpref.scope_root_01
in theCalculator-Initial
to any other scene you may wish
- Execution started at
ApplicationEntryPoint.cs
Located in
Assets
/Architecture
/Presentation
- DI Flow started in 'RootScope.cs'
Located in
Assets
/Architecture
/Presentation
/DI
/Root
- Scopes are Parent-Child related and must define this relation via Inspector
Scopes prefab naming schema is "pref.scope_*". Part of the configuration is done in prefab, the other — on scenes via overrides