What I Plan to Learn
- Watchdog — a library that allows tracking changes in the file system: adding, deleting, or editing files. This will be my first entry point.
- Event Coalescing — how to merge a flood of OS signals into more useful and meaningful data.
- Multithreading and Asynchrony — reactions to events must be fast and independent.
- Project Structure — from the very beginning I want to build the code so that it can be extended: database, logging, notifications, integration with other systems.
- Interaction with the OS — my goal is not only to write code, but also to understand what exactly the operating system does when we create or delete files.
- Cross-platform Support — I will be working on macOS, but the project is designed to work equally well on Linux and Windows. If necessary, I will dive into low-level APIs:
inotify(Linux),FSEvents(macOS),ReadDirectoryChangesW(Windows).
Possible Applications
- Backup System — a simple but useful foundation. Track changes — get automatic backups.
- CI/CD Pipelines — run tests or builds when files change.
- System Monitoring — collect activity statistics in directories.
- Security — control over directories: if a new file appears, get a notification.
- Collaboration Service — store information about who made changes to the project and when.
- GUI Interface — a convenient visual shell for working with events.
- Telegram Integration — notifications about suspicious changes. For example: “Changes have occurred in the project. Would you like to stop the server?”
Why I Am Writing About This
For me, PyWatch is not a single project, but a whole series of steps. I want to study everything step by step. Blog posts will serve as my notes and reminders. In the future, I will be able to return to them and quickly refresh my memory. At the end of the journey, after accumulating knowledge, I will create a full-fledged portfolio project — a tool that brings together all PyWatch functionality and becomes part of my public work.