Skip to content

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.

License

Notifications You must be signed in to change notification settings

sarah-browning/Lacquer-Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💅 Lacquer Library

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 Vision

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.

🧠 The Learning Journey

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.

✨ Key Features

  • 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.

🛠️ Tech Stack

  • Backend: Python 3.12 with Flask
  • Database: SQLite with SQLAlchemy (ORM)
  • Styling: Tailwind CSS
  • Environment: Ubuntu 24.04 LTS (WSL 2) on Windows 10

🚀 Getting Started

Prerequisites

  • Python 3.12+
  • WSL 2 (Ubuntu)
  1. Clone the repository:

    git clone [https://github.com/sarah-browning/lacquer-library.git](https://github.com/sarah-browning/lacquer-library.git)
    cd lacquer-library
  2. Set up the virtual environment:

    python3 -m venv venv
    source venv/bin/activate  # Or use your 'activate' alias
  3. Install dependencies:

    pip install -r requirements.txt
  4. Run the development server:

    python app.py

📈 Roadmap

  • 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

🔍 Detailed Database Schema (Development Goals)

The application utilizes a relational structure to manage complex enthusiast data, personal observations, and workspace logistics.

1. Polish & Treatment Table (The Core)

  • 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.

2. Tools & Supplies Table

  • 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").

3. Usage Logs & Personal Notes (Relational)

  • 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.

4. Vibes & Aesthetics (Many-to-Many)

  • Vibe Name: Tag-based system (e.g., "Cozy," "Office Safe").
  • Vibe Context: Context for why a polish fits a specific aesthetic or season.

⚖️ License

Distributed under the Apache License 2.0. See LICENSE for more information.

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages