How gurpreetwork9582/tattoo works
This is a Flask website for an ink studio. Visitors browse the home, services, contact, and tattoo-gallery pages; the home page can show an enabled offer, and the tattoo API combines Cloudinary images with legacy JSON entries. A separate admin flow authenticates users, exposes an upload page, and signs Cloudinary uploads. The app.py excerpt supports the route, file-read, and Cloudinary-read links shown; the upload page’s client-side behavior was not sampled, so its upload links are marked unverified.
Main entry points: app.py Page Routes · admin_upload.html Upload Page · index.html Home Page · services.html Services Page
Components 16
Public Website
- Page Routes
app.py - Home Page
templates/index.html - Services Page
templates/services.html - Contact Page
templates/contact.html - Offer Reader
app.py
Tattoo Gallery
- Tattoo Page
templates/Tattoos.html - Tattoo API
app.py - Cloudinary Reader
app.py
Admin Upload
- Admin Routes
app.py - Admin Login
templates/admin_login.html - Upload Page
templates/admin_upload.html - Upload Signer
app.py
Studio Data
- Legacy Tattoos
static/data/tattoos.json - Offer Data
static/data/offers.json
Other components
- Visitor
- Cloudinary
Connections 16
- Visitor → Page Routes: requests pages
app.py - Page Routes → Home Page: renders
app.py - Page Routes → Services Page: renders
app.py - Page Routes → Contact Page: renders
app.py - Page Routes → Tattoo Page: renders
app.py - Page Routes → Offer Reader: loads offer
app.py - Visitor → Tattoo API: requests gallery
app.py - Tattoo API → Cloudinary Reader: combines results
app.py - Cloudinary Reader → Cloudinary: lists images
app.py - Tattoo API → Legacy Tattoos: reads entries
app.py - Offer Reader → Offer Data: reads offer
app.py - Visitor → Admin Routes: opens admin
app.py - Admin Routes → Admin Login: renders login
app.py - Admin Routes → Upload Page: renders upload
app.py - Upload Page → Upload Signer: requests signature
- Upload Signer → Cloudinary: signs upload