Daniel McGee 2ea5b6cf06 Theme shop tab to match printables, add dark mode support to Shopify embed
Theme shop tab to match printables, add dark mode support to Shopify embed

Shop tab layout
- Wrap Shopify embed in v-card (elevation 2) to match printables card style
- Add skeleton loaders while the Buy Button SDK initializes
- Add subtitle blurb above the category filter, consistent with printables tab

Dark mode support
- Add useTheme() / isDark computed to track the active Vuetify theme
- Convert SHOPIFY_OPTIONS to buildShopifyOptions(dark) so all SDK-rendered
  surfaces can be re-themed on toggle
- Theme product tile background + text (previously hardcoded white text
  with no background, invisible in light mode)
- Theme product modal background (previously always rendered white
  regardless of site theme)
- Theme cart/checkout drawer background, header, line items, and footer
  (previously always rendered light mode)
- Re-run initShopify() via a watcher on isDark so the embed re-renders
  when the user toggles theme
- Round button border-radius from 0px to 4px across product, modal, and
  cart buttons for visual consistency with printables cards

Bug fixes
- Add shopifyRenderToken generation guard in initShopify() to prevent a
  race condition where overlapping calls (e.g. theme settling shortly
  after mount) could leave the product grid partially rendered with
  missing images
- Move subtitle blurb above the category filter dropdown (was below)

Files changed:
  src/pages/StorePage.vue
2026-07-01 22:05:22 -04:00
2024-09-30 17:33:30 -05:00
2026-04-29 21:42:23 -06:00
2025-12-23 19:20:02 -06:00
2026-04-26 22:13:16 -06:00
2026-04-26 22:13:16 -06:00
2024-10-28 13:01:53 -05:00
2026-04-26 22:53:56 -06:00

DeFlock

Crowdsourced tool for locating and reporting ALPRs. View Live Site.

DeFlock Screenshot

Purpose

I created this project after noticing the mass deployment of ALPRs in cities, towns, and even rural areas in the recent years. It's a massive threat to privacy, and this projects helps shed a light on this issue as ALPRs continue to be deployed to thousands of cities across the US and possibly beyond.

What it Does

View ALPRs on a Map

Uses OpenStreetMap data to populate a map with crowdsourced locations of ALPRs, along with their type and direction they face.

The map has become a separate repository, deflockhopper_maps.

Report ALPRs

Provides instructions for using the DeFlock App or OpenStreetMap's iD web editor to report ALPRs using a standardized tagging system.

Identify ALPRs

A constantly-growing repository of ALPR makes, models, and tagging instructions for OpenStreetMap, along with images for identifying them.

Tech Stack

Backend

  • TypeScript
  • Fastify API server
  • Cloudflare R2 for ALPR points and vector tiles
  • OpenTelemetry

Cloud

Frontend

  • Vue3
  • Vuetify
  • MapLibre GL
  • Vue Leaflet [deprecated] - phasing out for MapLibre GL

Services

  • OpenStreetMap - Overpass API, Basic Map Tiles [deprecated]
  • Nominatim - Geocoding

Development

Requirements

Running Frontend

  1. cd webapp
  2. bun i
  3. bun dev

Running Backend

  1. cd api
  2. bun i
  3. bun dev

Contributing

We welcome contributions from anyone. Here's how you can help:

How to Contribute

  1. Fork the Repository
  2. Make Your Changes
  3. Open a Pull Request against This Repo
S
Description
No description provided
Readme MIT 31 MiB
Languages
Vue 75.8%
TypeScript 13.7%
HCL 4%
Python 2.1%
JavaScript 1.7%
Other 2.6%