Add quote bridge and quote handoff flow

This commit is contained in:
2026-06-29 18:41:45 -05:00
parent be1475dd8e
commit a329168765
17 changed files with 1707 additions and 509 deletions
+88 -155
View File
@@ -1,184 +1,117 @@
# 🎉 Flask Web Application Successfully Created!
# Product Finder Project
Your HTML/JavaScript quiz has been converted to a Python Flask web application.
## What This Project Is
## ✅ What Was Created
This repository contains a Flask-based Product Finder application used to guide users
through product selection and provide product detail, accessory, search, and admin
workflows.
### Core Application Files
- **app.py** - Main Flask application with routes
- **wsgi.py** - Production WSGI entry point
- **config.py** - Configuration management
- **requirements.txt** - Python dependencies
The current application is no longer a simple Flask conversion of a static quiz.
It now includes:
- modular blueprints
- login and session management
- location-aware access
- product management APIs
- shareable quiz URLs
- layered image preview support
- an optional SQLite backend
### Templates & Static Files
- **templates/** - HTML files (index.html, index2.html, 404.html)
- **css/** - Stylesheets (styles.css)
- **js/** - JavaScript files (script.js)
- **images/** - Product images folder
## Fastest Way To Run It
### Documentation & Utilities
- **README.md** - Complete documentation
- **QUICKSTART.md** - Quick start guide
- **run.bat** - Windows startup script
- **.gitignore** - Git ignore file
- **.env.example** - Environment template
From the repository root:
## 🚀 Quick Start
### Option 1: Using Batch File (Windows)
Double-click `run.bat` to install dependencies and start the server.
### Option 2: Manual Start
```bash
# Install dependencies
pip install -r requirements.txt
# Run the application
python app.py
cd app
../.venv/bin/python app.py
```
### Access Your Application
Open in browser: **http://localhost:8080/quiz**
Then open:
- `http://127.0.0.1:8080/`
- `http://127.0.0.1:8080/quiz/`
## 🌐 Current Status
## Recommended VS Code Tasks
✅ Flask is currently running on: http://localhost:8080
✅ Quiz page: http://localhost:8080/quiz
✅ Debug mode: Enabled (auto-reloads on file changes)
Use the built-in tasks from the repository root:
## 📁 Project Structure
- `Start Flask Server`
- `Process All Data`
- `Update Data Files from CSV`
- `Generate Bitwise Data`
```
project/
├── app.py ← Main Flask app (START HERE)
├── wsgi.py ← For production deployment
├── config.py ← Settings & configuration
├── requirements.txt ← Python packages needed
├── run.bat ← Windows startup script
├── templates/ ← HTML files (Flask requires this folder)
│ ├── index.html ← Main landing page
│ ├── index2.html ← Quiz page
│ └── 404.html ← Error page
├── css/ ← Stylesheets
│ └── styles.css ← Main CSS file
├── js/ ← JavaScript files
│ └── script.js ← Quiz logic and data
└── images/ ← Product images (add your images here)
```
`Process All Data` runs the two data-generation steps in sequence.
## 🎯 Key Features
## Main Application Areas
**Dynamic Routing** - Flask handles all page requests
**Static File Serving** - CSS, JS, and images properly served
**Error Handling** - Custom 404 page
**API Endpoints** - Ready for future backend features
**Production Ready** - WSGI config included
**All Original Features** - Quiz, forms, conditional logic, memory storage
### Authentication
- login page
- logout
- session info endpoint
- location selection for multi-location users
## 🔧 Customization
### Product Finder
- guided quiz flow at `/quiz/`
- advanced search page
- product list page
- product manager page
- direct product links at `/quiz/product/<product_code>`
### Change Port
Edit `app.py`, line with `app.run()`:
```python
app.run(debug=True, host='0.0.0.0', port=YOUR_PORT)
```
### Images and Previews
- flat product images
- layered image previews
- Canvas API fallback routes for hierarchical image lookup
- layer transforms for mirrored door/hardware previews where configured
### Add New Routes
In `app.py`:
```python
@app.route('/your-page')
def your_page():
return render_template('your-page.html')
```
### Data Layer
- JSON is the default runtime backend
- SQLite support exists behind a config flag
- frontend quiz data is driven by JSON files in `app/data/`
### Update Quiz Questions
Edit `js/script.js` - modify the `questionData` object
## Important Files
### Change Styling
Edit `css/styles.css`
- `app/app.py` - application entry point
- `app/blueprints/auth.py` - authentication/session logic
- `app/blueprints/users.py` - user management routes
- `app/blueprints/products.py` - quiz pages, product APIs, admin pages
- `app/blueprints/canvas.py` - Canvas API image routes
- `app/static/js/script.js` - quiz flow, URL state, search, previews
- `app/data/navigation.json` - quiz navigation structure
- `app/data/products.json` - product catalog data
- `app/data/accessories.json` - accessory data
- `app/data/product_bitwise.json` - bitwise lookup data
## 📦 Deployment Options
## Current Known Status
### 1. Web Panels (cPanel, Plesk)
- Upload all files
- Install requirements: `pip install -r requirements.txt`
- Point to `wsgi.py`
Implemented:
- modular Flask app structure
- login/session flow
- location-aware permissions
- user management
- product CRUD/search APIs
- quiz result filtering
- shareable URL state
- product deep links
- Canvas API image fallback system
### 2. Cloud Platforms
- **Heroku**: Add `Procfile` and push to Git
- **PythonAnywhere**: Upload and configure WSGI
- **AWS/Azure**: Use with Gunicorn
Still incomplete:
- fully generic conditional question skipping based on navigation metadata
- automated tests
- decision on whether SQLite should become the default backend
### 3. Docker
See README.md for Dockerfile example
## If You Are Updating Product Data
### 4. Production Server
```bash
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8080 wsgi:app
```
1. Update the source CSV used by the data-generation scripts.
2. Run `Process All Data`.
3. Restart the Flask server if needed.
4. Verify quiz results and product detail views.
## 🐛 Troubleshooting
## If You Are Picking Up Development
### Port Already in Use
Change port in app.py or kill the process:
```bash
# Windows
netstat -ano | findstr :8080
taskkill /PID <PID> /F
```
Start with these files:
### Templates Not Found
Make sure HTML files are in `templates/` folder
1. `app/app.py`
2. `app/blueprints/products.py`
3. `app/static/js/script.js`
4. `app/data/navigation.json`
5. `app/config.py`
### Static Files Not Loading
Check that `css/` and `js/` folders exist in root directory
### Module Not Found
```bash
pip install -r requirements.txt
```
## 📚 Next Steps
1. **Test the application** - Visit http://localhost:8080/quiz
2. **Add your product images** - Place images in `images/` folder
3. **Customize the quiz** - Edit `js/script.js`
4. **Update styling** - Modify `css/styles.css`
5. **Deploy** - Follow README.md deployment guide
## 🔒 Security Notes for Production
Before deploying to production:
- [ ] Set `DEBUG = False` in config.py
- [ ] Change `SECRET_KEY` to a strong random value
- [ ] Use environment variables for sensitive data
- [ ] Set up HTTPS/SSL
- [ ] Use a production WSGI server (Gunicorn, uWSGI)
- [ ] Configure proper logging
- [ ] Set up database backups (if using a database)
## 💡 Tips
- Flask auto-reloads when you edit files (in debug mode)
- Press `Ctrl+C` to stop the server
- Check terminal for error messages
- Use browser DevTools to debug JavaScript
- All original quiz functionality is preserved
## 📞 Need Help?
- Check **README.md** for detailed documentation
- Check **QUICKSTART.md** for simple instructions
- Review Flask logs in terminal for errors
- Test API endpoints using browser or Postman
---
**Your Flask app is ready to use! 🎊**
Visit: http://localhost:8080/quiz
Those files define the main routing, quiz behavior, and backend mode.