Add a new Real-World Projects lesson: Build a File-Organizer Bot (backlog idea #63 — "File-organizer bot (sorts Downloads folder by type/date automatically)").
Scope
docs/projects/file-organizer/index.md — new lesson matching the house skeleton (see docs/projects/scrape-analyze/index.md as the closest sibling in structure). This is the first pure filesystem-automation project in the library, so it establishes the conventions for this category.
examples/file-organizer/ — a real, runnable CLI (organizer.py) built on stdlib pathlib/shutil/json: an extension-to-category config, a --dry-run mode that only prints planned moves, a real move mode with collision handling, a JSON operations log of every real move, and an --undo command that reverses the last run using that log. Includes generate_sample.py to create a safe throwaway messy folder to test against, a notebook.ipynb, and a README.md.
- Registration:
src/data/projects.ts, docs/projects/index.mdx, src/pages/index.tsx (English only — no i18n changes).
- Colab/Kaggle/Binder badges in "Where to run this", pointed at this PR's branch (to be updated to
main once merged) — the notebook creates and organizes a small sample folder inside the notebook's own ephemeral filesystem, clearly labeled as a demo, since a hosted notebook has no access to the student's real Downloads folder.
Safety note
Since this project touches real files, the lesson must be explicit and careful about safety: always test with --dry-run first, try it on a throwaway sample folder before pointing it at a real Downloads folder, and rely on the JSON operations log + --undo as a real safety net rather than a hand-wavy afterthought.
Add a new Real-World Projects lesson: Build a File-Organizer Bot (backlog idea #63 — "File-organizer bot (sorts Downloads folder by type/date automatically)").
Scope
docs/projects/file-organizer/index.md— new lesson matching the house skeleton (seedocs/projects/scrape-analyze/index.mdas the closest sibling in structure). This is the first pure filesystem-automation project in the library, so it establishes the conventions for this category.examples/file-organizer/— a real, runnable CLI (organizer.py) built on stdlibpathlib/shutil/json: an extension-to-category config, a--dry-runmode that only prints planned moves, a real move mode with collision handling, a JSON operations log of every real move, and an--undocommand that reverses the last run using that log. Includesgenerate_sample.pyto create a safe throwaway messy folder to test against, anotebook.ipynb, and a README.md.src/data/projects.ts,docs/projects/index.mdx,src/pages/index.tsx(English only — no i18n changes).mainonce merged) — the notebook creates and organizes a small sample folder inside the notebook's own ephemeral filesystem, clearly labeled as a demo, since a hosted notebook has no access to the student's real Downloads folder.Safety note
Since this project touches real files, the lesson must be explicit and careful about safety: always test with
--dry-runfirst, try it on a throwaway sample folder before pointing it at a real Downloads folder, and rely on the JSON operations log +--undoas a real safety net rather than a hand-wavy afterthought.