WallpaperMachine
The wallpapers you love. A new home on your Mac.
Start free with the DrawWise capability that matters now. Score animals, prepare hunts, make application decisions, and see the reasoning before deciding to join.
LifestyleTypeScript · CSSGitHub @sray91OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Marketing landing page for DrawWise (hunting draw strategy) with a Sanity-powered blog and a beehiiv newsletter signup, built on Next.js 16 (App Router, Cache Components) and Tailwind CSS 4.
The landing page design is ported from the original static design file. Its CSS lives in app/globals.css (class-based, e.g. .hero, .product-stage) and the product screenshots and logo are in public/landing/.Read the full README ↗Marketing landing page for DrawWise (hunting draw strategy) with a Sanity-powered blog and a beehiiv newsletter signup, built on Next.js 16 (App Router, Cache Components) and Tailwind CSS 4.
The landing page design is ported from the original static design file. Its CSS lives in app/globals.css (class-based, e.g. .hero, .product-stage) and the product screenshots and logo are in public/landing/.
cacheComponents — pages are prerendered into a static shell; blog content is cached with tags and revalidated hourly or on demand./studio.vercel link # once, links this folder to the Vercel project
vercel integration add sanity/project # accept the marketplace terms in the browser if prompted
vercel env pull # writes NEXT_PUBLIC_SANITY_* into .env.local
If you created your Sanity account through the integration, add a Google or GitHub login in Sanity account settings so you can sign in to the Studio.
Then deploy the schema so the Studio can use it and open /studio to publish your first post:
npx sanity schema deploy # optional; the embedded Studio works without it
npm run dev # open http://localhost:3000/studio
In beehiiv go to Settings → Integrations → API, create an API key, and copy your publication ID (pub_…). Add both locally and on Vercel:
vercel env add BEEHIIV_API_KEY
vercel env add BEEHIIV_PUBLICATION_ID
vercel env pull
Set SANITY_REVALIDATE_SECRET to any random string (locally and on Vercel), then create a webhook in
sanity.io/manage → your project → API → Webhooks:
| Field | Value |
|---|---|
| URL | https://<your-domain>/api/revalidate |
| Trigger | Create, Update, Delete |
| Filter | _type in ["post", "author", "category"] |
| Secret | the same value as SANITY_REVALIDATE_SECRET |
Without the webhook, content still refreshes on its own within an hour.
See .env.example for the full list of variables.
app/
(site)/ landing page, /blog, /blog/[slug] (share header + footer)
studio/[[...tool]] embedded Sanity Studio
api/revalidate Sanity webhook → revalidateTag
actions/subscribe Server Action for the newsletter form
components/ header, footer, product stage (rotating screenshots), newsletter form, post card, …
lib/site.ts site name, tagline, nav, app links, newsletter copy — edit this first
lib/beehiiv.ts beehiiv API client (server only)
sanity/
schemaTypes/ post, author, category, blockContent
lib/ client, GROQ queries, cached fetch helpers, image URL builder
sanity.config.ts Studio config
npm run dev # start dev server
npm run build # production build
npm run lint # eslint