No description
Find a file
2025-06-27 17:01:12 +02:00
.vscode feat: Current status 2025-03-20 08:05:29 +01:00
duckpond fix!: Do not include unverified email address in userinfo 2025-06-27 17:01:12 +02:00
.gitignore chore: Update .gitignore 2025-04-11 12:59:27 +02:00
.snapshotignore feat: Styling for OIDC-related pages 2025-06-27 16:35:33 +02:00
LICENSE feat: Current status 2025-03-20 08:05:29 +01:00
pyproject.toml feat: Revamp Duckpond architecture with dynamic content management, payment integrations, and customizable forms 2025-04-23 15:37:59 +02:00
README.md feat: Revamp Duckpond architecture with dynamic content management, payment integrations, and customizable forms 2025-04-23 15:37:59 +02:00
renovate.json Add renovate.json 2025-03-20 08:22:45 +00:00
requirements-dev.txt feat: Current status 2025-03-20 08:05:29 +01:00

Duckpond - Membership Management System

Duckpond is a simple yet powerful membership management system designed for small organizations. It provides a complete solution for managing memberships, payments, content access, and member engagement.

Features

  • Tiered Membership System: Create and manage multiple membership tiers with different pricing and benefits
  • Flexible Payment Options: Support for Stripe, PayPal, bank transfers, and cryptocurrency payments
  • Content Management: Share articles, videos, documents, and events with your members
  • Event Registration: Allow members to register for events and manage attendance
  • Certificate System: Issue certificates to members for completed courses or achievements
  • Downloads Area: Provide downloadable resources to your members
  • OpenID Connect Provider: Use Duckpond as an identity provider for your other services
  • GnuCash Integration: View payment history directly from your GnuCash accounting system
  • Email Notifications: Automated emails for membership approvals, renewals, and more

Installation

Prerequisites

  • Python 3.10 or higher
  • pip (Python package manager)
  • A web server (for production deployment)

Quick Start

  1. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  2. Install Duckpond:

    pip install duckpond
    
  3. Create a configuration file: Create a config.yaml file with the following structure:

    debug: true  # Set to false in production
    host: "example.com"  # Your domain name
    email:
      host: "smtp.example.com"
      port: 587
      tls: true
      username: "your-email@example.com"
      password: "your-password"
      from: "noreply@example.com"
    stripe:  # Optional, for Stripe payments
      secret_key: "sk_test_..."
      webhook_secret: "whsec_..."
    paypal:  # Optional, for PayPal payments
      client_id: "..."
      client_secret: "..."
      mode: "sandbox"  # Use "live" for production
    site:
      name: "Your Organization"
      description: "Your organization's description"
      contact_email: "contact@example.com"
    
  4. Initialize the database:

    duckpond migrate
    
  5. Create a superuser:

    duckpond createsuperuser
    
  6. Start the development server:

    duckpond runserver
    
  7. Access the admin interface: Open your browser and go to http://localhost:8000/admin/ to log in with your superuser account.

Configuration

Membership Tiers

  1. Log in to the admin interface
  2. Navigate to "Core > Membership Tiers"
  3. Create tiers with appropriate names, descriptions, and pricing options
  4. Add custom fields for each tier if needed

Payment Methods

  1. Navigate to "Payments > Payment Methods"
  2. Configure the payment methods you want to accept
  3. For each method, provide the necessary configuration details

Content Types

  1. Navigate to "Member Area > Content Types"
  2. Create content types for different kinds of content (articles, videos, events, etc.)
  3. Specify the template to use for each content type

Usage

Member Registration

Members can register by visiting your site and clicking the "Register" link. They will:

  1. Create an account
  2. Select a membership tier
  3. Choose a payment cycle
  4. Enter any required custom fields
  5. Make a payment using one of the available payment methods

Content Management

To add content for your members:

  1. Log in to the admin interface
  2. Navigate to "Member Area > Content"
  3. Create new content items, specifying:
    • Title and content
    • Content type
    • Categories
    • Visibility (public or restricted to specific tiers)

Event Management

To create events:

  1. Create a new content item with the "Event" content type
  2. Fill in event details (date, time, location, etc.)
  3. Specify whether registration is required
  4. Members can register for events through the member area

Development

Project Structure

duckpond/
├── core/                  # Core models and functionality
├── registration/          # User registration and onboarding
├── member_area/           # Member dashboard and content
├── payments/              # Payment processing
├── gnucash/               # GnuCash integration
└── duckpond/              # Project settings and configuration

Running Tests

pip install -r requirements-dev.txt
python -m pytest

Code Style

This project uses:

  • Black for code formatting
  • Ruff for linting
  • DjLint for template linting

To format and lint your code:

black .
ruff check --fix .
djlint --reformat .

License

This project is licensed under the MIT License - see the LICENSE file for details.