Languages · project ideas
Python Project Ideas
Build real Python projects from beginner scripts to advanced applications, covering core syntax, libraries, APIs, data handling, automation, and system design.
CLI To-Do List Manager
beginner
Build a command-line task manager that stores tasks in a JSON file with add, complete, and delete operations.
Requirements
- Add tasks with a title and optional due date
- Mark tasks as complete or delete them
- Persist tasks to a local JSON file
- List tasks filtered by status (pending/done)
- Display a summary count of pending vs completed tasks
File I/O and JSON handlingCLI argument parsing with argparseBasic data structures (lists, dicts)Control flow and functions
Weather Dashboard
beginner
Fetch and display current weather and a 5-day forecast for any city using a free weather API.
Requirements
- Accept city name as user input
- Call the OpenWeatherMap API with the requests library
- Display temperature, humidity, wind speed, and conditions
- Show a 5-day forecast in a readable table format
- Handle invalid city names with a clear error message
HTTP requests and REST APIsJSON parsingError handling with try/exceptString formatting and output
CSV Data Analyzer
beginner
Read any CSV dataset, compute descriptive statistics, and output a plain-text summary report.
Requirements
- Accept a CSV file path as a CLI argument
- Compute mean, median, min, max, and std dev per numeric column
- Detect and report missing values per column
- Export a summary report to a .txt file
- Support datasets with at least 1,000 rows without crashing
csv and statistics modulesFile handlingData cleaning basicsCommand-line scripting
Web Scraper & Price Tracker
intermediate
Scrape product prices from a public e-commerce site on a schedule and alert when a price drops below a threshold.
Requirements
- Scrape product name and price using BeautifulSoup
- Store historical prices with timestamps in SQLite
- Run on a configurable polling interval (e.g. every hour)
- Send an email alert via smtplib when price drops below target
- Respect robots.txt and add request delays
Web scraping with BeautifulSoup/requestsSQLite with sqlite3Scheduling with schedule libraryEmail automationEthical scraping practices
Personal Finance REST API
intermediate
Build a RESTful API for tracking income and expenses with category tagging and monthly summaries.
Requirements
- CRUD endpoints for transactions (amount, category, date, note)
- Authenticate requests with a simple API key header
- Store data in SQLite via SQLAlchemy ORM
- GET /summary endpoint returning monthly totals per category
- Validate all input and return proper HTTP status codes
Flask or FastAPISQLAlchemy ORMREST API designInput validationAuthentication basics
Automated File Organizer
intermediate
Watch a folder and automatically sort incoming files into subfolders by type, date, or custom rules defined in a config file.
Requirements
- Monitor a directory in real time using watchdog
- Read sorting rules (extensions → folder names) from a YAML config
- Move files to categorized subfolders (Images, Docs, Videos, etc.)
- Log every move operation with timestamp to a rotating log file
- Handle filename conflicts by appending a counter suffix
watchdog for filesystem eventsYAML config parsinglogging modulepathlib for path handlingEvent-driven programming
Data Visualization Dashboard
intermediate
Build an interactive browser dashboard that loads a CSV dataset and renders filterable charts.
Requirements
- Load any CSV and auto-detect numeric and categorical columns
- Render at least three chart types (bar, line, scatter) with Plotly
- Add dropdown filters to slice data by a categorical column
- Display a summary stats panel alongside the charts
- Package as a Dash app runnable with a single command
Pandas for data manipulationPlotly and DashCallback-based interactivityData aggregationApp packaging
Async Multi-Source News Aggregator
advanced
Concurrently fetch articles from multiple RSS feeds and a news API, deduplicate, rank by relevance, and serve results via a FastAPI endpoint.
Requirements
- Fetch at least five RSS feeds concurrently with aiohttp and asyncio
- Call the NewsAPI in parallel alongside RSS fetching
- Deduplicate articles by normalized title similarity (difflib or rapidfuzz)
- Score and rank articles by keyword relevance from a user query
- Expose a GET /news?q= endpoint returning ranked JSON results with caching
asyncio and aiohttpFastAPIText similarity and rankingIn-memory cachingConcurrent I/O design
ML-Powered Spam Classifier Microservice
advanced
Train a text classification model on a public spam dataset, wrap it in a production-ready API with monitoring and a retrain endpoint.
Requirements
- Train a TF-IDF + Naive Bayes (and compare one other) model on the SMS Spam Collection dataset
- Achieve at least 97% accuracy; log precision, recall, and F1 to MLflow
- Serialize and load the model with joblib for zero-retraining startup
- Expose POST /predict and POST /retrain endpoints via FastAPI
- Add Prometheus metrics (request count, latency, prediction distribution) with a /metrics endpoint
scikit-learn (vectorization, classification)MLflow experiment trackingFastAPI for model servingjoblib model serializationPrometheus instrumentation