Your personal book-reading manager built with Streamlit and MySQL.
Shelfe is a Streamlit-based application crafted for a Database Management Lab. It showcases relational design, CRUD workflows, search/filtering, authentication, and API enrichment inside a single reading-management experience. Book metadata and cover art are pulled on demand via the Open Library Covers API to keep the UI lightweight yet visual.
- apply SQL design concepts in a working web app
- demonstrate relational schema modeling
- execute CRUD actions through SQL queries
- practice filtering, search, and authentication logic
- connect MySQL persistence with a Python UI layer
- deliver an end-to-end full-stack database solution
Authentication
- secure sign-up/sign-in backed by MySQL credentials
- personalized shelves per user session
Book Management (CRUD)
- add new reads with notes and progress
- list catalog entries with key details
- update status, progress, or annotations
- delete records when finished
Search & Filter
- query by title or author keyword
- filter by reading status for quick context
Dashboard
- track reading progress by user
- visualize structured stats in Streamlit widgets
Admin Panel
- manage user accounts
- review system-wide logs and entries
Book Covers & Metadata
- fetch cover art from Open Library for a polished look
- avoid storing bulky media locally
| Technology | Role |
|---|---|
| Python | Core programming language |
| Streamlit | Frontend/web experience |
| MySQL | Relational datastore |
| mysql-connector-python | Database connectivity layer |
| Open Library Covers API | Metadata and imagery |
Shelfe models users, books, reading states, and admin actions in MySQL tables. SQL coverage includes:
- parameterized
INSERT,SELECT,UPDATE,DELETE WHEREfilters andLIKEsearch clauses- joins when correlating users with their books or status types
All database interactions are routed through Python helpers to maintain integrity and prevent SQL injection.
Shelfe/
├── main.py # Streamlit entry point
├── home.py # Landing page
├── signin.py # Auth logic
├── dashboard.py # CRUD dashboard
├── admin_panel.py # Admin controls
├── about.py # About/info page
├── UI/ # UI components
├── DB_ss/ # Database references
├── ScreenShots/ # App visuals
├── requirements.txt # Dependencies
├── sql.txt # Schema & seed data
└── instruction.txt # Setup directions
pip install -r requirements.txtConfigure MySQL using sql.txt, update credentials inside the Streamlit scripts, then launch:
streamlit run main.py- executed full CRUD cycles against MySQL
- bridged database theory with a Streamlit front end
- integrated external APIs for richer UX
- applied relational modeling, filtering, and search in practice
- delivered a cohesive full-stack database project