Contributing
This guide will help you set up Django Redis Panel for local development and contribution.
Prerequisites
Before setting up the development environment, make sure you have:
- Python 3.9+: The minimum supported Python version
- Redis Server: A running Redis instance for testing
- Git: For version control
- Make: For using the included Makefile commands
System Dependencies
Getting the Source Code
1. Fork and Clone
-
Fork the repository on GitHub: django-control-room/dj-redis-panel
-
Clone your fork:
-
Add upstream remote:
2. Create Virtual Environment
If you want to work on your host machine using a virtualenv
# Create virtual environment
python -m venv venv
# Activate virtual environment
source venv/bin/activate # On Windows: venv\Scripts\activate
Development Installation
The project includes a Makefile with several useful commands for development.
Quick Setup
# This will bring up all docker containers for this project and set up a dev
# environment to run the example project in as well.
make test
# then log into the dev environment with:
make docker_shell
# from the example project directory
python manage.py runserver 0.0.0.0:8000
# You can proceed to look at this project's /admin url
# don't forget to setup a superuser as well
python manage.py createsuperuser
Manual Setup
If you prefer manual installation on the host machine
# Install dj-redis-panel into your environment
pip install -e .
# Install other development only packages
pip install -r requirements.txt
Project Structure
Understanding the project layout:
dj-redis-panel/
├── dj_redis_panel/ # Main package
│ ├── __init__.py
│ ├── admin.py # Django admin integration
│ ├── apps.py # Django app configuration
│ ├── models.py # Django models (empty)
│ ├── redis_utils.py # Redis utility functions
│ ├── urls.py # URL patterns
│ ├── views.py # Django views
│ └── templates/ # Django templates
│ └── admin/
│ └── dj_redis_panel/
│ ├── base.html
│ ├── index.html
│ ├── instance_overview.html
│ ├── key_detail.html
│ ├── key_search.html
│ └── styles.css
├── example_project/ # Example Django project
│ ├── manage.py
│ └── example_project/
│ ├── __init__.py
│ ├── settings.py # Django settings
│ ├── urls.py # URL configuration
│ ├── wsgi.py
│ └── management/ # Custom management commands
│ └── commands/
│ └── populate_redis.py
├── tests/ # Test suite
│ ├── __init__.py
│ ├── base.py # Test base classes
│ ├── conftest.py # Pytest configuration
│ ├── test_index.py # Index view tests
│ ├── test_instance_overview.py
│ ├── test_key_detail.py
│ └── test_key_search.py
├── docs/ # Documentation
├── images/ # Screenshots for README
├── pyproject.toml # Project configuration
├── requirements.txt # Development dependencies
├── Makefile # Development commands
└── README.md # Project documentation
Example Project Setup
The repository includes an example Django project for development and testing.
1. Set Up the Example Project
cd example_project
# Run migrations (creates Django tables, not Redis Panel tables)
python manage.py migrate
# Create a superuser
python manage.py createsuperuser
2. Populate Test Data
This command creates various types of Redis keys for testing: - String keys with different formats (JSON, plain text) - Hash keys with user profiles - List keys with notifications - Set keys with tags and permissions - Sorted set keys with leaderboards
3. Run the Development Server
Visit http://127.0.0.1:8000/admin/ to access the Django admin with Redis Panel.
SSL/TLS Cluster Testing (Optional)
By default, the Redis cluster runs without SSL. To test SSL/TLS connections (e.g., for AWS ElastiCache compatibility):
1. Generate SSL Certificates
This creates certificates in the ssl-certs/ directory. You only need to do this once.
2. Start Clusters
You can run the SSL cluster alone or alongside the non-SSL cluster:
# Option A: Start both clusters simultaneously (recommended for testing)
make docker_up_all
# Option B: Start SSL cluster only
make docker_up_ssl
# Option C: Start non-SSL cluster only (default)
make docker_up
3. Verify Connections
# Non-SSL cluster (ports 9000-9002)
docker compose exec redis-node-0 redis-cli -c -p 6379 cluster info
# SSL cluster non-SSL port (ports 9100-9102)
docker compose exec redis-node-0-ssl redis-cli -c -p 6379 cluster info
# SSL cluster SSL port (ports 9110-9112)
docker compose exec redis-node-0-ssl redis-cli -c -p 6380 \
--tls --insecure cluster info
4. Test in Django Admin
When running with SSL, you'll see these cluster instances:
- redis-cluster: Non-SSL connection (ports 9000-9002)
- redis-cluster-url: Non-SSL URL connection
- redis-cluster-ssl: SSL/TLS connection using rediss:// protocol (ports 9110-9112)
Stop All Clusters
Note: SSL testing is completely optional. All tests and development work without SSL certificates.
Documentation Development
Building Documentation
The documentation is built with MkDocs:
# Install documentation dependencies
pip install mkdocs mkdocs-material mkdocstrings[python]
# Serve documentation locally
mkdocs serve
# Build documentation
mkdocs build
Writing Documentation
Documentation is written in Markdown and located in the docs/ directory:
- Follow the existing structure and style
- Include code examples for new features
- Add screenshots for UI changes
- Update the navigation in
mkdocs.yml
Getting Help
Development Questions
- GitHub Discussions: Project discussions
- Issues: Report bugs or request features
- Email: Contact maintainers directly for sensitive issues
Resources
- Django Documentation: Django Project
- Redis Documentation: Redis Commands
- Python Packaging: PyPA Guides
- Testing: Pytest Documentation
Thank you for contributing to Django Redis Panel! 🎉