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.

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