Tkdo is a web application for organizing gift exchanges among family and friends. It manages occasions (birthdays, holidays, etc.), participants, gift idea lists, and random draw assignments to determine who gives gifts to whom.
- What is Tkdo?
- Key Features
- Technology Stack
- Getting Started
- Documentation
- Project Information
- License
Tkdo simplifies gift exchanges by:
- Managing occasions - Create events (Christmas, birthdays, etc.) with dates and participants
- Organizing participants - Add family members or friends to each occasion
- Collecting gift ideas - Each participant can suggest gift ideas for others
- Performing draws - Automatically and randomly assign who gives to whom, with exclusion rules
- Sending notifications - Email participants about draws, new ideas, and updates
The application ensures fairness with exclusion rules (e.g., prevent spouses from drawing each other) and maintains gift idea privacy (you can't see ideas others suggested for you until after the occasion).
- Personal profile with name, email, and customizable notification preferences
- View upcoming and past occasions
- Add, edit, and delete gift ideas for other participants
- Receive draw assignments (who you should give a gift to)
- Email notifications for draws, new ideas, and updates
- User account management (create, view, modify, reset passwords)
- Occasion management (create, modify, add participants)
- Exclusion management (define who cannot draw whom)
- Draw generation (automatic random assignment with exclusion rules)
- Command-line API access for all administrative operations
Frontend:
- Angular (TypeScript)
- Bootstrap
- RxJS
Backend:
- PHP 8.4
- Slim Framework
- Doctrine ORM
- MySQL
Development:
- Docker & Docker Compose
- Cypress (E2E testing)
- Karma & Jasmine (Unit testing)
New to Tkdo? Start with the User Guide to learn how to:
- Create and manage your profile
- Participate in occasions
- Add gift ideas
- View your draw assignments
- Configure email notifications
Deploying or managing Tkdo? See the Apache Deployment Guide for:
- Complete installation instructions
- Configuration options
- User management via API
- Occasion and draw management
Want to contribute? Follow these steps:
- Set up development environment - See Development Setup Guide
- Review contribution guidelines - Read Contributing Guidelines
- Understand the architecture - Check Architecture Documentation
- Start coding - See frontend and backend development guides
All documentation is available in the Documentation Index, organized by category:
- Getting Started - Overview, user guide, development setup
- User Documentation - For end users and administrators
- Developer Documentation - For contributors
- Deployment Documentation - For system administrators
| Role | Essential Documentation |
|---|---|
| User | User Guide • Email Notifications |
| Administrator | Admin Guide • API Reference • Deployment Guide |
| Developer | Dev Setup • Contributing • Architecture • Frontend Dev • Backend Dev |
| System Admin | Apache Deployment • Environment Variables • Troubleshooting |
- Database Documentation - Schema, entities, migrations
- Testing Guide - Frontend, backend, and E2E testing
- Troubleshooting Guide - Common issues and solutions
Version: 1.4.4 (December 2025)
See CHANGELOG.md for release history and changes.
Tkdo is actively maintained. See the backlog for planned features and improvements.
Contributions are welcome! Please read the Contributing Guidelines before submitting pull requests.
Ways to contribute:
- Report bugs and request features via GitHub issues
- Submit pull requests for bug fixes or new features
- Improve documentation
- Share feedback and suggestions
- Fork the repository
- Create a feature branch
- Make your changes following the coding standards
- Write tests for your changes
- Submit a pull request
For detailed instructions, see Contributing Guidelines.
- Documentation: Complete documentation index
- Bug Reports: GitHub Issues
- Questions: Check Troubleshooting Guide first
This project is open source. See the repository for license details.
Ready to get started? Visit the Documentation Index to find the guides you need.