Introduced new membership, content management, and payment processing functionalities. Implemented customizable pages with sectional content, including text, hero, two-column layout, and feature lists. Enhanced admin interface with new models like Section, Page, Form, and Membership. Integrated payment gateways such as Stripe, PayPal, and GnuCash alongside cryptocurrency support. Added dynamic form handling for membership applications, supporting conditional fields and multi-page forms. Improved UI with redesigned templates and responsive design elements. Replaced static markdown and HTML content with database-driven content management. Expanded Django admin customization for better manageability and extendability. Eliminated middleware-dependent configuration for a cleaner architecture and direct context usage.
4.7 KiB
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.