Sakeenah is a production-ready, database-driven wedding invitation platform designed for modern couples who value both aesthetics and functionality. Built on a scalable client-server architecture with PostgreSQL multi-tenancy, it enables hosting unlimited wedding invitations from a single deployment with personalized guest experiences.
- Personalized invitation links with base64-encoded guest names
- Automated name pre-filling in hero sections and wish forms
- Attendance tracking (attending, not attending, undecided)
- Real-time wish submission with PostgreSQL persistence
- Unique wedding identifiers (UIDs) for URL routing
- Database-driven wedding data (no code changes needed)
- Isolated wishes and analytics per wedding
- Centralized deployment for unlimited events
- Smooth animations powered by Framer Motion
- Background music controls with autoplay support
- Countdown timer to wedding date
- Google Maps integration for venue directions
- Digital envelope with bank account details
| Layer | Technology | Purpose |
|---|---|---|
| Runtime | Bun 1.3.5 | Package management and server execution |
| Frontend | React 18 + Vite | Fast build tooling and reactive UI |
| Backend | Hono | Lightweight edge-compatible API framework |
| Database | PostgreSQL | Multi-tenant data storage |
| Styling | Tailwind CSS | Utility-first responsive design |
| Deployment | Cloudflare Workers | Global edge network distribution |
- Bun v1.3.5 or later
- PostgreSQL v14+
- Git
git clone https://github.com/mrofisr/sakeenah.git
cd sakeenah
bun install
cp .env.example .env
# Edit .env with your DATABASE_URL
bun run devFor detailed setup instructions, see Getting Started.
| Section | Description |
|---|---|
| Tutorials | |
| Getting Started | Set up your first wedding invitation |
| How-To Guides | |
| Personalized Links | Generate and distribute guest invitation links |
| Deployment | Deploy to Cloudflare Workers or other platforms |
| Testing | Write and run unit, integration, and E2E tests |
| Reference | |
| API Reference | REST API endpoints and schemas |
| Project Structure | Codebase organization and conventions |
| Explanation | |
| Architecture | System design and technology choices |
| Security | Privacy features and data protection |
# Development
bun run dev # Run client + server concurrently
bun run dev:client # Frontend only (Vite)
bun run dev:server # Backend only (Hono API)
# Production
bun run build # Build frontend to dist/
bun run deploy # Build + deploy to Cloudflare Workers
# Utilities
bun run generate-links # Generate personalized guest links
bun run lint # ESLint code validation- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Mobile Safari (iOS 14+)
- Chrome Mobile (Android 10+)
We welcome contributions! Please read our Contributing Guide for:
- Code of conduct
- Development setup
- Coding standards
- Pull request process
Licensed under the Apache License 2.0. See LICENSE for full terms.
Copyright (c) 2024-present mrofisr
- Built with Vite, React, and Hono
- Animations by Framer Motion
- Icons from Lucide
- Hosted on Cloudflare Workers
"And among His signs is that He created for you spouses from among yourselves so that you may find comfort in them." - Quran 30:21