Skip to content

Bringing the holiday cheer by making Secret Santa draws a breeze to organise, whether gathered around the tree or connected online! πŸŽ„

Notifications You must be signed in to change notification settings

eddmann/secret-santa-draw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ… Secret Santa Draw

API | Client | iOS

This year's offering expands upon last year's PWA, transforming it into a full-fledged platform complete with an accompanying iOS/Android application (coming soon). It brings holiday cheer by making Secret Santa draws a breeze to organise, whether gathered around the tree or connected online! πŸŽ„

The service was built in a RAD manner, with a self-imposed time constraint of just a couple of evenings for development - driven by the goal of getting something shipped! πŸš€

Features

  • Local In-Person Draws: Conduct offline Secret Santa draws, retaining the functionality of the original PWA.
  • Online Remote Draws:
    • Register and create groups to manage annual Secret Santa draws.
    • Add participants with names and email addresses.
    • Apply allocation exclusions (e.g., couples, previous pairings).
  • Automated Email Notifications: Participants receive an email with their Secret Santa allocation.
  • Gift Ideas Management: Participants can provide and view gift ideas for their assigned allocation.
  • Account Registration:
    • Participants can optionally register with the service.
    • Allocations are linked to accounts based on email address, consolidating access to all associated draws.

Future Features

  • Prefill Draw Entries: Automatically populate draw participants from the previous year's draw.
  • Enhanced Gift Ideas: Support for various idea types (URLs, images, etc.).

πŸ› οΈ Technical Overview

This project builds on last year's PWA by incorporating a backend API, enabling remote draw capabilities and account-based access.

Backend API

  • RESTful HAL-based API, embracing HATEOAS principles.
  • Laravel 11, with Sanctum for cookie-based sessions
  • PostgreSQL
  • PHP 8.4
  • Lambda Bref for Serverless deployment
  • Email notifications sent using the Laravel Jobs queue

Client Application

  • React, with React Router
  • TypeScript
  • Vite
  • PWA features, such as offline support
  • Uses the Ketting HTTP library to manage access to the HAL-based API

iOS Application

  • Thin application which wraps PWA
  • Swift
  • Universal Link support
  • Based on the great ios-pwa-wrap project!

Infrastructure

  • AWS CDK for IaC concerns
  • Lambda Bref for Serverless API deployment
  • SQS for background/asynchronous Laravel jobs
  • S3 bucket for static Client deployment
  • Fronted by a CloudFront distribution that manages caching concerns

Other Years

Interested in seeing how I over-engineered the problem of allocating Secret Santa's in other years?

About

Bringing the holiday cheer by making Secret Santa draws a breeze to organise, whether gathered around the tree or connected online! πŸŽ„

Resources

Stars

Watchers

Forks