A specialized collection manager for nail polish enthusiasts to catalogue, track, and curate their collections. This project transitions a traditional static spreadsheet into a dynamic, mobile-first database application while serving as a practical refresh of modern Python and Flask development patterns.
The "Lacquer Library" addresses a common enthusiast struggle: managing a collection that outgrows standard spreadsheets. The application provides a "digital rack" accessible from a desktop for bulk editing and optimized for mobile devices for real-time logging at the manicure table.
This project documents a return to active development after a hiatus since 2022, focusing on:
- Core Skills: Mastering Python 3.12 syntax and modern Flask patterns.
- DevOps: Utilizing WSL 2 (Ubuntu 24.04 LTS) and professional Git workflows.
- Problem Solving: Transitioning from legacy skills to building a production-ready, mobile-responsive tool.
- Comprehensive Cataloguing: Tracks enthusiast-level data including formula health (thinner added), coats required for opacity, and specialized finishes (Holo, Magnetic, Thermal).
- Integrated Workspace Inventory: A dedicated tracking system for essential tools and supplies, including magnet quantities, liquid levels (acetone, thinners), and nail care hardware.
- Mobile-First "At the Desk" Logging: A Tailwind CSS-powered UI optimized for quick data entry on mobile devices, allowing for real-time logging during swatching or manicures.
- Advanced Filtering & "Vibe" Search: Filters collections by aesthetic (e.g., "Spooky," "Office Professional") or treatment type (Base/Top Coats) rather than just primary colour families.
- Manicure History & Personal Playbook: Logs manicure frequency and maintains a "playbook" for favourite layering combinations and specific magnetization techniques.
- Maintenance Alerts: Visual flags for bottle age, formula modifications, and low supply levels for essential liquids.
- Backend: Python 3.12 with Flask
- Database: SQLite with SQLAlchemy (ORM)
- Styling: Tailwind CSS
- Environment: Ubuntu 24.04 LTS (WSL 2) on Windows 10
- Python 3.12+
- WSL 2 (Ubuntu)
-
Clone the repository:
git clone [https://github.com/sarah-browning/lacquer-library.git](https://github.com/sarah-browning/lacquer-library.git) cd lacquer-library -
Set up the virtual environment:
python3 -m venv venv source venv/bin/activate # Or use your 'activate' alias
-
Install dependencies:
pip install -r requirements.txt
-
Run the development server:
python app.py
- Phase 0: Environment Setup & "Smoke Test"
- Phase 1: Database Schema Design & SQLAlchemy Models
- Phase 2: Mobile-Responsive "Add Polish" Entry Form
- Phase 3: Searchable Inventory Grid with Tailwind CSS
- Phase 4: Advanced Filtering by Finish, Colour Family, and Vibe
- Phase 5: Manicure Usage Tracking & Historical Logs
The application utilizes a relational structure to manage complex enthusiast data, personal observations, and workspace logistics.
- ID: Primary key.
- Brand & Shade Name: Core identifiers.
- Sub-Category: Distinguishes between Standard Polish, Topper, or Treatment (Base/Top Coats).
- Collection: Seasonal or limited edition grouping.
- Swatch Number: Physical swatch stick inventory link.
- Finish Type: Categorized (Shimmer, Holo, Creme, Flakie, Jelly, etc.).
- Special Properties: Booleans for Thermal, Solar, Magnetic, Reflective, or Scented.
- Opacity Score: 1–3 scale for coats required.
- Thinner Added: Boolean flag for formula modification.
- Status: Active, Destash, or Empty.
- Tool Name: Identifies magnets, files, and liquids.
- Category: Grouping by use (Prep, Magnet, Removal).
- Quantity: Essential for tracking multiple magnets for specific techniques.
- Supply Level: Tracks remaining volume for liquids like Acetone or Clean-up brush solution.
- Notes: Performance observations (e.g., "Best magnet for crisp lines").
- Date Worn: Logged every time a polish is used.
- Application Notes: Observations like "Dries slowly" or "Chipped after 2 days".
- Custom Techniques: Log favourite magnetization patterns or specific magnetic tool requirements.
- Layering & Pairings: Notes on successful combinations (e.g., "Perfect over a black base").
- Manicure Combo: Links to specific Base/Top coats used from the Treatment category.
- Vibe Name: Tag-based system (e.g., "Cozy," "Office Safe").
- Vibe Context: Context for why a polish fits a specific aesthetic or season.
Distributed under the Apache License 2.0. See LICENSE for more information.