Skip to content

Commit b7455b9

Browse files
committed
add 25 stages of the AI Wiki to platform website (#11564)
1 parent b9bc918 commit b7455b9

File tree

2 files changed

+186
-1
lines changed

2 files changed

+186
-1
lines changed

src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates07InteractiveWiki.razor

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,157 @@
2121
</div>
2222
</section>
2323

24+
<section class="section-card">
25+
<BitText Typography="BitTypography.H5" Gutter>What You'll Learn - 25 Comprehensive Stages</BitText>
26+
<div class="section-card-txt">
27+
28+
<br />
29+
30+
The interactive guide covers your entire project architecture across 25 detailed stages. Each stage provides real examples from your actual codebase with interactive Q&amp;A:
31+
32+
<div id="ef-core" style="margin-top: 1rem;">
33+
<strong>Stage 1: Entity Framework Core</strong>
34+
<p>Learn about DbContext, entity models, entity type configurations, and migrations (optional). Understand nullable reference types in EF Core relationships and client-side offline database support.</p>
35+
</div>
36+
37+
<div id="dtos-mappers" style="margin-top: 1rem;">
38+
<strong>Stage 2: DTOs, Mappers, and Mapperly</strong>
39+
<p>Explore Data Transfer Objects, AppJsonContext, and how Mapperly simplifies object mapping. Learn the difference between Project() and Map() methods, and how Patch() updates client-side objects.</p>
40+
</div>
41+
42+
<div id="api-odata" style="margin-top: 1rem;">
43+
<strong>Stage 3: API Controllers and OData</strong>
44+
<p>Understand controller architecture, [AutoInject] attribute, and OData query support ($filter, $top, $skip, $orderby). Learn about PagedResult for total counts, data security, and optimized performance patterns.</p>
45+
</div>
46+
47+
<div id="background-jobs" style="margin-top: 1rem;">
48+
<strong>Stage 4: Background Jobs and CancellationToken Management</strong>
49+
<p>Discover automatic request cancellation, CancellationToken usage, NavigationLock for critical operations, and Hangfire for reliable background job processing with persistence.</p>
50+
</div>
51+
52+
<div id="localization" style="margin-top: 1rem;">
53+
<strong>Stage 5: Localization and Multi-language Support</strong>
54+
<p>Master resource files (resx), `DtoResourceType` attribute, `AppDataAnnotationsValidator`, IStringLocalizer usage, and the `bit-resx` tool for managing translations.</p>
55+
</div>
56+
57+
<div id="exception-handling" style="margin-top: 1rem;">
58+
<strong>Stage 6: Exception Handling and Error Management</strong>
59+
<p>Learn about Known vs Unknown exceptions, safe exception throwing, `WithData()` and `WithExtensionData()` methods, automatic exception handling in Blazor, and `WrapHandled()` for event handlers.</p>
60+
</div>
61+
62+
<div id="identity-auth" style="margin-top: 1rem;">
63+
<strong>Stage 7: ASP.NET Core Identity / Authentication & Authentication</strong>
64+
<p>Comprehensive coverage of JWT tokens (access/refresh), session management, SSO integration (Google, GitHub, Azure AD, etc.), role-based and policy-based authorization, and identity configuration.</p>
65+
</div>
66+
67+
<div id="blazor-pages" style="margin-top: 1rem;">
68+
<strong>Stage 8: Blazor Pages, Components, Styling &amp; Navigation</strong>
69+
<p>Understand the three-file structure (.razor, .razor.cs, .razor.scss), isolated component styles, global styles, ::deep selector, Bit.BlazorUI components, and navigation with `PageUrls`.</p>
70+
</div>
71+
72+
<div id="dependency-injection" style="margin-top: 1rem;">
73+
<strong>Stage 9: Dependency Injection &amp; Service Registration</strong>
74+
<p>Explore service registration patterns across different projects, `AddSessioned` method for session-scoped services, and appropriate service lifetimes (Singleton, Scoped, Transient, `Sessioned`).</p>
75+
</div>
76+
77+
<div id="configuration" style="margin-top: 1rem;">
78+
<strong>Stage 10: Configuration (appsettings.json)</strong>
79+
<p>Learn about configuration hierarchy across projects, appsettings.{environment}.json files, configuration priority, and how to use *__Comment for JSON comments.</p>
80+
</div>
81+
82+
<div id="typescript" style="margin-top: 1rem;">
83+
<strong>Stage 11: TypeScript, Build Process &amp; JavaScript Interop</strong>
84+
<p>Understand TypeScript integration, MSBuild targets for JavaScript compilation, `IJSRuntimeExtensions` for C#-to-JS calls, and how to add npm packages with type definitions.</p>
85+
</div>
86+
87+
<div id="blazor-modes" style="margin-top: 1rem;">
88+
<strong>Stage 12: Blazor Modes, PreRendering &amp; PWA</strong>
89+
<p>Explore Blazor Server, WebAssembly, and Auto modes, pre-rendering configuration for SEO and performance, PWA capabilities, service workers, and `IPrerenderStateService`.</p>
90+
</div>
91+
92+
<div id="force-update" style="margin-top: 1rem;">
93+
<strong>Stage 13: Force Update System</strong>
94+
<p>Learn how `ForceUpdateMiddleware` validates app versions on every request, supports platform-specific update behaviors (auto-update for web/Windows, store redirect for mobile), and ensures all users run supported versions.</p>
95+
</div>
96+
97+
<div id="response-caching" style="margin-top: 1rem;">
98+
<strong>Stage 14: Response Caching System</strong>
99+
<p>Master multi-layer caching: client-side memory cache, browser HTTP cache, CDN edge cache, and ASP.NET Core Output Cache. Learn about `AppResponseCache` attribute, cache purging with `ResponseCacheService`, and optimizing performance.</p>
100+
</div>
101+
102+
<div id="logging" style="margin-top: 1rem;">
103+
<strong>Stage 15: Logging, OpenTelemetry and Health Checks</strong>
104+
<p>Understand ILogger for logging, `AppActivitySource` for tracking operations, in-app Diagnostic Modal, integration with Sentry and Azure App Insights, Aspire Dashboard, and built-in health checks.</p>
105+
</div>
106+
107+
<div id="cicd" style="margin-top: 1rem;">
108+
<strong>Stage 16: CI/CD Pipeline and Environments</strong>
109+
<p>Explore workflow files, environment configuration (Development, Staging, Production), build and deployment pipelines for client platforms, and best practices for secure backend deployment.</p>
110+
</div>
111+
112+
<div id="testing" style="margin-top: 1rem;">
113+
<strong>Stage 17: Automated Testing (Unitigration Tests)</strong>
114+
<p>Learn about the Unitigration Test approach that combines the benefits of Unit Tests and Integration Tests, UI tests with real server behavior, and flexible test architecture.</p>
115+
</div>
116+
117+
<div id="prompts" style="margin-top: 1rem;">
118+
<strong>Stage 18: Other Available Prompt Templates</strong>
119+
<p>Discover additional specialized prompt templates available in the .github/prompts/ directory for specific development tasks and scenarios.</p>
120+
</div>
121+
122+
<div id="misc-files" style="margin-top: 1rem;">
123+
<strong>Stage 19: Project Miscellaneous Files</strong>
124+
<p>Review important configuration files: Clean scripts, global.json, vs-spell.dic, settings.VisualStudio.json, mcp.json, Directory.Build.props, Directory.Packages.props, and .vsconfig.</p>
125+
</div>
126+
127+
<div id="aspire" style="margin-top: 1rem;">
128+
<strong>Stage 20: .NET Aspire</strong>
129+
<p>Understand .NET Aspire benefits for development (dashboard monitoring) and deployment (Azure, Docker Compose, Kubernetes). Learn database persistence configuration and Linux testing with Dev Containers.</p>
130+
</div>
131+
132+
<div id="maui-hybrid" style="margin-top: 1rem;">
133+
<strong>Stage 21: .NET MAUI / Blazor Hybrid</strong>
134+
<p>Explore native platform capabilities on Android, iOS, macOS, and Windows. Learn about Deep Links/Universal Links, `ApplicationVersion` for app stores, Windows project advantages, and WebView considerations.</p>
135+
</div>
136+
137+
<div id="messaging" style="margin-top: 1rem;">
138+
<strong>Stage 22: Messaging</strong>
139+
<p>Master in-app messaging with `PubSubService`, JavaScript-to-C# communication with `AppJsBridge`, real-time server-to-client messaging with SignalR, and push notifications with deep linking.</p>
140+
</div>
141+
142+
<div id="diagnostic" style="margin-top: 1rem;">
143+
<strong>Stage 23: Diagnostic Modal</strong>
144+
<p>Explore the powerful in-app diagnostic tools, including browser DevTools that work on mobile devices and real-time log viewing capabilities.</p>
145+
</div>
146+
147+
<div id="webauthn" style="margin-top: 1rem;">
148+
<strong>Stage 24: WebAuthn and Passwordless Authentication (Advanced)</strong>
149+
<p>Learn about biometric authentication (fingerprint, Face ID, PIN) that's more secure than native implementations, cross-platform support.</p>
150+
</div>
151+
152+
<div id="vector-embeddings" style="margin-top: 1rem;">
153+
<strong>Stage 25: RAG / Semantic Search with Vector Embeddings (Advanced)</strong>
154+
<p>Understand vector embeddings for semantic search, cross-language search capabilities, embedding models (OpenAI, Azure, Hugging Face), and how to implement RAG (Retrieval-Augmented Generation) patterns.</p>
155+
</div>
156+
157+
<br />
158+
<br />
159+
160+
<strong style="font-size: 1.1rem;">Ready to Start Your Interactive Learning Journey?</strong>
161+
<p style="margin-top: 0.5rem;">
162+
Open your project created from bit Boilerplate in <span class="bold-txt">Visual Studio</span> or <span class="bold-txt">Visual Studio Code</span>,
163+
then open <span class="bold-txt">GitHub Copilot Chat</span> and type:
164+
</p>
165+
<code style="display: block; margin: 1rem 0; padding: 0.75rem; background-color: var(--bit-clr-bg-pri); border-radius: 4px;">
166+
Run getting started
167+
</code>
168+
<p>
169+
You can specify which stage you want to start with (e.g., "Stage 5") and your preferred language
170+
(e.g., English, Persian, Français or any other language).
171+
</p>
172+
</div>
173+
</section>
174+
24175
<section class="section-card" id="ai-powered-wiki">
25176
<BitText Typography="BitTypography.H5" Gutter>AI-Powered Wiki</BitText>
26177
<div class="section-card-txt">

src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/MainLayout.razor.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,41 @@ public partial class MainLayout : IDisposable
3535
new BitNavItem { Text = "Project structure", Url = "/templates/project-structure", AdditionalUrls = [ "/boilerplate/project-structure" ] },
3636
new BitNavItem { Text = "Create project", Url = "/templates/create-project", AdditionalUrls = [ "/boilerplate/create-project" ] },
3737
new BitNavItem { Text = "Run project", Url = "/templates/run-project", AdditionalUrls = [ "/boilerplate/run-project" ] },
38-
new BitNavItem { Text = "Interactive Wiki", Url = "/templates/wiki", AdditionalUrls = ["/boilerplate/wiki"] },
38+
new BitNavItem
39+
{
40+
Text = "Interactive Wiki",
41+
Url = "/templates/wiki",
42+
AdditionalUrls = ["/boilerplate/wiki"],
43+
IsExpanded = true,
44+
ChildItems =
45+
[
46+
new BitNavItem { Text = "Entity Framework Core", Url = "/templates/wiki#ef-core", AdditionalUrls = ["/boilerplate/wiki#ef-core"] },
47+
new BitNavItem { Text = "DTOs & Mapperly", Url = "/templates/wiki#dtos-mappers", AdditionalUrls = ["/boilerplate/wiki#dtos-mappers"] },
48+
new BitNavItem { Text = "API & OData", Url = "/templates/wiki#api-odata", AdditionalUrls = ["/boilerplate/wiki#api-odata"] },
49+
new BitNavItem { Text = "Background Jobs", Url = "/templates/wiki#background-jobs", AdditionalUrls = ["/boilerplate/wiki#background-jobs"] },
50+
new BitNavItem { Text = "Localization", Url = "/templates/wiki#localization", AdditionalUrls = ["/boilerplate/wiki#localization"] },
51+
new BitNavItem { Text = "Exception Handling", Url = "/templates/wiki#exception-handling", AdditionalUrls = ["/boilerplate/wiki#exception-handling"] },
52+
new BitNavItem { Text = "Identity & Auth", Url = "/templates/wiki#identity-auth", AdditionalUrls = ["/boilerplate/wiki#identity-auth"] },
53+
new BitNavItem { Text = "Components, Styling", Url = "/templates/wiki#blazor-pages", AdditionalUrls = ["/boilerplate/wiki#blazor-pages"] },
54+
new BitNavItem { Text = "Dependency Injection", Url = "/templates/wiki#dependency-injection", AdditionalUrls = ["/boilerplate/wiki#dependency-injection"] },
55+
new BitNavItem { Text = "Configuration", Url = "/templates/wiki#configuration", AdditionalUrls = ["/boilerplate/wiki#configuration"] },
56+
new BitNavItem { Text = "TypeScript", Url = "/templates/wiki#typescript", AdditionalUrls = ["/boilerplate/wiki#typescript"] },
57+
new BitNavItem { Text = "Blazor Modes & PWA", Url = "/templates/wiki#blazor-modes", AdditionalUrls = ["/boilerplate/wiki#blazor-modes"] },
58+
new BitNavItem { Text = "Force Update", Url = "/templates/wiki#force-update", AdditionalUrls = ["/boilerplate/wiki#force-update"] },
59+
new BitNavItem { Text = "Response Caching", Url = "/templates/wiki#response-caching", AdditionalUrls = ["/boilerplate/wiki#response-caching"] },
60+
new BitNavItem { Text = "Logging & OpenTelemetry", Url = "/templates/wiki#logging", AdditionalUrls = ["/boilerplate/wiki#logging"] },
61+
new BitNavItem { Text = "CI/CD Pipeline", Url = "/templates/wiki#cicd", AdditionalUrls = ["/boilerplate/wiki#cicd"] },
62+
new BitNavItem { Text = "Automated Testing", Url = "/templates/wiki#testing", AdditionalUrls = ["/boilerplate/wiki#testing"] },
63+
new BitNavItem { Text = "Prompt Templates", Url = "/templates/wiki#prompts", AdditionalUrls = ["/boilerplate/wiki#prompts"] },
64+
new BitNavItem { Text = "Misc Files", Url = "/templates/wiki#misc-files", AdditionalUrls = ["/boilerplate/wiki#misc-files"] },
65+
new BitNavItem { Text = ".NET Aspire", Url = "/templates/wiki#aspire", AdditionalUrls = ["/boilerplate/wiki#aspire"] },
66+
new BitNavItem { Text = "MAUI / Blazor Hybrid", Url = "/templates/wiki#maui-hybrid", AdditionalUrls = ["/boilerplate/wiki#maui-hybrid"] },
67+
new BitNavItem { Text = "Messaging", Url = "/templates/wiki#messaging", AdditionalUrls = ["/boilerplate/wiki#messaging"] },
68+
new BitNavItem { Text = "Diagnostic Modal", Url = "/templates/wiki#diagnostic", AdditionalUrls = ["/boilerplate/wiki#diagnostic"] },
69+
new BitNavItem { Text = "WebAuthn and Passwordless Auth", Url = "/templates/wiki#webauthn", AdditionalUrls = ["/boilerplate/wiki#webauthn"] },
70+
new BitNavItem { Text = "RAG / Vector Embeddings", Url = "/templates/wiki#vector-embeddings", AdditionalUrls = ["/boilerplate/wiki#vector-embeddings"] },
71+
]
72+
},
3973
];
4074

4175
private readonly List<BitNavItem> bswupNavItems =

0 commit comments

Comments
 (0)