.vscode | ||
duckpond | ||
.gitignore | ||
.snapshotignore | ||
LICENSE | ||
pyproject.toml | ||
README.md | ||
renovate.json | ||
requirements-dev.txt |
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
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Duckpond:
pip install duckpond
-
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"
-
Initialize the database:
duckpond migrate
-
Create a superuser:
duckpond createsuperuser
-
Start the development server:
duckpond runserver
-
Access the admin interface: Open your browser and go to
http://localhost:8000/admin/
to log in with your superuser account.
Configuration
Membership Tiers
- Log in to the admin interface
- Navigate to "Core > Membership Tiers"
- Create tiers with appropriate names, descriptions, and pricing options
- Add custom fields for each tier if needed
Payment Methods
- Navigate to "Payments > Payment Methods"
- Configure the payment methods you want to accept
- For each method, provide the necessary configuration details
Content Types
- Navigate to "Member Area > Content Types"
- Create content types for different kinds of content (articles, videos, events, etc.)
- 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:
- Create an account
- Select a membership tier
- Choose a payment cycle
- Enter any required custom fields
- Make a payment using one of the available payment methods
Content Management
To add content for your members:
- Log in to the admin interface
- Navigate to "Member Area > Content"
- Create new content items, specifying:
- Title and content
- Content type
- Categories
- Visibility (public or restricted to specific tiers)
Event Management
To create events:
- Create a new content item with the "Event" content type
- Fill in event details (date, time, location, etc.)
- Specify whether registration is required
- 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.