Skip to content

Commit 2e989a0

Browse files
committed
Sample Projects & Updates
1 parent 3fca9d7 commit 2e989a0

846 files changed

Lines changed: 34996 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

01_ROADMAP.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,22 @@ Fail/recover guidance:
149149
- Gate D: Orion/DPA ingestion proof into MSSQL cache.
150150
- Gate E: browser dashboard available to stakeholders.
151151

152+
## Project ladder mapping (practice by skill level)
153+
- Use [`./projects`](./projects) continuously while progressing through phases.
154+
- Suggested mapping:
155+
- Levels 0-2 during Phase 0-1
156+
- Levels 3-5 during Phase 2-3
157+
- Levels 6-7 during Phase 4
158+
- Levels 8-9 during Phase 5-6
159+
- Level 10 during Phase 7 and capstone hardening
160+
- Project index:
161+
- [projects/README.md](./projects/README.md)
162+
163+
## Screenshot and checkpoint workflow
164+
- Capture proof screenshots and reflections while learning:
165+
- [12_SCREENSHOT_CHECKPOINTS.md](./12_SCREENSHOT_CHECKPOINTS.md)
166+
- Use this after each session to improve retention and speed up troubleshooting.
167+
152168
## If you fall behind (catch-up plan)
153169
1. Keep only one active project at a time.
154170
2. Finish minimum deliverables before adding features.

06_SQL.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,9 @@ You are ready for SolarWinds ingestion when you can:
112112
- [pyodbc project](https://github.com/mkleehammer/pyodbc)
113113
- [python-oracledb docs](https://python-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html)
114114

115+
## Enterprise sample schemas
116+
- Full schema pack for staging/reporting/cache/marts:
117+
- [13_ENTERPRISE_SAMPLE_SCHEMAS.md](./13_ENTERPRISE_SAMPLE_SCHEMAS.md)
118+
115119
## Next
116120
Go to [07_SOLARWINDS_ORION.md](./07_SOLARWINDS_ORION.md).

07_SOLARWINDS_ORION.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,9 @@ Advance when you can:
122122
- [DPA Getting Started](https://documentation.solarwinds.com/en/success_center/dpa/content/dpa_getting_started_guide.htm)
123123
- [DPA Administrator Guide](https://documentation.solarwinds.com/en/success_center/dpa/content/dpa_administrator_guide.htm)
124124

125+
## Enterprise sample schemas
126+
- Use this schema pack for Orion/DPA cache and downstream marts:
127+
- [13_ENTERPRISE_SAMPLE_SCHEMAS.md](./13_ENTERPRISE_SAMPLE_SCHEMAS.md)
128+
125129
## Next
126130
Go to [08_DASHBOARDS.md](./08_DASHBOARDS.md).

08_DASHBOARDS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,5 +95,9 @@ You are done when a non-technical user can:
9595
## Optional Resources
9696
- [Real Python](https://realpython.com/tutorials/python/)
9797

98+
## Navigation support
99+
- If you want faster progress through this phase with less friction:
100+
- [14_NAVIGATION_AND_STUDY_WORKFLOW.md](./14_NAVIGATION_AND_STUDY_WORKFLOW.md)
101+
98102
## Next
99103
Go to [10_CAPSTONE_PROJECTS.md](./10_CAPSTONE_PROJECTS.md).

11_CHECKLISTS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ Use before architecture reviews with experienced engineers:
5858
- [ ] Can explain security posture for credentials and access.
5959
- [ ] Can explain dashboard fallback behavior during outages.
6060

61+
## Screenshot and checkpoint checklist
62+
- [ ] Capture one setup screenshot per major milestone.
63+
- [ ] Capture one failure screenshot and one fix screenshot per week.
64+
- [ ] Write 3 checkpoint reflections after each study session:
65+
- what I changed,
66+
- what broke,
67+
- what I fixed.
68+
- [ ] Keep screenshots and notes organized by phase and date.
69+
- [ ] Use [12_SCREENSHOT_CHECKPOINTS.md](./12_SCREENSHOT_CHECKPOINTS.md) as the standard template.
70+
6171
## Primary Sources
6272
- [pytest getting started](https://docs.pytest.org/en/stable/getting-started.html)
6373
- [Ruff docs](https://docs.astral.sh/ruff/)

12_SCREENSHOT_CHECKPOINTS.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# 12 - Screenshot Checkpoints and Reflection Prompts
2+
Home: [README](./README.md)
3+
4+
Use this file to support visual learners and to build a clean troubleshooting history.
5+
6+
## How to use this file
7+
- At each checkpoint, capture a screenshot and store it in your notes/work log folder.
8+
- Use naming format:
9+
- `phase-<n>_checkpoint-<n>_YYYYMMDD_HHMM.png`
10+
- Add a short reflection after each screenshot.
11+
12+
## Phase checkpoint map
13+
14+
### Phase 0 - Setup
15+
Capture screenshots of:
16+
1. Python version output.
17+
2. Active `.venv` prompt.
18+
3. First passing `pytest` output.
19+
20+
Reflection prompts:
21+
- What command worked immediately?
22+
- What command failed first?
23+
- How did you fix it?
24+
25+
### Phase 1 - Foundations
26+
Capture screenshots of:
27+
1. A working loop output.
28+
2. A traceback you diagnosed.
29+
3. Passing tests for a small function module.
30+
31+
Reflection prompts:
32+
- What bug pattern repeated this week?
33+
- Which debugging method helped most?
34+
- What would you teach a beginner from this lab?
35+
36+
### Phase 2 - Quality and workflow
37+
Capture screenshots of:
38+
1. Ruff clean output.
39+
2. Black format run.
40+
3. pytest test summary.
41+
42+
Reflection prompts:
43+
- Which quality check catches your most common mistakes?
44+
- Which check feels confusing and why?
45+
- What did you standardize in your template?
46+
47+
### Phase 3 - Excel automation
48+
Capture screenshots of:
49+
1. Input folder with sample files.
50+
2. `Master_Report` output.
51+
3. `rejects.csv` with reason codes.
52+
53+
Reflection prompts:
54+
- What invalid data patterns appeared?
55+
- Which validation rule prevented bad output?
56+
- What is still fragile in your pipeline?
57+
58+
### Phase 4 - SQL ETL
59+
Capture screenshots of:
60+
1. Staging table row sample.
61+
2. Reporting table row sample.
62+
3. Summary query result.
63+
64+
Reflection prompts:
65+
- Where can duplicate data still sneak in?
66+
- How did you verify idempotency?
67+
- What index or query improvement did you add?
68+
69+
### Phase 5 - Orion and DPA integration
70+
Capture screenshots of:
71+
1. Orion ingestion result snapshot.
72+
2. DPA ingestion result snapshot.
73+
3. Cache table freshness timestamps.
74+
75+
Reflection prompts:
76+
- Which source failed first and why?
77+
- How did you prove read-only safety?
78+
- Which fields required transformation mapping?
79+
80+
### Phase 6 - Dashboard delivery
81+
Capture screenshots of:
82+
1. Dashboard home view.
83+
2. Filtered view with date + severity.
84+
3. Export action/result.
85+
86+
Reflection prompts:
87+
- Which dashboard view helps non-technical users most?
88+
- What confuses users today?
89+
- What is your fallback when data is stale?
90+
91+
### Phase 7 - Shipping and governance
92+
Capture screenshots of:
93+
1. Release checklist completion.
94+
2. Runbook ownership section.
95+
3. Final capstone demo screen.
96+
97+
Reflection prompts:
98+
- What support risks remain?
99+
- What handoff gaps still exist?
100+
- Which part of your process now feels "SME-level"?
101+
102+
## Weekly checkpoint template (copy/paste)
103+
```markdown
104+
## Weekly Checkpoint - YYYY-MM-DD
105+
- Goal:
106+
- What I changed:
107+
- What broke:
108+
- Root cause:
109+
- Fix applied:
110+
- Evidence screenshots:
111+
- [ ] link 1
112+
- [ ] link 2
113+
- [ ] link 3
114+
- What I will improve next session:
115+
```
116+
117+
## Primary Sources
118+
- [Python tutorial](https://docs.python.org/3/tutorial/)
119+
- [pytest getting started](https://docs.pytest.org/en/stable/getting-started.html)
120+
- [VS Code Python tutorial](https://code.visualstudio.com/docs/python/python-tutorial)
121+
122+
## Optional Resources
123+
- [Python Tutor](https://pythontutor.com/)
124+
- [Exercism Python](https://exercism.org/tracks/python)
125+
126+
## Next
127+
Go to [13_ENTERPRISE_SAMPLE_SCHEMAS.md](./13_ENTERPRISE_SAMPLE_SCHEMAS.md).

13_ENTERPRISE_SAMPLE_SCHEMAS.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# 13 - Enterprise Sample Schemas (MSSQL + Orion + DPA)
2+
Home: [README](./README.md)
3+
4+
These sample schemas are templates for your learning projects and capstones.
5+
Adjust names and data types for your production standards.
6+
7+
## Schema conventions
8+
- Use UTC timestamps.
9+
- Keep source-system metadata in each table.
10+
- Add unique keys for idempotent loads.
11+
- Separate raw staging from curated reporting tables.
12+
13+
## Example: staging table for Excel ingest
14+
```sql
15+
CREATE TABLE dbo.staging_alerts (
16+
staging_id BIGINT IDENTITY(1,1) PRIMARY KEY,
17+
load_batch_id UNIQUEIDENTIFIER NOT NULL,
18+
source_file NVARCHAR(260) NOT NULL,
19+
source_row_num INT NULL,
20+
customer_name NVARCHAR(200) NULL,
21+
site_name NVARCHAR(200) NULL,
22+
ticket_id NVARCHAR(100) NULL,
23+
status_text NVARCHAR(100) NULL,
24+
opened_at_raw NVARCHAR(100) NULL,
25+
payload_hash CHAR(64) NOT NULL,
26+
ingested_at_utc DATETIME2(0) NOT NULL,
27+
ingest_error NVARCHAR(500) NULL
28+
);
29+
```
30+
31+
## Example: curated reporting table
32+
```sql
33+
CREATE TABLE dbo.alerts_reporting (
34+
alert_id BIGINT IDENTITY(1,1) PRIMARY KEY,
35+
idempotency_key CHAR(64) NOT NULL UNIQUE,
36+
customer_name NVARCHAR(200) NOT NULL,
37+
site_name NVARCHAR(200) NOT NULL,
38+
ticket_id NVARCHAR(100) NOT NULL,
39+
severity NVARCHAR(50) NOT NULL,
40+
opened_at_utc DATETIME2(0) NOT NULL,
41+
source_system NVARCHAR(50) NOT NULL,
42+
source_entity_key NVARCHAR(200) NULL,
43+
collected_at_utc DATETIME2(0) NOT NULL,
44+
loaded_at_utc DATETIME2(0) NOT NULL
45+
);
46+
```
47+
48+
## Example: Orion cache table
49+
```sql
50+
CREATE TABLE dbo.cache_orion_alerts (
51+
cache_id BIGINT IDENTITY(1,1) PRIMARY KEY,
52+
source_system NVARCHAR(20) NOT NULL DEFAULT 'orion',
53+
entity_key NVARCHAR(200) NOT NULL,
54+
alert_name NVARCHAR(300) NULL,
55+
severity NVARCHAR(50) NULL,
56+
node_caption NVARCHAR(300) NULL,
57+
is_active BIT NOT NULL,
58+
payload_hash CHAR(64) NOT NULL,
59+
collected_at_utc DATETIME2(0) NOT NULL,
60+
UNIQUE (source_system, entity_key, collected_at_utc)
61+
);
62+
```
63+
64+
## Example: DPA cache table
65+
```sql
66+
CREATE TABLE dbo.cache_dpa_instances (
67+
cache_id BIGINT IDENTITY(1,1) PRIMARY KEY,
68+
source_system NVARCHAR(20) NOT NULL DEFAULT 'dpa',
69+
entity_key NVARCHAR(200) NOT NULL,
70+
instance_name NVARCHAR(300) NULL,
71+
health_status NVARCHAR(100) NULL,
72+
wait_category NVARCHAR(200) NULL,
73+
payload_hash CHAR(64) NOT NULL,
74+
collected_at_utc DATETIME2(0) NOT NULL,
75+
UNIQUE (source_system, entity_key, collected_at_utc)
76+
);
77+
```
78+
79+
## Example: dashboard mart view
80+
```sql
81+
CREATE VIEW dbo.vw_ops_dashboard_daily AS
82+
SELECT
83+
CAST(collected_at_utc AS DATE) AS snapshot_date,
84+
severity,
85+
COUNT(*) AS alert_count
86+
FROM dbo.cache_orion_alerts
87+
WHERE is_active = 1
88+
GROUP BY CAST(collected_at_utc AS DATE), severity;
89+
```
90+
91+
## Example index strategy
92+
```sql
93+
CREATE INDEX IX_alerts_reporting_opened_severity
94+
ON dbo.alerts_reporting (opened_at_utc, severity);
95+
96+
CREATE INDEX IX_cache_orion_alerts_collected
97+
ON dbo.cache_orion_alerts (collected_at_utc);
98+
99+
CREATE INDEX IX_cache_dpa_instances_collected
100+
ON dbo.cache_dpa_instances (collected_at_utc);
101+
```
102+
103+
## Data governance notes
104+
- Prefer service accounts over personal credentials for scheduled jobs.
105+
- Log source endpoint and load batch for auditability.
106+
- Mask or exclude sensitive payload fields before persistence.
107+
- Validate schema drift and alert on missing critical fields.
108+
109+
## Primary Sources
110+
- [SQL Server Python drivers overview](https://learn.microsoft.com/en-gb/sql/connect/python/python-driver-for-sql-server)
111+
- [MSSQL Python quickstart](https://learn.microsoft.com/en-us/sql/connect/python/mssql-python/python-sql-driver-mssql-python-quickstart?view=sql-server-ver17)
112+
- [ODBC connection string keywords](https://learn.microsoft.com/en-us/sql/connect/odbc/dsn-connection-string-attribute?view=sql-server-ver17)
113+
- [OrionSDK](https://github.com/solarwinds/OrionSDK)
114+
- [DPA API docs](https://documentation.solarwinds.com/en/success_center/dpa/content/dpa-use-the-api.htm)
115+
116+
## Optional Resources
117+
- [SQLAlchemy tutorial](https://docs.sqlalchemy.org/en/20/tutorial/index.html)
118+
- [python-oracledb docs](https://python-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html)
119+
120+
## Next
121+
Go to [14_NAVIGATION_AND_STUDY_WORKFLOW.md](./14_NAVIGATION_AND_STUDY_WORKFLOW.md).
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 14 - Navigation and Study Workflow (Editorial Consistency Pack)
2+
Home: [README](./README.md)
3+
4+
Use this file to keep study flow clean and avoid navigation friction.
5+
6+
## Quick navigation sequence
7+
1. [01_ROADMAP.md](./01_ROADMAP.md)
8+
2. [03_SETUP_WINDOWS11.md](./03_SETUP_WINDOWS11.md)
9+
3. [04_FOUNDATIONS.md](./04_FOUNDATIONS.md)
10+
4. [09_QUALITY_TOOLING.md](./09_QUALITY_TOOLING.md)
11+
5. [05_AUTOMATION_FILES_EXCEL.md](./05_AUTOMATION_FILES_EXCEL.md)
12+
6. [06_SQL.md](./06_SQL.md)
13+
7. [07_SOLARWINDS_ORION.md](./07_SOLARWINDS_ORION.md)
14+
8. [08_DASHBOARDS.md](./08_DASHBOARDS.md)
15+
9. [10_CAPSTONE_PROJECTS.md](./10_CAPSTONE_PROJECTS.md)
16+
10. [11_CHECKLISTS.md](./11_CHECKLISTS.md)
17+
18+
## Recommended weekly loop
19+
1. Read one section.
20+
2. Build one project task.
21+
3. Break one thing intentionally.
22+
4. Fix and log root cause.
23+
5. Capture checkpoints in [12_SCREENSHOT_CHECKPOINTS.md](./12_SCREENSHOT_CHECKPOINTS.md).
24+
25+
## Decision rules to reduce rework
26+
- If a project fails repeatedly, step down one level in [`./projects`](./projects) and rebuild confidence.
27+
- If output is unstable, add tests before adding features.
28+
- If dashboard data is stale, verify ingestion jobs before editing UI.
29+
30+
## Study session template
31+
```markdown
32+
## Session - YYYY-MM-DD
33+
- Phase/Doc:
34+
- Project path:
35+
- Goal:
36+
- One thing I built:
37+
- One thing I broke:
38+
- Root cause:
39+
- Fix:
40+
- Next action:
41+
```
42+
43+
## Primary Sources
44+
- [Python tutorial](https://docs.python.org/3/tutorial/)
45+
- [Ruff docs](https://docs.astral.sh/ruff/)
46+
- [pytest getting started](https://docs.pytest.org/en/stable/getting-started.html)
47+
48+
## Optional Resources
49+
- [Automate the Boring Stuff](https://automatetheboringstuff.com/3e/)
50+
- [Pro Git book](https://git-scm.com/book/en/v2.html)
51+
52+
## Next
53+
Return to [README.md](./README.md) and continue from your current phase.

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,22 @@ Reference support file (use anytime):
6868
- Gate D: Orion + DPA data is ingested into MSSQL cache tables.
6969
- Gate E: Browser dashboard for non-technical users is delivered.
7070

71+
## Project lab ladder (level 0 -> level 10)
72+
- Hands-on projects live in [`./projects`](./projects).
73+
- There are 11 levels: `level-0` through `level-10`.
74+
- Each level includes 15 projects designed to be altered, broken, fixed, and extended.
75+
- Start here:
76+
- [`./projects/README.md`](./projects/README.md)
77+
- [`./projects/level-0/README.md`](./projects/level-0/README.md)
78+
79+
## Second-pass support packs
80+
- Screenshot checkpoints and study prompts:
81+
- [12_SCREENSHOT_CHECKPOINTS.md](./12_SCREENSHOT_CHECKPOINTS.md)
82+
- Enterprise sample schemas (MSSQL + Orion + DPA):
83+
- [13_ENTERPRISE_SAMPLE_SCHEMAS.md](./13_ENTERPRISE_SAMPLE_SCHEMAS.md)
84+
- Navigation and editorial workflow guide:
85+
- [14_NAVIGATION_AND_STUDY_WORKFLOW.md](./14_NAVIGATION_AND_STUDY_WORKFLOW.md)
86+
7187
## Sources Library
7288

7389
### Official and vendor documentation (primary)

0 commit comments

Comments
 (0)