Project
SSSB Market
A second-hand furniture board for students in Stockholm. Post in a minute, no account, and the buyer messages you on WhatsApp.
The problemFurniture in the bin room
Every August thousands of students move into SSSB housing in Stockholm. Every June many of them move out, and a lot of perfectly good furniture ends up in the bin room.
The people who need a desk and the people throwing one out often live in the same building. Existing marketplaces want an account, a profile and a message thread before anything happens. That is too much friction for a 200-kronor lamp that has to be gone by Friday.
The productAs little as possible between seller and buyer
Selling
- No sign-up: photos, a title, a price and a WhatsApp number
- A private link to edit the listing, mark it sold or delete it
- Listings disappear by themselves after 60 days
- A “give away for free” switch and a separate free board
Buying
- Search, category chips, price range and sorting
- Filters live in the URL, so a search can be shared
- One tap opens WhatsApp with a message already written
- English and Swedish throughout
Under the hoodSmall app, careful details
- Framework
- Next.js 16 with the App Router and React 19, in TypeScript, styled with Tailwind CSS 4.
- Data
- Prisma 7 on Supabase Postgres. Board queries hit one composite index on status, area, category and date.
- No accounts
- Each listing gets a secret manage token (24 random bytes, base64url) which becomes the seller’s private link.
- Photos
- Resized to 1280 px JPEG in the browser before upload, stored in Supabase Storage and served through a small redirect route to the CDN.
- Validation
zodschemas for every listing; phone numbers checked per country withlibphonenumber-jsand stored in E.164.- Spam
- At most five posts per IP per hour, tracked in its own table, plus a honeypot field that quietly gives bots a fake success.
- Moderation
- A password-protected admin page with an HS256-signed, http-only session cookie issued with
jose. - Translations
- English and Swedish dictionaries typed against each other, so a missing string fails the build instead of the page.




Try SSSB Market in your browser, with sample listings
SSSB MarketFilter, switch to Swedish, post an item and manage itNext project
Futsalaki
