Giflove

Django and PostgreSQL backend for a digital greeting card platform, with Celery and Redis task queues for scheduled deliveries and HMAC-verified payment webhooks.

Giflove
PythonDjangoPostgreSQLCeleryRedisGitHub ActionsPaddleReact

The Challenge

Giflove is a digital greeting card platform. Behind the playful cards, the backend had to be dependable:

  • Scheduled delivery: Paid cards must arrive on the day the sender chose
  • Payments: Several pricing tiers, with every payment event verified
  • Reliable releases: Ship changes often without breaking production
  • Fast iteration: Adding a card design shouldn't need a database change

The Approach

I architected the backend data infrastructure with Python, Django and PostgreSQL.

Background Processing

  • Implemented asynchronous background task queues with Celery and Redis to manage and enforce scheduled card deliveries and other background data processing

Secure Payment Pipeline

  • Integrated HMAC-verified payment webhooks (Paddle) across a 4-tier pricing model, so only authentic payment events change an order

Releases

  • Set up automated CI/CD pipelines with GitHub Actions for reliable releases across three isolated environments

Card Designs

  • A type-safe static registry holds the card designs, so a new design ships purely as code, with no database migration
  • The React front end has 13 gesture-driven cards, such as blowable candles and interactive envelopes

Technical Highlights

  • Django and PostgreSQL backend
  • Celery and Redis task queues for scheduled delivery
  • HMAC-verified payment webhooks across four pricing tiers
  • GitHub Actions CI/CD across three environments
  • React front end with 13 gesture-driven card designs