A progressive, project-based Python learning path—from fundamental desktop utilities to APIs, databases, automation, and defensive security tools.
30 Days of Python Projects is a hands-on learning program containing one practical project for each day. The collection gradually introduces Python fundamentals, graphical applications, file processing, network requests, third-party APIs, data persistence, web development, and defensive log analysis.
Every day includes a focused tutorial with learning goals, setup instructions, a program-flow explanation, guided experiments, an extension challenge, and a completion checklist.
| Stage | Days | Main Focus |
|---|---|---|
| Beginner | 01–10 | Python fundamentals, functions, GUI basics, files, and images |
| Intermediate | 11–20 | Application state, persistence, audio, authentication, and networking |
| Advanced | 21–30 | Bots, external APIs, databases, REST services, web apps, and security logs |
| Interface | Meaning |
|---|---|
| CLI | Runs and accepts input in a terminal |
| Desktop GUI | Opens a desktop window, mainly using Tkinter |
| Graphics Window | Opens a drawing or animation canvas |
| Chat Bot | Interacts through a messaging platform |
| REST API | Exposes HTTP endpoints for another client |
| Web App | Runs a browser-based user interface |
| API Client | Connects to an external service |
| Security Tool | Intended for authorized defensive or educational use |
| Day | Project | Level | Interface | Core Concepts |
|---|---|---|---|---|
| 01 | Calculator | Beginner | Desktop GUI | Tkinter, functions, event handling |
| 02 | QR Code Generator | Beginner | CLI / File Output | QR encoding, package usage, image output |
| 03 | Birthday Turtle Animation | Beginner | Graphics Window | Turtle graphics, coordinates, animation |
| 04 | Personal Message Animation | Beginner | CLI | Strings, terminal styling, timing |
| 05 | Notepad | Beginner | Desktop GUI | Tkinter Text widget, save dialog, file writing |
| 06 | Personal Diary | Beginner | Desktop GUI | Text input, timestamps, append-mode files |
| 07 | Image Converter | Beginner | Desktop GUI | File dialogs, Pillow, image conversion |
| 08 | Color Picker | Beginner | Desktop GUI | Color dialog, HEX/RGB, contrast |
| 09 | Screenshot Tool | Beginner | Desktop GUI | Screen capture, canvas, image annotation |
| 10 | Image Watermark | Beginner | Desktop GUI | Pillow, text positioning, image export |
| 11 | Multi-Function Timer | Intermediate | Desktop GUI | Countdown state, threading, time |
| 12 | Study Timer | Intermediate | Desktop GUI | Study/break cycles, application state |
| 13 | Smart Calendar | Intermediate | Desktop GUI | Dates, JSON persistence, calendar widgets |
| 14 | Music Player | Intermediate | Desktop GUI | Audio playback, controls, file selection |
| 15 | File Manager | Intermediate | Desktop GUI | Filesystem navigation, rename, delete |
| 16 | Password Manager | Intermediate | Desktop GUI | JSON persistence, password generation |
| 17 | Text Encrypt & Decrypt | Intermediate | Desktop GUI | Caesar cipher, character encoding, validation |
| 18 | Register & Login | Intermediate | Desktop GUI | Registration flow, file persistence, validation |
| 19 | Terminal QR Code Generator | Intermediate | CLI | Terminal UI, QR rendering, input loop |
| 20 | Subdomain Hunter | Intermediate | CLI / Network Tool | HTTP requests, parsing, wordlists |
| 21 | Telegram AI Bot | Advanced | Chat Bot | Telegram handlers, AI responses, logging |
| 22 | ChatGPT API Client | Advanced | CLI / API Client | HTTP requests, API headers, loading animation |
| 23 | Language Translator | Advanced | Desktop GUI / API Client | Translation service, language selection, GUI |
| 24 | Audio Transcription | Advanced | Desktop GUI | Microphone input, speech recognition, errors |
| 25 | Tic-Tac-Toe vs AI | Advanced | Desktop GUI / Game | Game state, random AI, difficulty settings |
| 26 | Restaurant Management System | Advanced | Desktop GUI | Orders, totals, tax, invoice logic |
| 27 | Expense Tracker with SQLite | Advanced | CLI / Database | argparse, SQLite, SQL aggregation |
| 28 | Task REST API | Advanced | REST API | FastAPI, Pydantic, CRUD, HTTP methods |
| 29 | Security Log Analyzer | Advanced | CLI / Security Tool | Regex, log parsing, counters, thresholds |
| 30 | Task Manager with Flask & SQLite | Advanced | Web App / Database | Flask routes, forms, CRUD, SQLite |
- Python 3.10 or newer
- Git
- A code editor such as Visual Studio Code
- Basic terminal knowledge
git clone https://github.com/DzarelDeveloper/30-Days-Python-Projects.git
cd 30-Days-Python-Projects
python -m venv .venvActivate the virtual environment:
# Linux or macOS
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1Install the shared dependencies:
pip install -r requirements.txtStart with Day 01:
cd Day-01
python main.pyRead the README inside each day's directory before running its program. Some projects require a desktop environment, microphone, internet connection, bot token, or API credential.
Command compatibility: If
pythonis not available on Linux or macOS, usepython3in the commands above. On Windows, the Python launcher can also be invoked withpy.
- Read the learning goals and concepts for the day.
- Run the original program and observe its behavior.
- Read
main.pyfrom the imports to the entry point. - Identify the input, processing logic, state, and output.
- Perform the guided experiments.
- Test at least one invalid or unexpected input.
- Complete the extension challenge before moving forward.
- Record what failed, why it failed, and how you fixed it.
30-Days-Python-Projects/
├── Day-01/
│ ├── main.py
│ └── README.md
├── ...
├── Day-30/
│ ├── main.py
│ └── README.md
├── .gitignore
├── LICENSE
├── README.md
└── requirements.txt
- Never commit passwords, API keys, bot tokens, or
.envfiles. - Store credentials in environment variables.
- Run network-related projects only against systems you own or have explicit permission to test.
- Analyze only logs you are authorized to access.
- Review validation, error handling, tests, and security before using educational code in production.
Issues and pull requests are welcome. Keep projects easy to study, document new dependencies, exclude sensitive data, and test all changes.
Created and maintained by Muhamad Dzarel Alghifari.
- GitHub: @DzarelDeveloper
- Website: dzarel.com
Licensed under the MIT License.
Learn consistently. Build practically. Improve one project every day.