@thanh01.pmt/curriculum-kit 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +108 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +108 -107
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4261,9 +4261,9 @@ _Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: Mermaid Diagrams + Printabl
|
|
|
4261
4261
|
var SLIDE_LAYOUT_PRESETS = [
|
|
4262
4262
|
{
|
|
4263
4263
|
id: "title-hero",
|
|
4264
|
-
name: "
|
|
4264
|
+
name: "Title & Speaker Cover",
|
|
4265
4265
|
category: "cover",
|
|
4266
|
-
description: "
|
|
4266
|
+
description: "High-impact opening slide with large title, subtitle, and speaker credentials.",
|
|
4267
4267
|
layout: {
|
|
4268
4268
|
boxes: [
|
|
4269
4269
|
{
|
|
@@ -4308,22 +4308,22 @@ var SLIDE_LAYOUT_PRESETS = [
|
|
|
4308
4308
|
textAlign: center
|
|
4309
4309
|
-->
|
|
4310
4310
|
|
|
4311
|
-
# \u{1F680}
|
|
4312
|
-
###
|
|
4311
|
+
# \u{1F680} Engineering Scalable Cloud Systems
|
|
4312
|
+
### Principles, Bottlenecks, and Real-World Architecture Patterns
|
|
4313
4313
|
|
|
4314
|
-
**
|
|
4314
|
+
**Presenter:** Senior Systems Architect | **Duration:** 45 mins | **Level:** Intermediate
|
|
4315
4315
|
|
|
4316
4316
|
<!--
|
|
4317
4317
|
Presenter Notes:
|
|
4318
|
-
-
|
|
4319
|
-
-
|
|
4318
|
+
- Welcome the audience and outline today's primary engineering goals.
|
|
4319
|
+
- Spark curiosity with an opening hook about scaling under high concurrency.
|
|
4320
4320
|
-->`
|
|
4321
4321
|
},
|
|
4322
4322
|
{
|
|
4323
4323
|
id: "two-column-split",
|
|
4324
|
-
name: "
|
|
4324
|
+
name: "Two-Column Comparison",
|
|
4325
4325
|
category: "split",
|
|
4326
|
-
description: "
|
|
4326
|
+
description: "Balanced side-by-side comparison for legacy vs modern patterns or pros vs cons.",
|
|
4327
4327
|
layout: {
|
|
4328
4328
|
boxes: [
|
|
4329
4329
|
{
|
|
@@ -4358,38 +4358,38 @@ Presenter Notes:
|
|
|
4358
4358
|
pos: [670, 150, 530, 510]
|
|
4359
4359
|
-->
|
|
4360
4360
|
|
|
4361
|
-
## \u2696\uFE0F
|
|
4361
|
+
## \u2696\uFE0F Monolithic Polling vs Event-Driven Architecture
|
|
4362
4362
|
|
|
4363
4363
|
<div class="columns-2">
|
|
4364
4364
|
<div>
|
|
4365
4365
|
|
|
4366
|
-
### \u{1F534}
|
|
4367
|
-
-
|
|
4368
|
-
-
|
|
4369
|
-
-
|
|
4366
|
+
### \u{1F534} Legacy Polling
|
|
4367
|
+
- Heavy database CPU overhead on idle cycles
|
|
4368
|
+
- High network latency between updates
|
|
4369
|
+
- Prone to cascading timeouts during spikes
|
|
4370
4370
|
|
|
4371
4371
|
</div>
|
|
4372
4372
|
<div>
|
|
4373
4373
|
|
|
4374
|
-
### \u{1F7E2}
|
|
4375
|
-
-
|
|
4376
|
-
-
|
|
4377
|
-
-
|
|
4374
|
+
### \u{1F7E2} Event-Driven Streams
|
|
4375
|
+
- Real-time event propagation via webhooks
|
|
4376
|
+
- Zero idle compute waste with serverless consumers
|
|
4377
|
+
- Automatic backpressure and queue isolation
|
|
4378
4378
|
|
|
4379
4379
|
</div>
|
|
4380
4380
|
</div>
|
|
4381
4381
|
|
|
4382
4382
|
<!--
|
|
4383
4383
|
Presenter Notes:
|
|
4384
|
-
-
|
|
4385
|
-
-
|
|
4384
|
+
- Emphasize the core failure mode of periodic polling under sudden load spikes.
|
|
4385
|
+
- Ask the room if anyone has experienced database lockups caused by polling loops.
|
|
4386
4386
|
-->`
|
|
4387
4387
|
},
|
|
4388
4388
|
{
|
|
4389
4389
|
id: "code-explainer",
|
|
4390
|
-
name: "
|
|
4390
|
+
name: "Code Walkthrough & Analysis",
|
|
4391
4391
|
category: "code",
|
|
4392
|
-
description: "
|
|
4392
|
+
description: "Syntax-highlighted code block on the left with step-by-step key annotations on the right.",
|
|
4393
4393
|
layout: {
|
|
4394
4394
|
boxes: [
|
|
4395
4395
|
{
|
|
@@ -4424,16 +4424,16 @@ Presenter Notes:
|
|
|
4424
4424
|
pos: [740, 135, 460, 535]
|
|
4425
4425
|
-->
|
|
4426
4426
|
|
|
4427
|
-
## \u{1F4BB}
|
|
4427
|
+
## \u{1F4BB} Robust Async Transaction Pipeline
|
|
4428
4428
|
|
|
4429
4429
|
<div class="columns-2">
|
|
4430
4430
|
<div>
|
|
4431
4431
|
|
|
4432
4432
|
\`\`\`ts
|
|
4433
|
-
//
|
|
4433
|
+
// Process payment with idempotency guarantee
|
|
4434
4434
|
export async function processPayment(order: Order) {
|
|
4435
4435
|
const isValid = await validateOrder(order);
|
|
4436
|
-
if (!isValid) throw new Error("
|
|
4436
|
+
if (!isValid) throw new Error("ValidationFailed");
|
|
4437
4437
|
|
|
4438
4438
|
const receipt = await chargeCard(order);
|
|
4439
4439
|
return sendConfirmation(receipt);
|
|
@@ -4443,25 +4443,26 @@ export async function processPayment(order: Order) {
|
|
|
4443
4443
|
</div>
|
|
4444
4444
|
<div>
|
|
4445
4445
|
|
|
4446
|
-
### \u{1F50D}
|
|
4447
|
-
1. **
|
|
4448
|
-
2. **
|
|
4449
|
-
3. **
|
|
4446
|
+
### \u{1F50D} Key Engineering Invariants:
|
|
4447
|
+
1. **Early Guard Clause:** Validates payload immediately at line 3 before triggering external calls.
|
|
4448
|
+
2. **Deterministic Sequence:** Enforces strict order of operations using native \`await\`.
|
|
4449
|
+
3. **Audit Trail:** Returns immutable payment receipt upon successful execution.
|
|
4450
4450
|
|
|
4451
4451
|
</div>
|
|
4452
4452
|
</div>
|
|
4453
4453
|
|
|
4454
4454
|
<!--
|
|
4455
4455
|
Presenter Notes:
|
|
4456
|
-
-
|
|
4457
|
-
-
|
|
4456
|
+
- Walk through lines 1 to 7 sequentially.
|
|
4457
|
+
- Cold-call check: "What happens if line 6 throws a network timeout?"
|
|
4458
|
+
- Cognitive scaffolding: Highlight the importance of idempotency keys in payment APIs.
|
|
4458
4459
|
-->`
|
|
4459
4460
|
},
|
|
4460
4461
|
{
|
|
4461
4462
|
id: "metrics-3-card",
|
|
4462
|
-
name: "
|
|
4463
|
+
name: "3-Metric Key Results Grid",
|
|
4463
4464
|
category: "metrics",
|
|
4464
|
-
description: "
|
|
4465
|
+
description: "Three high-visibility KPI stat cards for benchmarks, impact, and success criteria.",
|
|
4465
4466
|
layout: {
|
|
4466
4467
|
boxes: [
|
|
4467
4468
|
{
|
|
@@ -4506,43 +4507,43 @@ Presenter Notes:
|
|
|
4506
4507
|
pos: [860, 165, 340, 485]
|
|
4507
4508
|
-->
|
|
4508
4509
|
|
|
4509
|
-
## \u{1F4CA}
|
|
4510
|
+
## \u{1F4CA} Performance & Reliability Benchmarks
|
|
4510
4511
|
|
|
4511
4512
|
<div class="columns-3">
|
|
4512
4513
|
<div>
|
|
4513
4514
|
|
|
4514
|
-
# \u26A1 99.
|
|
4515
|
-
###
|
|
4516
|
-
|
|
4515
|
+
# \u26A1 99.99%
|
|
4516
|
+
### SLA Availability
|
|
4517
|
+
High-availability multi-region cluster with automated failover routing.
|
|
4517
4518
|
|
|
4518
4519
|
</div>
|
|
4519
4520
|
<div>
|
|
4520
4521
|
|
|
4521
|
-
# \u{1F680}
|
|
4522
|
-
###
|
|
4523
|
-
|
|
4522
|
+
# \u{1F680} 15ms
|
|
4523
|
+
### P99 Latency
|
|
4524
|
+
Sub-20ms roundtrip response time via distributed edge caching.
|
|
4524
4525
|
|
|
4525
4526
|
</div>
|
|
4526
4527
|
<div>
|
|
4527
4528
|
|
|
4528
|
-
# \u{1F6E1}\uFE0F
|
|
4529
|
-
###
|
|
4530
|
-
|
|
4529
|
+
# \u{1F6E1}\uFE0F Zero
|
|
4530
|
+
### Unhandled Breaches
|
|
4531
|
+
Full SOC2 Type II compliance and end-to-end payload encryption.
|
|
4531
4532
|
|
|
4532
4533
|
</div>
|
|
4533
4534
|
</div>
|
|
4534
4535
|
|
|
4535
4536
|
<!--
|
|
4536
4537
|
Presenter Notes:
|
|
4537
|
-
-
|
|
4538
|
-
-
|
|
4538
|
+
- Highlight the 15ms P99 latency target as the primary technical milestone.
|
|
4539
|
+
- Connect these metrics directly to the architecture decisions discussed next.
|
|
4539
4540
|
-->`
|
|
4540
4541
|
},
|
|
4541
4542
|
{
|
|
4542
4543
|
id: "process-flow",
|
|
4543
|
-
name: "
|
|
4544
|
+
name: "Architecture & Process Flow",
|
|
4544
4545
|
category: "diagram",
|
|
4545
|
-
description: "
|
|
4546
|
+
description: "Multi-stage workflow with responsive Mermaid diagram and phase summaries.",
|
|
4546
4547
|
layout: {
|
|
4547
4548
|
boxes: [
|
|
4548
4549
|
{
|
|
@@ -4577,33 +4578,33 @@ Presenter Notes:
|
|
|
4577
4578
|
pos: [80, 465, 1120, 205]
|
|
4578
4579
|
-->
|
|
4579
4580
|
|
|
4580
|
-
## \u{1F504}
|
|
4581
|
+
## \u{1F504} End-to-End Data Ingestion Pipeline
|
|
4581
4582
|
|
|
4582
4583
|
\`\`\`mermaid
|
|
4583
4584
|
graph LR
|
|
4584
|
-
A[1. Client
|
|
4585
|
-
B --> C[3. Auth
|
|
4586
|
-
C --> D[4.
|
|
4585
|
+
A[1. Client Ingress] --> B[2. API Gateway]
|
|
4586
|
+
B --> C[3. Auth Verifier]
|
|
4587
|
+
C --> D[4. Distributed DB]
|
|
4587
4588
|
style A fill:#0284c7,stroke:#38bdf8,stroke-width:2px,color:#fff
|
|
4588
4589
|
style B fill:#1e293b,stroke:#64748b,stroke-width:2px,color:#fff
|
|
4589
4590
|
style C fill:#059669,stroke:#34d399,stroke-width:2px,color:#fff
|
|
4590
4591
|
style D fill:#7c3aed,stroke:#a78bfa,stroke-width:2px,color:#fff
|
|
4591
4592
|
\`\`\`
|
|
4592
4593
|
|
|
4593
|
-
- **
|
|
4594
|
-
- **
|
|
4594
|
+
- **Ingress & Gateway:** Rate-limits traffic and applies reverse-proxy load balancing.
|
|
4595
|
+
- **Verification & Storage:** Decodes cryptographic JWT tokens before transactional write commit.
|
|
4595
4596
|
|
|
4596
4597
|
<!--
|
|
4597
4598
|
Presenter Notes:
|
|
4598
|
-
-
|
|
4599
|
-
-
|
|
4599
|
+
- Trace each hop across the diagram from left to right.
|
|
4600
|
+
- Ask: "Where should rate limiting be applied to prevent DDoS attacks?"
|
|
4600
4601
|
-->`
|
|
4601
4602
|
},
|
|
4602
4603
|
{
|
|
4603
4604
|
id: "quote-highlight",
|
|
4604
|
-
name: "
|
|
4605
|
+
name: "Core Principle & Quote Highlight",
|
|
4605
4606
|
category: "quote",
|
|
4606
|
-
description: "
|
|
4607
|
+
description: "Prominent quote callout for fundamental engineering rules or memorable mantras.",
|
|
4607
4608
|
layout: {
|
|
4608
4609
|
boxes: [
|
|
4609
4610
|
{
|
|
@@ -4634,23 +4635,23 @@ Presenter Notes:
|
|
|
4634
4635
|
fontSize: 1.4rem
|
|
4635
4636
|
-->
|
|
4636
4637
|
|
|
4637
|
-
## \u{1F4A1}
|
|
4638
|
+
## \u{1F4A1} Foundational Architecture Principle
|
|
4638
4639
|
|
|
4639
|
-
> "
|
|
4640
|
+
> "Simplicity is prerequisite for reliability. A well-engineered distributed system is one where a new engineer can understand the request flow within their first hour."
|
|
4640
4641
|
>
|
|
4641
4642
|
> \u2014 **Edsger W. Dijkstra**
|
|
4642
4643
|
|
|
4643
4644
|
<!--
|
|
4644
4645
|
Presenter Notes:
|
|
4645
|
-
-
|
|
4646
|
-
-
|
|
4646
|
+
- Pause for 5 seconds of silence to let the quote sink in.
|
|
4647
|
+
- Ask: "How do our current architectural choices reflect this principle?"
|
|
4647
4648
|
-->`
|
|
4648
4649
|
},
|
|
4649
4650
|
{
|
|
4650
4651
|
id: "quiz-checkpoint",
|
|
4651
|
-
name: "
|
|
4652
|
+
name: "Interactive Formative Checkpoint",
|
|
4652
4653
|
category: "assessment",
|
|
4653
|
-
description: "
|
|
4654
|
+
description: "Interactive multiple-choice diagnostic checkpoint with A/B/C/D voting options.",
|
|
4654
4655
|
layout: {
|
|
4655
4656
|
boxes: [
|
|
4656
4657
|
{
|
|
@@ -4689,27 +4690,27 @@ Presenter Notes:
|
|
|
4689
4690
|
fontSize: 1.15rem
|
|
4690
4691
|
-->
|
|
4691
4692
|
|
|
4692
|
-
## \u{1F3AF}
|
|
4693
|
+
## \u{1F3AF} Formative Checkpoint: Verify Your Understanding
|
|
4693
4694
|
|
|
4694
|
-
> **
|
|
4695
|
+
> **Question:** In an event-driven architecture, which pattern guarantees that messages are never permanently lost if a downstream consumer crashes?
|
|
4695
4696
|
|
|
4696
|
-
- **A.**
|
|
4697
|
-
- **B.**
|
|
4698
|
-
- **C.**
|
|
4699
|
-
- **D.**
|
|
4697
|
+
- **A.** Direct synchronous HTTP request with short 2-second timeout
|
|
4698
|
+
- **B.** Persistent Message Broker with Dead-Letter Queue (DLQ) & retry policy
|
|
4699
|
+
- **C.** In-memory client RAM cache without persistence
|
|
4700
|
+
- **D.** Discarding failed packets and prompting the user to re-submit
|
|
4700
4701
|
|
|
4701
4702
|
<!--
|
|
4702
4703
|
Presenter Notes:
|
|
4703
|
-
-
|
|
4704
|
-
-
|
|
4705
|
-
-
|
|
4704
|
+
- Give students 30 seconds to vote on option A, B, C, or D.
|
|
4705
|
+
- Correct answer: B.
|
|
4706
|
+
- Explain why options A and C introduce catastrophic data loss in production.
|
|
4706
4707
|
-->`
|
|
4707
4708
|
},
|
|
4708
4709
|
{
|
|
4709
4710
|
id: "tiered-practice-3cards",
|
|
4710
|
-
name: "
|
|
4711
|
+
name: "Tiered Differentiation (Bronze / Silver / Gold)",
|
|
4711
4712
|
category: "content",
|
|
4712
|
-
description: "
|
|
4713
|
+
description: "Three progressive competency tiers allowing self-paced learning acceleration.",
|
|
4713
4714
|
layout: {
|
|
4714
4715
|
boxes: [
|
|
4715
4716
|
{
|
|
@@ -4752,46 +4753,46 @@ Presenter Notes:
|
|
|
4752
4753
|
pos: [850, 140, 350, 520]
|
|
4753
4754
|
-->
|
|
4754
4755
|
|
|
4755
|
-
## \u{1F6E0}\uFE0F
|
|
4756
|
+
## \u{1F6E0}\uFE0F Hands-On Challenge: 3-Tier Differentiation
|
|
4756
4757
|
|
|
4757
4758
|
<div class="columns-3">
|
|
4758
4759
|
<div>
|
|
4759
4760
|
|
|
4760
|
-
### \u{1F949}
|
|
4761
|
-
-
|
|
4762
|
-
-
|
|
4763
|
-
- *
|
|
4761
|
+
### \u{1F949} Bronze Tier
|
|
4762
|
+
- Implement baseline function
|
|
4763
|
+
- Pass 3 baseline unit tests
|
|
4764
|
+
- *Goal: Foundational mastery*
|
|
4764
4765
|
|
|
4765
4766
|
</div>
|
|
4766
4767
|
<div>
|
|
4767
4768
|
|
|
4768
|
-
### \u{1F948}
|
|
4769
|
-
-
|
|
4770
|
-
-
|
|
4771
|
-
- *
|
|
4769
|
+
### \u{1F948} Silver Tier
|
|
4770
|
+
- Add boundary error handling
|
|
4771
|
+
- Enforce O(N) memory complexity
|
|
4772
|
+
- *Goal: Production-ready code*
|
|
4772
4773
|
|
|
4773
4774
|
</div>
|
|
4774
4775
|
<div>
|
|
4775
4776
|
|
|
4776
|
-
### \u{1F947}
|
|
4777
|
-
-
|
|
4778
|
-
-
|
|
4779
|
-
- *
|
|
4777
|
+
### \u{1F947} Gold Tier
|
|
4778
|
+
- Design distributed retry queue
|
|
4779
|
+
- Add 95% automated test coverage
|
|
4780
|
+
- *Goal: Architectural leadership*
|
|
4780
4781
|
|
|
4781
4782
|
</div>
|
|
4782
4783
|
</div>
|
|
4783
4784
|
|
|
4784
4785
|
<!--
|
|
4785
4786
|
Presenter Notes:
|
|
4786
|
-
-
|
|
4787
|
-
-
|
|
4787
|
+
- All learners begin at Bronze to establish baseline competency.
|
|
4788
|
+
- Accelerate self-directed learners to Silver and Gold as they complete each tier.
|
|
4788
4789
|
-->`
|
|
4789
4790
|
},
|
|
4790
4791
|
{
|
|
4791
4792
|
id: "agenda-timeline",
|
|
4792
|
-
name: "
|
|
4793
|
+
name: "Session Agenda & Milestones",
|
|
4793
4794
|
category: "content",
|
|
4794
|
-
description: "
|
|
4795
|
+
description: "Structured time-budgeted agenda mapping stages to measurable deliverables.",
|
|
4795
4796
|
layout: {
|
|
4796
4797
|
boxes: [
|
|
4797
4798
|
{
|
|
@@ -4818,25 +4819,25 @@ Presenter Notes:
|
|
|
4818
4819
|
pos: [80, 140, 1120, 520]
|
|
4819
4820
|
-->
|
|
4820
4821
|
|
|
4821
|
-
## \u{1F5FA}\uFE0F
|
|
4822
|
+
## \u{1F5FA}\uFE0F Milestone Roadmap & Time Budget
|
|
4822
4823
|
|
|
4823
|
-
|
|
|
4824
|
+
| Allocated Time | Session Stage | Core Learning Focus | Deliverable Milestone |
|
|
4824
4825
|
|:---:|---|---|---|
|
|
4825
|
-
| **05
|
|
4826
|
-
| **15
|
|
4827
|
-
| **20
|
|
4828
|
-
| **05
|
|
4826
|
+
| **05 mins** | Warm-Up | Real-World Scenario & Context | Identify system bottleneck |
|
|
4827
|
+
| **15 mins** | Concept Discovery | Core Architectural Patterns | Deconstruct message queue models |
|
|
4828
|
+
| **20 mins** | Hands-On Lab | Tiered Code Implementation | Complete Bronze + Silver tasks |
|
|
4829
|
+
| **05 mins** | Wrap-Up | Formative Checkpoint & Debrief | Consolidate key principles |
|
|
4829
4830
|
|
|
4830
4831
|
<!--
|
|
4831
4832
|
Presenter Notes:
|
|
4832
|
-
-
|
|
4833
|
+
- Walk through the time budget so students understand expectations and pacing.
|
|
4833
4834
|
-->`
|
|
4834
4835
|
},
|
|
4835
4836
|
{
|
|
4836
4837
|
id: "takeaways-summary",
|
|
4837
|
-
name: "
|
|
4838
|
+
name: "Key Takeaways & Wrap-up",
|
|
4838
4839
|
category: "content",
|
|
4839
|
-
description: "
|
|
4840
|
+
description: "Three memorable synthesis takeaways with actionable next steps.",
|
|
4840
4841
|
layout: {
|
|
4841
4842
|
boxes: [
|
|
4842
4843
|
{
|
|
@@ -4875,18 +4876,18 @@ Presenter Notes:
|
|
|
4875
4876
|
fontSize: 1.1rem
|
|
4876
4877
|
-->
|
|
4877
4878
|
|
|
4878
|
-
## \u{1F3C1}
|
|
4879
|
+
## \u{1F3C1} Key Takeaways & Action Items
|
|
4879
4880
|
|
|
4880
|
-
1. **
|
|
4881
|
-
2. **
|
|
4882
|
-
3. **
|
|
4881
|
+
1. **Decouple Before Scaling:** Separate producer rate from consumer processing capacity.
|
|
4882
|
+
2. **Design for Failure:** Always configure retries, backoff intervals, and dead-letter queues.
|
|
4883
|
+
3. **Measure End-to-End:** Track P99 latency and error rates across all distributed boundaries.
|
|
4883
4884
|
|
|
4884
|
-
> \u{1F4DD} **
|
|
4885
|
+
> \u{1F4DD} **Next Action Item:** Complete the Silver Tier refactoring challenge before our next peer-review session.
|
|
4885
4886
|
|
|
4886
4887
|
<!--
|
|
4887
4888
|
Presenter Notes:
|
|
4888
|
-
-
|
|
4889
|
-
-
|
|
4889
|
+
- Deliver a crisp 2-minute wrap-up reinforcing the 3 core takeaways.
|
|
4890
|
+
- Acknowledge strong peer collaboration during the hands-on lab.
|
|
4890
4891
|
-->`
|
|
4891
4892
|
}
|
|
4892
4893
|
];
|