# Sotto — Anonymous secret santa

Play secret games with your friends.

By Anuj Ojha. Status: Live. Page: https://anujojha.com/work/sotto/

## What it is

Sotto runs a secret santa with your friends: no accounts, no app to install, and nobody, not even the organiser, can see who drew whom.

## The problem

A secret santa only works if the draw stays secret, from everyone, including the person running it.

## How it works

The draw runs on the server only, using Sattolo's algorithm with crypto.randomInt, so every result is valid and nobody draws themselves. Each reveal is gated by a PIN that is stored bcrypt-hashed. There are no accounts at all, so there is no identity to leak, and the organiser cannot view the assignments because no query at the database layer exposes them. A strict content security policy and rate limiting sit in front of it.

## The moment

The reveal is the one deliberate piece of theatre: a single burn with ember particles, and the name is gone ten seconds later.

## Where it is now

Live at sottogames.com, launched on Product Hunt in May 2026. Built with Next.js 16, strict TypeScript and Supabase, Postgres with row-level security.

## Numbers

- 10s: after which a revealed name is gone
- 0: accounts required — zero-account identity
- Sattolo: valid derangements via crypto.randomInt, server-side only

Stack: Next.js 16 · TypeScript strict · Supabase (Postgres + RLS) · Tailwind · Framer Motion · strict CSP · rate limiting

## Questions

**What is Sotto?**
A secret santa you run with friends: no accounts and no app to install.

**Can the organiser see who drew whom?**
No. No query at the database layer exposes the assignments, so even the person running it cannot look.

**Is the draw fair?**
The draw runs on the server only, using Sattolo's algorithm with crypto.randomInt, so every result is valid and nobody draws themselves.

**Where can I use it?**
It is live at sottogames.com.

Links: [Site](https://sottogames.com)
