Skip to main content

A modern open-source Django admin dashboard.

Project description

Logo

OctopusDash

OctopusDash is a modern, open-source Django admin dashboard designed with a beautiful UI, powerful filtering, and granular permission control — crafted for developers and teams seeking more flexibility, clarity, and extensibility beyond the default Django admin.

OctopusDash is actively under development! Contributions, feedback, and feature requests are always welcome.


📸 Screenshots

Screenshot Screenshot Screenshot


✨ Key Features

Modern UI & UX

  • Clean, minimal design powered by TailwindCSS
  • Responsive, intuitive components
  • Smooth navigation optimized for productivity

Advanced Filtering & Search

  • Dynamic filters supporting related fields
  • Full-text search across customizable fields
  • Multi-field filtering for faster, precise data exploration

Granular Permission Control

  • Fine-grained access control by model, action, user, or group
  • Customizable admin classes enabling complex authorization logic

⚙️ Extensible & Pluggable

  • Easily add or override views, templates, and behaviors
  • Designed as a standalone Django app for maximum flexibility

🧩 Coming Soon

  • Plugin system to extend dashboards with new features
  • Widget support for custom charts, stats, and data cards

❓ Why OctopusDash?

While Django’s default admin is powerful, it often feels limited and outdated when your projects demand:

  • More granular control over user permissions and data visibility
  • Customizable dashboards tailored to real business needs
  • A clean, modern UI that enhances developer and user experience

OctopusDash addresses these with a fresh design, rich filtering options, and extensible architecture built from the ground up.


🏗️ How OctopusDash Was Built

Unlike many alternatives, OctopusDash is not just a skin or extension on top of Django’s default admin panel. Instead, it’s built from scratch to support ambitious features like plugins, custom widgets, auto API generation, and more.

This approach allows us to deeply understand Django’s internals while avoiding the constraints and limitations of the default admin — all without sacrificing Django’s powerful template system and generic views.


🛠 Installation

⚠ Requires Python 3.8+ and Django 4.x+

Install via pip:

pip install octopusdash

Add octopusdash to your INSTALLED_APPS:

INSTALLED_APPS = [
    'octopusdash',
    # ...
]

Include OctopusDash URLs in your project:

from django.urls import path, include

urlpatterns = [
    path('octopusdash/', include('octopusdash.urls')),
    # ...
]

Add required middlewares:

MIDDLEWARE = [
    'octopusdash.middlewares.app.ViewErrorHandlerMiddleware',
    'octopusdash.middlewares.authentication.CheckAuthenticationMiddleware',
    # ...
]

Configure template context processors:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'octopusdash.context.global_context',
            ],
        },
    },
]

Add OctopusDash settings:

OCTOPUSDASH = {
    'dashboard_path': '/dashboard',
}

🚀 Quick Start

Example of registering your app and model admin:

from octopusdash.contrib import admin as od_admin
from .models import Post

app = od_admin.AppAdmin('home')

class PostAdmin(od_admin.ModelAdmin):
    model = Post
    list_display = ['title', 'content', 'is_active', 'author']

app.register_to_admin_panel(model_admin=PostAdmin)

Visit /dashboard/ after running the server.


⚡ Custom Actions

Define custom actions on your model admin:

class PostAdmin(od_admin.ModelAdmin):
    model = Post
    actions = ['set_to_active']

    @od_admin.action(desc="Change post state to active.")
    def set_to_active(self, queryset):
        for post in queryset:
            post.is_active = True

✏️ Inline Edit Support

Edit objects directly in the table using Django formsets:

class PostAdmin(od_admin.ModelAdmin):
    model = Post
    list_display = ('title', 'content', 'author', 'is_active')
    list_editable = ('title', 'author', 'is_active')

Note: Fields in list_editable must be included in list_display.


⚙️ ModelAdmin Attributes

  • manager: DashboardModelManager instance
  • model: Django model
  • list_display: fields to display
  • list_editable: fields editable inline
  • search_fields: fields to search
  • filter_fields: fields to filter
  • readonly_fields: non-editable fields
  • form_fields: fields in create/update view ('__all__' by default)

Note: Do not override methods in ModelAdmin as it follows a specific internal pattern.


📖 Documentation & Support

Documentation is in progress! Explore the code, open issues, and join the discussion.


🤝 Contributing

OctopusDash is open-source under the MIT license.
Contributions, feature requests, and bug reports are welcome.
Please ⭐ star the repo if you find it useful!


Made by husseinnaeemsec


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

octopusdash-0.1.2.tar.gz (158.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

octopusdash-0.1.2-py3-none-any.whl (219.7 kB view details)

Uploaded Python 3

File details

Details for the file octopusdash-0.1.2.tar.gz.

File metadata

  • Download URL: octopusdash-0.1.2.tar.gz
  • Upload date:
  • Size: 158.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for octopusdash-0.1.2.tar.gz
Algorithm Hash digest
SHA256 eb410cf516fa45ea6759c878de0f407b77fbac8ed955766390c2fdfbc2cf8329
MD5 4ce3a4ec1ddca83181a2ef13a4377e03
BLAKE2b-256 b781ba543db63ebfc6b5bf097ed3bc0a1639858dff3be5817f54aee9962bee4b

See more details on using hashes here.

File details

Details for the file octopusdash-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: octopusdash-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 219.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for octopusdash-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cba36f5e5a750817a69d7e1b6665d06b61134c7052298ae3a3896d2047586d28
MD5 b0be0433ca659dea678d35021edd6bbb
BLAKE2b-256 7830bf2abaeff1eeb31386a7f217f117b8ac72638a30fc53493b1e13f9a8cd91

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page