Walls
Project type: Open source
A self-hosted wallpaper community in one Next.js 16 app: drag-and-drop uploads or URL imports, a masonry gallery that scales, passwordless magic-link auth, NSFW content controls, and an invite-only mode for closed communities.
The Challenge
Existing wallpaper sites are ad-laden and offer no community controls. A closed group wants its own gallery without standing up six separate services. Users expect modern UX — drag-and-drop, dark mode, magic-link login — without managing passwords or dealing with a heavyweight admin setup.
Our Approach
- Next.js 16 App Router with React Server Components and Server Actions for every mutation — no separate API layer needed
- Drizzle ORM + Postgres + better-auth for passwordless magic-link login — no passwords to manage or reset
- Sharp pipeline resizes and optimises every upload before it reaches the gallery
- Masonry layout for arbitrary-aspect images, with NSFW filtering (None, Mild, All) gated per-user
- Invite-only mode with access-request flow and an admin dashboard for managing users, invites, and wallpapers
- shadcn/ui + Radix on Tailwind v4 for the front-end; dark and light theme out of the box
What It Achieved
- One Next.js app replaces a stack of off-the-shelf services
- Magic-link auth removes the password reset support burden entirely
- Admins get bulk controls without leaving the site
- Closed communities can run their own gallery without trusting a third party
Tech Stack
Next.js 16React 19TypeScriptDrizzle ORMPostgreSQLbetter-authSharpshadcn/uiRadix UITailwind CSS v4SMTP
Need a community-driven web app?
If you've got a niche community that deserves its own home, we'll build it.
Book a discovery call