{"id":51468624,"url":"https://github.com/gperdrizet/fullstack-2605","last_synced_at":"2026-07-06T14:30:30.000Z","repository":{"id":357500737,"uuid":"1237239185","full_name":"gperdrizet/fullstack-2605","owner":"gperdrizet","description":"Materials for Fullstack Academy AI/ML cohort 2605","archived":false,"fork":false,"pushed_at":"2026-06-30T03:13:15.000Z","size":9933,"stargazers_count":3,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-30T05:08:54.748Z","etag":null,"topics":["ai-ml","data-science","machine-learning"],"latest_commit_sha":null,"homepage":"https://gperdrizet.github.io/fullstack-2605/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gperdrizet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T02:16:13.000Z","updated_at":"2026-06-30T02:58:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gperdrizet/fullstack-2605","commit_stats":null,"previous_names":["gperdrizet/fullstack-2605"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gperdrizet/fullstack-2605","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gperdrizet%2Ffullstack-2605","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gperdrizet%2Ffullstack-2605/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gperdrizet%2Ffullstack-2605/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gperdrizet%2Ffullstack-2605/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gperdrizet","download_url":"https://codeload.github.com/gperdrizet/fullstack-2605/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gperdrizet%2Ffullstack-2605/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35195590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-ml","data-science","machine-learning"],"created_at":"2026-07-06T14:30:29.222Z","updated_at":"2026-07-06T14:30:29.942Z","avatar_url":"https://github.com/gperdrizet.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fullstack-2605\n\n[![Pages deployment](https://github.com/gperdrizet/fullstack-2605/actions/workflows/publish.yml/badge.svg)](https://github.com/gperdrizet/fullstack-2605/actions/workflows/publish.yml)\n[![Slack notifications](https://github.com/gperdrizet/fullstack-2605/actions/workflows/slack-pages-deployed.yml/badge.svg)](https://github.com/gperdrizet/fullstack-2605/actions/workflows/slack-pages-deployed.yml)\n[![Material for MkDocs](https://img.shields.io/badge/Material_for_MkDocs-526CFE?logo=materialformkdocs\u0026logoColor=white)](https://squidfunk.github.io/mkdocs-material/)\n[![Fullstack Academy](https://img.shields.io/badge/Fullstack_Academy-AI%2FML_2605-CC0000?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/ElEQVR42qVTS2tTQRg993oNlWhsmndMYpNqFLrVH+HChQtBFERcquB/EJS2lmqoGxUXoogWtWqRIlUJsSZVGkF/RjtjW/Umua8cF1NCe3OLC8/q43ucmfnOGY0kEYRuF9D1/tiH4KzrAboOd7kJp7Gkhl03sBX0w3FIknZjiXLkKGVhhHa1tq22FQgc/lilLJYphlIUsTRlvkRr/l0gCfzD1tt5ynyJq3siNG+MszVV4Wo4SpEpsPNyto9EETguSbLz/AVFpkCxL0ZzbKLX1KrcoRhMUCSybD9+opKuu0ngeSTJ9sNHFLE0RSTOVmVa8S43adcbqn7vAUU0RTGYYPvufUXieQS7XbZuT1NEk5S5IjubJzhfvlKWRymLZdq1T+qGs68oDx6i2J+gOXaT9DwqGUMhJZXnAYYBp97ArzPnwJUVcH0Dv8+eh1OtQTMM1aNpKgag0fMIXYf1bAZ/Ll8FjN3Q9obBtTUMXLkELRRC+1YFWiQCWhZgthCemsDAxQvKYNsUeDNHmStSxDNcP3Gyt8SNU6cp4lmKdJ6dpzPcuvh+GRc+qHfG0jSvXac5PkmRPECZHWbn9dwOMvqNtPiZsnSEYjBJMZSizBVpLbz/h5F8JE7zG3+WRymHD9NerO9oZS3wN7oeYOyC+/0HYNswjh/r5fzQ/vc7/wXommuoWg4yLwAAAABJRU5ErkJggg==\u0026logoColor=white)](https://www.fullstackacademy.com/)\n\nMaterials for Fullstack Academy AI/ML cohort 2605.\n\nCourse site: \u003chttps://gperdrizet.github.io/fullstack-2605\u003e\n\n## Site overview\n\nThe course site is built with [MkDocs](https://www.mkdocs.org/) using the [Material theme](https://squidfunk.github.io/mkdocs-material/). Source pages live in `docs/` and are configured in `mkdocs.yml`. The site deploys automatically to GitHub Pages via GitHub Actions on every push to `main`.\n\n```\ndocs/\n├── index.md                          # homepage\n├── notebooks.md                      # notebook table\n├── datasets.md                       # dataset table\n├── assets/\n│   └── logo.png                      # Fullstack Academy logo\n├── stylesheets/\n│   └── extra.css                     # custom brand colors\n└── resources/\n    ├── documentation-links.md\n    ├── linux-commands.md\n    ├── notebook-shortcuts.md\n    ├── dev-tools-install-guide.md\n    └── dev-container-guide.md\n```\n\n## Local development\n\nInstall dependencies:\n\n```bash\npip install mkdocs-material\n```\n\nServe the site locally with live reload:\n\n```bash\nmkdocs serve\n```\n\n\n## Datasets and Git LFS\n\nDataset files in `data/` are stored with [Git LFS](https://git-lfs.com/). Install Git LFS before cloning so the files are downloaded correctly:\n\n```bash\n# Install (Ubuntu/Debian)\nsudo apt install git-lfs\n\n# Install (macOS)\nbrew install git-lfs\n\n# Enable in your Git install (once per machine)\ngit lfs install\n```\n\nIf you already cloned the repo without Git LFS, run `git lfs pull` to fetch the data files.\n\nThen open \u003chttp://127.0.0.1:8000\u003e in your browser. Changes to any file in `docs/` or `mkdocs.yml` are reflected immediately.\n\n\n## Deployment\n\nAll changes to the course site should go through a pull request rather than pushing directly to `main`. The recommended workflow is:\n\n1. Create or switch to a `dev` branch (or any feature branch):\n   ```bash\n   git checkout -b dev\n   ```\n2. Make your changes, commit, and push:\n   ```bash\n   git add .\n   git commit -m \"describe your changes\"\n   git push origin dev\n   ```\n3. Open a pull request from your branch into `main` on GitHub. Write a short description of what changed — this text is included in the Slack notification sent to students.\n4. Merge the pull request.\n\nMerging into `main` triggers two automated workflows in sequence:\n\n- **Publish to GitHub Pages** (`.github/workflows/publish.yml`): runs `mkdocs gh-deploy --force`, which builds the site and pushes it to the `gh-pages` branch.\n- **pages-build-deployment** (managed by GitHub Pages): picks up the new `gh-pages` content and deploys it to the live CDN. This step typically takes 5–6 minutes.\n\nOnce both workflows complete successfully, a Slack notification is sent to the course channel (see below).\n\n\n## Slack notifications\n\nWhen a pull request is merged to `main` and the GitHub Pages deployment succeeds, the workflow at `.github/workflows/slack-pages-deployed.yml` posts a message to the course Slack channel. The message includes the PR description, so students know what was updated.\n\nThe workflow posts via a **Slack Workflow Builder webhook** — no bot or admin approval required, since Workflow Builder is available to all workspace members.\n\n### Setup\n\n1. In Slack, open **Tools → Workflow Builder** and create a new workflow with a **Webhook** trigger.\n2. Define three text input variables: `author`, `details`, and `site_url`.\n3. Add a **Send a message** step to post to your channel using those variables.\n4. Publish the workflow and copy the webhook URL (it starts with `https://hooks.slack.com/workflows/...`).\n5. Add the URL as a repository secret:\n   - Go to the repository on GitHub → **Settings** → **Secrets and variables** → **Actions** → **New repository secret**.\n   - Name: `SLACK_WEBHOOK_URL`\n   - Value: paste the webhook URL.\n\nThe notification is skipped automatically if the deployment fails or if the push to `main` was not from a merged pull request (e.g. a direct push).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgperdrizet%2Ffullstack-2605","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgperdrizet%2Ffullstack-2605","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgperdrizet%2Ffullstack-2605/lists"}