The Advanced Formulation & Regulatory Platform
A robust, feature-enhanced fork of jbparfum/parfumvault
ParfumFormula elevates the original Perfumers Vault by integrating powerful automation tools for ingredient data mining and regulatory compliance. It serves as a comprehensive ecosystem for perfumers, evaluators, and regulatory affairs managers to create, manage, and validate fragrance formulas with precision.
🌟 Repository: https://github.com/cupiz/ParfumFormula
We have supercharged the core Perfumers Vault with a custom Automation Suite (/automation) designed to eliminate manual data entry:
Can't find an ingredient? No problem! We have integrated a seamless connection to PubChem and The Good Scents Company (TGSC) directly into the user interface.
- Permanently Available: A yellow "Search Online" button is always accessible on the Ingredients page.
- Smart Search: Searches 100M+ compounds instantly via our Python automation backend.
- Instant Import: Preview chemical data (CAS, Formula, Odor Profile) and add it to your library with one click.
- Zero Configuration: Works out-of-the-box using an internal secure bridge (
ajax_autosearch.php)—no complex API keys required.
Stop manually typing CAS numbers and odor descriptions. Our background Python scraper automatically enriches your database:
- Multi-Source Mining: Fetches data from authoritative sources.
- Smart Matching: Uses advanced fuzzy matching algorithms.
- Resilient: Automatically handles rate limits and connection issues.
- IFRA 51st Amendment: Automatically syncs restriction limits (Cat 1 - Cat 12) for hundreds of materials.
- Pre-Loaded Library: Capable of ingesting a curated list of 300+ industry-standard ingredients in one go.
ParfumFormula enables the full lifecycle of fragrance creation:
- Formula Management: Version control, comparisons, and history tracking.
- Inventory Control: Track suppliers, prices, and stock levels.
- Regulatory Compliance: Automated SDS generation and IFRA limit checking during formulation.
- Cost Verification: Real-time formula costing based on current inventory prices.
- Batch & Traceability: Full history of production batches and modifications.
- Dark Mode UI: Modern interface optimized for long formulation sessions.
- Docker Desktop (Windows/Mac/Linux)
- Windows Subsystem for Linux (WSL 2) (Highly Recommended for Windows users)
-
Clone the Repository
git clone https://github.com/cupiz/ParfumFormula.git cd ParfumFormula -
Start the Platform
We use a custom port configuration to avoid conflicts with local services.
# Run from the project root docker compose -f docker-compose/compose.yaml up -d --buildThis will launch:
pvdb: MariaDB database container (Internal Port 3306)pvault: The web application container (Host Port 8082)automation: Python API service (Internal Port 5001)
-
Access the App
Open your browser and navigate to:
👉 http://localhost:8082Default Credentials:
- Email:
admin@admin.com - Password:
password
- Email:
To manually populate your database with bulk data:
Ensure your containers are running, then access the automation folder:
cd automation
pip install -r requirements.txtPopulate the regulatory library first:
python ingestor.py --target ifra --source ./data/ifra_standards.csvScrape and ingest 300+ ingredients automatically:
python ingestor.py --target batch --file ./data/ingredients.txt> Note: This process takes time due to respect for API rate limits. Runs best in background.
If you don't see the yellow button in the Ingredients toolbar:
- Force Refresh your browser (Ctrl+F5) to clear the cache.
- Ensure you are accessing the correct port:
http://localhost:8082.
If the search finds the ingredient (name/CAS) but returns no other data:
- The scraper might be blocked by rate limits.
- Check the automation logs:
docker compose logs automation. - Retry the search after 1 minute.
If you cannot access the app:
- Error
bind: address already in use: Stop other services on port 8082 or 3306. - Edit
docker-compose/compose.yamlto change the port mapping if needed.
We welcome contributions! Please fork the repository and submit a Pull Request. If you encounter issues with the scraper or IFRA data, please open an Issue.
Original Author: jbparfum
Maintained by: Cupiz
This software is provided "as is" under the MIT License.