A structured 108-day interactive learning platform covering Python, Data Science, Machine Learning, Business Intelligence, and Enterprise SQL β designed for business professionals.
saint2706.github.io/Coding-For-MBA
- Primary production environment: GitHub Pages via
.github/workflows/deploy.yml. - Surge (
coding-for-mba.surge.sh) usage: optional preview/release deployment, triggered manually (workflow_dispatch) or on published GitHub releases. - Promotion model (CI β Deploy):
CI(.github/workflows/ci.yml) runs on PRs and pushes tomainand is the canonical gate for linting, type checking, content validation, and test coverage.Deploy to GitHub Pages(.github/workflows/deploy.yml) runs automatically only afterCIcompletes successfully onmain(workflow_runtrigger).- Deploy workflow now performs only deployment-critical tasks (install deps, build artifact, upload, Pages deploy), with no duplicated quality gates.
- Manual deploy remains available through
workflow_dispatchfor maintainer-controlled re-deploys. Dependency Review(.github/workflows/dependency-review.yml) runs on pull requests to protected branches and blocks dependency updates that introduce high/critical vulnerabilities or unacceptable license/policy changes.
| Phase | Topic | Days |
|---|---|---|
| 1 | Python Foundations | 1β12 |
| 2 | Functions & Modularity | 13β24 |
| 3 | Data Engineering & Web Dev | 25β36 |
| 4 | Math & ML Foundations | 37β48 |
| 5 | Advanced ML & Deep Learning | 49β60 |
| 6 | Cutting-Edge ML | 61β72 |
| 7 | BI & Analytics | 73β84 |
| 8 | SQL Mastery | 85β96 |
| 9 | Enterprise SQL | 97β108 |
- Framework: React 19.2.4 + TypeScript 5.9.3
- Build Tool: Vite 7.3.1
- Routing: React Router (HashRouter for GH Pages)
- Markdown: react-markdown + remark-gfm + rehype-raw
- Syntax Highlighting: react-syntax-highlighter (Prism)
- Styling: Vanilla CSS with custom design system
- Deployment: GitHub Pages via GitHub Actions
# Clone the repo
git clone https://github.com/saint2706/Coding-For-MBA.git
cd Coding-For-MBA
# Install dependencies
npm install
# Start dev server
npm run devsrc/
βββ components/ # Reusable UI components
β βββ MarkdownRenderer.tsx
β βββ Navbar.tsx
β βββ Sidebar.tsx
βββ pages/ # Route-level page components
β βββ Home.tsx
β βββ Curriculum.tsx
β βββ Lesson.tsx
β βββ PhaseOverview.tsx
βββ styles/ # Modular CSS files
β βββ index.css # Barrel import
β βββ variables.css # Design tokens
β βββ base.css # Reset & layout
β βββ ... # Per-component styles
βββ utils/
β βββ contentLoader.ts # Markdown parser & data layer
βββ stores/ # Zustand state stores
βββ App.tsx
βββ main.tsx
content/lessons/ # 108 lesson markdown files
docs/ # Documentation (Roadmap, Architecture)
scripts/ # Build and validation scripts
- Use the navbar search input from any page, or open
/searchdirectly. - Keyboard shortcuts:
/focuses the search box.Escclears the current query.
- Search indexes lesson
title,tags,concepts,phase,day, and markdown body text. - Code blocks are stripped before indexing so prose matches stay relevant.
- Ranking prioritizes title > concepts > tags > body and returns highlighted snippets.
- The index is built on the client and cached after initial load, so it works offline once assets are cached.
The AI Study Assistant uses the Google Gemini API directly from the browser.
- Visit Google AI Studio.
- Sign in with your Google account.
- Click Create API key and copy it.
VITE_GEMINI_API_KEY(required): your Gemini API key. This is baked into the browser bundle at build time by Vite.
-
Copy
.env.exampleto.env.local:cp .env.example .env.local
-
Paste your key into
.env.local:VITE_GEMINI_API_KEY=your_gemini_key_here
-
Start Vite as usual:
npm run dev
Add VITE_GEMINI_API_KEY as a repository secret named exactly VITE_GEMINI_API_KEY. The deploy workflow passes this secret to npm run build so it is embedded in the production bundle.
| Script | Description |
|---|---|
npm run dev |
Start Vite dev server |
npm run build |
Production build (includes sitemap, llms.txt, typecheck) |
npm run analyze |
Build + generate dist/stats.html bundle report |
npm run lint |
Run TypeScript compiler check (alias for typecheck) |
npm run typecheck |
Run TypeScript compiler check |
npm run format |
Format code with Prettier |
npm run format:check |
Verify formatting |
npm run validate-content |
Verify markdown content integrity |
npm run preview |
Preview the production build locally |
npm test |
Run unit tests (Vitest) |
npm run test:watch |
Run unit tests in watch mode |
npm run test:coverage |
Run unit tests with coverage report |
npm run test:e2e |
Run Playwright end-to-end tests |
npm run test:e2e:headed |
Run Playwright end-to-end tests in headed mode |
npm run test:e2e:report |
Show Playwright test report |
npm run deploy |
Deploy to GitHub Pages |
For more details, please see:
- Contributing Guide: How to set up and contribute.
- Architecture: Technical overview of the project.
- Roadmap: Upcoming features and improvements.
- Automatic schedule: Dependabot checks both
npmandgithub-actionsevery Thursday at 1:00 PM IST via.github/dependabot.yml. - Manual on-demand run: GitHub does not currently provide a public API to trigger Dependabot version updates from a workflow. The
Dependabot On-Demandworkflow documents this limitation and points maintainers to supported alternatives. - Manual alternatives: Use the GitHub UI Insights β Dependency graph β Dependabot β Check for updates, or rely on the weekly schedule in
.github/dependabot.yml.
- Visual smoke tests live in
tests/e2e/visual-smoke.spec.tsand capture snapshots for: home, curriculum, phase 1, lesson 1, progress, and search routes. - Snapshots are generated from deterministic full-page screenshots and compared via committed SHA-256 text snapshots (no binary image baselines) with a fixed viewport and reduced-motion mode for stability.
- Update snapshots intentionally with:
npm run test:e2e -- --project=chromium tests/e2e/visual-smoke.spec.ts --update-snapshotsGitHub Actions uploads machine-readable test and diagnostics artifacts to support debugging and historical comparisons:
- CI workflow (
.github/workflows/ci.yml)unit-test-results: Vitest JUnit XML attest-results/vitest-junit.xml.coverage-report: coverage outputs fromcoverage/(includinglcov.info,cobertura-coverage.xml, and HTML report files).- Retention: 14 days.
- Nightly Smoke workflow (
.github/workflows/nightly-smoke.yml)- On Playwright failures only:
nightly-playwright-html-reportfromplaywright-report/. - On Playwright failures only:
nightly-playwright-tracesfromtest-results/(trace bundles and related outputs). - Retention: 7 days.
- On Playwright failures only:
- Lighthouse CI workflow (
.github/workflows/lighthouse.yml)lighthouse-reportfrom.lighthouseci/.- Retention: 7 days.
You can download artifacts from the corresponding workflow run page in the Actions tab.
- Bundle analysis: run
npm run analyzeto generate a visual treemap report atdist/stats.html(powered byrollup-plugin-visualizer). - Route prefetching: key nav links now prefetch lazy route chunks on hover/focus/touch so common transitions feel instant on warm networks.
- Module preload tuning: Vite preload dependencies are filtered/prioritized for JS/CSS runtime chunks to avoid noisy preload graphs.
- Critical CSS plan: we intentionally inline a small, maintainable CSS block in
index.htmlfor the home above-the-fold shell (body,.page-container,.hero), while leaving the main stylesheets untouched for long-term maintainability.
This project is open source for educational purposes.