Sniffies Projects v0.1
Basic installation instructions for the Sniffies Projects userscript and Chrome extension.
Basic installation instructions for the Sniffies Projects userscript and Chrome extension.
A monorepo of tools to recreate and expand functionality for sniffies.com
Location spoofing — Override the GPS coordinates Sniffies sees, letting you browse any location on the map.
Opening profiles outside geofence — Click profiles outside the free radius to view them without hitting the paywall.
Profile online notification service (In progress) — Favorite profiles and receive an SMS when they come online.
client/ — Chrome ExtensionThe main user-facing Chrome extension. Lets users spoof their GPS location and click on profiles outside of the free geofence.
User Install: Download sniffies-chrome.zip from the latest release, extract it, then load the dist/ folder as an unpacked extension in chrome://extensions (Developer mode on).
Dev Install: See client/README.md for build instructions.
watcher/ — Watcher Chrome ExtensionA separate Chrome extension that runs alongside the client. It hooks into the Sniffies WebSocket connection to detect when watched users come online, then calls server/api/notify to fan out SMS alerts to all subscribers. Never distributed publicly — sideloaded only.
User Install: This build is intended to support user functionality but not intended to be touched by the user.
Dev Install: Same as the client extension — load dist/ as an unpacked extension. Requires its own build with WATCHER_SECRET and SERVER_BASE baked in.
userscript/ — iOS UserscriptLocation spoofing packaged as a userscript for the Userscripts iOS app. Preferred path for iOS install, installs once and runs automatically on sniffies.com.
User Install: Install the Userscripts iOS app. Then TODO: set up release pipeline for userscript and put that info here
Dev Install: Build with npm run build:prod, then copy dist/sniffies-tools.user.js to iCloud Drive → Userscripts. See userscript/README.md for details.
bookmarklet/ — iOS Safari BookmarkletFailed attempt to do location spoofing for iOS Safari without any app required. While this path could've been viable, it had unique engineering challenges from the chrome extension (which is what I first built this functionality for). Rather than rewrite the location spoofing from scratch, and in an attempt to give the user an easier install/startup experience, I pivoted to the userscript approach. Keeping this version around just in case I want to come back to this for some reason
Install: Create a Safari bookmark and replace its URL with the bookmarklet code from bookmarklet/README.md.
server/ — Vercel APIServerless backend deployed on Vercel. Handles phone registration, favorites storage (Neon Postgres), and SMS delivery via Textbelt. Uses a two-secret model: CLIENT_SECRET for the public client extension, WATCHER_SECRET for the private watcher.
See server/README.md for environment variables, database setup, and endpoint docs.
core/ — Shared LibraryShared TypeScript source for the geo-override UI and logic. Used by client/, bookmarklet/, and userscript/ via a build-time path alias.
scripts/ — Root Build ScriptsRoot-level helpers. build.mjs delegates to a specific package's build script (yarn build client, yarn build bookmarklet). test-all.mjs runs tests across all packages.
Figure out how to containerize the watcher, ideally in one script to:
Create a cache of images for favorited accouts?
Android Chrome mobile extension? Does Android Chrome mobile just consume chrome extensions?
Privacy policy
Map based location selection
review what kind of data is saved on the client, watcher
make the tables in the schema, think I need to remake
do manual test of favoriting path
do manual test of watcher running, getting favorites, triggering a notification
update the blog project to serve the userscript from the stable GitHub Releases URL: https://github.com/deckmasterbeam/SniffiesProjects/releases/latest/download/sniffies-tools.user.js
add a GitHub Actions workflow that publishes a dev (non-minified) build to a dev release tag on push to the dev branch, then add a dev install page to the blog pointing at https://github.com/deckmasterbeam/SniffiesProjects/releases/download/dev/sniffies-tools.user.js