Match banner brand, print splash, optional crop, and demo seed (#6)
Deploy Beta / unit-tests (push) Successful in 32s
Deploy Beta / docker (push) Successful in 32s
Deploy Beta / deploy-beta (push) Successful in 2m23s

## Summary
- Rebrand public site, portal, and emails from Ecoprint orange to the PRINTFORGE banner palette (navy / cyan / lime).
- Replace the loading splash with a CSS 3D-print animation; product uploads get a default-on smart crop + background filter checkbox.
- Add `manage.py seed_demo` for client walkthroughs on dev/beta only (refuses prod).

Closes #5.

## Test plan
- [ ] Public pages and buttons are cyan/lime, not orange
- [ ] Splash shows a printer building a model (or a static print if reduced motion)
- [ ] Product edit: smart-crop checked by default; uncheck stores the original photo
- [ ] `uv run python manage.py seed_demo` fills shop, contacts, leads, orders, campaigns
- [ ] `DJANGO_ENV=prod` seed_demo exits with an error

Reviewed-on: #6
This commit was merged in pull request #6.
This commit is contained in:
2026-09-07 04:06:52 -07:00
parent 04e75ec7a3
commit 23a6035ba8
19 changed files with 34722 additions and 65 deletions
+3
View File
@@ -298,10 +298,12 @@ def portal_product_edit(request, pk=None):
remove_product_images(
product, request.POST.getlist("remove_image")
)
smart_crop = request.POST.get("smart_crop", "on") == "on"
append_product_images(
product,
uploads=request.FILES.getlist("images"),
user=request.user,
smart_crop=smart_crop,
)
for key, color in colors.items():
uploads = request.FILES.getlist(f"color_images_{key}")
@@ -312,6 +314,7 @@ def portal_product_edit(request, pk=None):
uploads=uploads,
user=request.user,
color=color,
smart_crop=smart_crop,
)
refresh_listing_image(product)
_delete_replaced_file(