Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages