Skip to content

A modern wishlist app for families and groups. Create wishlists, share with your group, and 'dib' items to prevent duplicate gifts.

License

Notifications You must be signed in to change notification settings

312-dev/dibs.gifts

Repository files navigation

Dibgifts Wishlist

A modern wishlist application designed to help families and groups coordinate gift-giving for events and holidays. Create wishlists, share them with your group, and "dib" items to prevent duplicate gifts.

Next.js TypeScript PostgreSQL License

Features

  • Groups & Events - Create family groups or friend circles, organize around holidays and special occasions
  • Wishlists - Build and share wishlists with your group members
  • Dibs System - Claim items on others' wishlists to avoid duplicate gifts (hidden from the wishlist owner)
  • Group Dibs - Split expensive gifts with multiple people
  • Comments & Reactions - Discuss gift ideas with other group members
  • Magic Link Auth - Passwordless authentication via email
  • Push Notifications - Get notified when items are added or claimed
  • Privacy Controls - Fine-grained visibility settings for items and comments

Tech Stack

Quick Start

Prerequisites

  • Node.js 20+
  • Docker (for local PostgreSQL)
  • pnpm or npm

Local Development

  1. Clone the repository

    git clone https://github.com/yourusername/wishlist.git
    cd wishlist
  2. Set up environment variables

    cd app
    cp .env.local.example .env

    Edit .env with your configuration (see Environment Variables)

  3. Start the database

    docker compose up -d postgres
  4. Install dependencies and run migrations

    npm install
    npm run migration:up
  5. Start the development server

    npm run dev

    Open http://localhost:3000 in your browser.

Environment Variables

Create a .env file in the app/ directory:

# Application
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000

# Database
DATABASE_URL=postgresql://dibgifts:password@localhost:5432/dibgifts_db

# Authentication (generate with: openssl rand -base64 32)
NEXTAUTH_SECRET=your-secret-here
ENCRYPTION_KEY=your-32-character-key

# Email (Resend)
RESEND_API_KEY=re_xxxxxxxxx
EMAIL_FROM="Dibgifts <noreply@yourdomain.com>"

# Optional: Unsplash API for banner images
NEXT_PUBLIC_UNSPLASH_ACCESS_KEY=your-unsplash-key

See .env.local.example for all available options.

Project Structure

wishlist/
├── app/                    # Next.js application
│   ├── app/               # App Router pages and API routes
│   ├── entities/          # MikroORM entity definitions
│   ├── lib/               # Core logic (tRPC routers, utilities)
│   ├── shared/            # Reusable components and hooks
│   └── migrations/        # Database migrations
├── docs/                  # Documentation
│   ├── setup/            # Production setup guides
│   └── security/         # Security configuration
└── .rulesync/            # AI assistant guidelines

Documentation

Scripts

From the app/ directory:

npm run dev              # Start development server
npm run build            # Build for production
npm run start            # Start production server
npm run lint             # Run ESLint
npm run format           # Format code with Prettier
npm run typecheck        # Run TypeScript checks
npm run migration:up     # Apply database migrations
npm run migration:create # Create new migration

Deployment

The application is designed to run on:

  • DigitalOcean App Platform (recommended)
  • Any platform supporting Node.js and PostgreSQL

See the Production Setup Guide for complete deployment instructions including:

  • Managed PostgreSQL setup
  • S3-compatible file storage
  • Cloudflare CDN configuration
  • CI/CD with GitHub Actions

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

Copyright 312.dev LLC. This project is licensed under the Polyform Noncommercial License 1.0.0 - you may view, fork, and modify this code for personal, educational, or noncommercial purposes, but commercial use is prohibited without explicit permission.

Acknowledgments

About

A modern wishlist app for families and groups. Create wishlists, share with your group, and 'dib' items to prevent duplicate gifts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages