Dates to be confirmed
Secret Santa: Gifts, Games and a Family Tradition

Demo screens with fictional participants. English interface labels are translated for this portfolio; the current application interface is in Russian.
Overview
I built and continue to develop a family Secret Santa website. The organizer gathers participants, runs the draw and sends each family a private link. Participants select their names to discover whom they will give a gift to. Previous years remain available, making the next celebration easier to organize without assigning pairs manually.
The updated version includes two browser games: “New Year Sleigh Ride” and “Snowman Parade.” They extend the festive theme and give participants a reason to return, play together and compare results. The service works on computers and phones without installing an app.
Why I Built It
I wanted to make the annual gift exchange an easy family tradition: reduce manual checks for the organizer, keep the surprise for participants and add a shared holiday activity.
- The organizer manages families, participants and draws in one place.
- Participants follow a family link without creating individual accounts.
- Year-by-year history preserves the participants and outcomes of earlier celebrations.
- Games complement the core service, letting visitors spend time together after discovering their gift recipient.
Draw Rules and History
The assignment follows explicit rules. Nobody gives a gift to themselves. Gifts within the same family are excluded by default, and repeating a pair from the previous year is prohibited. The algorithm also minimizes older repeats and prefers the most distant ones when a repeat cannot be avoided.
If the chosen rules make a complete assignment impossible, the website explains the problem and preserves the active draw. It does not relax the rules automatically.
For the organizer, I implemented:
- participant editing and temporarily excluding a family from the next draw;
- starting a new year and rerunning the current year while preserving its earlier version;
- archives and comparisons of gift pairs across years;
- indicators of opened assignments and state backups.
A family link permits viewing assignments for that family. It provides family-level access rather than individual identity verification.
Two Games in One Project
New Year Sleigh Ride. Players steer a sleigh, collect gifts, switch lanes, jump over obstacles and use bonuses. The game has 50 levels, pause and boost controls, and keyboard or phone input.
Snowman Parade. Players guide a team along a winter trail, choose gates, collect snow and recruit more friends. The goal is to bring the team to the festive tree. I implemented 20 levels, obstacles and protective bonuses.
Both games share a player name while keeping separate leaderboards. Players can choose a starting level and use fullscreen mode. The games run independently of the gift draw and do not change gift assignments.
Interface and Atmosphere
I created light and dark themes, festive artwork, falling snow and an animated sleigh flight. Santa bumps the sun or moon, triggering a smooth change in the whole website’s appearance. Decorative motion can be paused and respects reduced-motion preferences and background tabs.
How It Works
The server runs on PHP, with HTML, CSS and JavaScript for the interface. I built both game engines in JavaScript with Canvas 2D rendering. Perspective creates a sense of depth and movement without a separate 3D engine.
Participants, draws, archives and game results are stored in private JSON files, with safeguards against concurrent writes. No SQL database, package installation or build step is required to run the project on standard PHP hosting.
I added access checks, form protection and request limits. Detailed logs are available to the organizer; public game tables expose only player names and results. Automated tests cover draw logic, access and game scenarios.
My Role and Project Value
I designed the user journeys and implemented gift assignments, archives, the organizer panel, visual presentation and both game engines. I continue to develop the service as one product, from its first screen to rules, saved results and maintenance.
This project shows how I combine a practical task, algorithms and an interactive interface. The core service organizes the gift exchange, while games and visual design create reasons to return.