Structured repository for managing business documentation, project management, branding, and operations with modular templates.
- Project Overview
- Folder Structure
- Project Phases
- Deployment Guide
- Coding Conventions and Standards
- Specifications List
- Testing and Quality Assurance
- Additional Resources
- License
- Contributing
- Project Roadmap
- FAQ
This project serves as a foundation for developing cloud-native applications, enabling both web and native platforms. It includes:
- .NET MAUI App: A cross-platform application for mobile and desktop.
- Blazor WebAssembly App: A web-based companion app that serves as interactive documentation and a web interface for the project.
- AI Semantic Kernel: Provides AI-driven NLP capabilities.
- Redis Caching: Enhances performance through caching and real-time data storage.
- Aspire Framework: Supports modular and scalable services architecture.
CompanyTemplateProject/
├── src/ # All source code and project modules
│ ├── Core/ # Core services, policies, and management modules
│ │ ├── Policies/ # Organizational policies and compliance templates
│ │ ├── Management/ # Company management modules
│ │ ├── Services/ # Aspire service modules
│ │ ├── AI/ # AI Semantic Kernel and related services
│ │ └── Caching/ # Redis caching services
│ └── Infrastructure/ # Infrastructure configurations (e.g., appsettings.json)
│ ├── Website/ # Blazor WebAssembly frontend for web documentation
│ └── MauiApp/ # .NET MAUI app for mobile/desktop platforms
├── Documentation/ # Documentation files for the project
├── LICENSE
└── README.md
- Phase 1: Initial Setup and Core Module Development.
- Phase 2: AI Integration with Semantic Kernel.
- Phase 3: Redis Caching Implementation.
- Phase 4: Policy and Compliance Documentation.
- Phase 5: Management Modules (User, Employee, Project).
- Phase 6: Frontend Development and API Communication.
- Phase 7: Testing, CI/CD, and Deployment.
- Set Output Path: Configure
OutputPathinWebsite/src/CompanyTemplateProject.csprojto/docs. - Build the Project:
cd Website/src dotnet publish -c Release -o ../docs - Configure GitHub Pages:
- Go to Settings > Pages.
- Set Source to
mainbranch and Folder to/docs.
- Automate Deployment (Optional):
- Use GitHub Actions for automated deployment to GitHub Pages. See
.github/workflows/deploy.yml.
- Use GitHub Actions for automated deployment to GitHub Pages. See
- Build .NET MAUI for Each Platform:
- Compile the app for each platform (e.g., Android, iOS, Windows).
- Create a GitHub Release:
- Upload compiled binaries (e.g.,
.apk,.app,.exe) to Releases.
- Upload compiled binaries (e.g.,
- Automate with GitHub Actions (Optional):
- Set up GitHub Actions to build and publish releases on tag pushes. See
.github/workflows/release.yml.
- Set up GitHub Actions to build and publish releases on tag pushes. See
- Naming Conventions: PascalCase for classes and methods, camelCase for fields and parameters.
- Dependency Injection: Configured in
Program.csandStartup.cs. - Configuration Management: Centralized in
appsettings.json. - Documentation Standards: Use AsciiDoc for structured documentation.
Each module or component has a specification document, following best practices in modular documentation. Key specifications include:
- SPEC-CORE-001: Company Service (
company_service.adoc) - SPEC-AI-001: Semantic Kernel Service (
semantic_kernel_service.adoc) - SPEC-CACHE-001: Redis Cache Service (
redis_cache_service.adoc) - SPEC-WEB-001: Website Structure and Components (
website_structure_components.adoc) - SPEC-DEPLOY-002: Deployment Guide for GitHub Pages and GitHub Releases (
deployment_github_pages.adoc)
Refer to Project_Phases_and_Specifications.adoc for the complete list.
- Unit Tests: Defined for core services and modules.
- Integration Tests: Configured for end-to-end testing across services.
- CI/CD: GitHub Actions are configured for automated builds, testing, and deployments.
- GitHub Pages Documentation
- Aspire Framework
- AI Semantic Kernel Documentation
- Redis Documentation
- .NET MAUI Documentation
- Blazor WebAssembly Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions to improve and extend the Company Template Project. To contribute:
- Fork the repository and create your feature branch from
main. - Make your changes following the coding conventions and standards outlined in this README.
- Submit a pull request with a clear description of your changes, referencing any related specifications or issues.
- Coding Standards: Follow the project's naming conventions, structure, and best practices to maintain consistency.
- Documentation: Ensure any new features or changes are documented in the relevant
.adocfiles, especially if they affect core modules, the Blazor WebAssembly frontend, or .NET MAUI functionality. - Testing: Add unit tests for any new services, and update integration tests if your changes affect multiple components.
For more details, please see the CONTRIBUTING.md file.
The project roadmap outlines planned features and improvements:
- Enhanced AI Capabilities: Extend the AI Semantic Kernel to support additional NLP functions.
- Role-Based Access Control: Improve the User Management module with more granular permissions.
- Cross-Platform Integrations: Enhance interoperability between the .NET MAUI and Blazor WebAssembly components for seamless data sharing.
- Improved CI/CD Pipelines: Expand CI/CD workflows to automate release versioning and deployment.
For a detailed roadmap and milestones, refer to Project_Phases_and_Specifications.adoc.
.NET MAUI is ideal for creating native mobile and desktop applications, while Blazor WebAssembly provides a lightweight, web-based companion app. This combination allows us to deliver cross-platform functionality with native performance for mobile/desktop users and a web interface for documentation or limited interactions.
Redis caching is used to store frequently accessed data, reducing the load on backend services. By caching data, we can serve user requests faster, making the application more responsive.
Yes, the Blazor WebAssembly app is structured to allow customization. You can add new interactive components, connect additional APIs, and adjust the styling to align with your project's branding or functionality requirements.