- Python 54.8%
- HTML 37.3%
- CSS 7.9%
| .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.yamlfile 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: "[email protected]" password: "your-password" from: "[email protected]" site: name: "Your Organization" description: "Your organization's description" contact_email: "[email protected]" -
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.