Skip to main content

nkscoder-django-feedback: open-source Django user feedback & AI analytics dashboard by Nitesh Kumar Singh (nkscoder) — forms, ratings, sentiment, and staff insights for any project.

Project description

nkscoder-django-feedback

Open-source Django feedback plugin by Nitesh Kumar Singh (nkscoder)

Collect user feedback (authenticated or anonymous), enforce cooldown rules, and review submissions on an AI analytics dashboard with charts, sentiment keywords, and auto-generated insights.

Author / Maintainer Nitesh Kumar Singh (nkscoder)
Website nkscoder.in
GitHub github.com/nkscoder/feedback
PyPI nkscoder-django-feedback
Django app feedback
Version 1.0.1
License MIT

Screenshots

Feedback form

Embed this form in any Django template (authenticated or guest users, optional rating & category):

Feedback form — nkscoder-django-feedback

AI analytics dashboard

Staff dashboard with charts, sentiment analysis, and auto-generated insights:

AI Feedback Dashboard — Nitesh Kumar Singh (nkscoder)

Replace screenshots: add your own PNGs under docs/screenshots/ after customizing templates in your project.


Table of contents


Features

  • Generic — works in any Django 4.2+ project; no host-app coupling
  • Authenticated or anonymous submissions (user, name, email, session_key)
  • Star ratings (1–5), category, source (page/route), link_type / link_id
  • Cooldown per user or anonymous session (FEEDBACK_COOLDOWN_DAYS)
  • Django admin — search, filters, list display
  • AI dashboard (staff) — trends, ratings, sentiment, insight bullets, Chart.js
  • JSON API/feedback/dashboard/api/ for external tools
  • Optional OpenAI summaries ([ai] extra)
  • SEO-ready pages — meta tags, Open Graph, JSON-LD (Schema.org), public license page

Requirements

Package Version
Python 3.10+
Django 4.2+

Install

From PyPI (recommended)

pip install nkscoder-django-feedback

Via nkscoder meta package

pip install "nkscoder[feedback]"
# or all @nkscoder Django packages:
pip install "nkscoder[all]"

From GitHub

git clone https://github.com/nkscoder/feedback.git
cd feedback
pip install -e .

Optional: OpenAI insight summaries

pip install "nkscoder-django-feedback[ai]"

Quick setup

1. INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    "feedback",
]

2. Context processor (SEO / branding on dashboard pages)

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "OPTIONS": {
            "context_processors": [
                # ...
                "feedback.context_processors.feedback_open_source",
            ],
        },
    },
]

3. Migrations

python manage.py migrate feedback

4. URLs

from django.urls import path, include

urlpatterns = [
    path("feedback/", include("feedback.urls")),
]

Configuration

All settings use the FEEDBACK_ prefix. Defaults are in feedback/conf.py.

Setting Default Description
FEEDBACK_COOLDOWN_DAYS 7 Days between submissions (0 = no limit)
FEEDBACK_REQUIRE_AUTH False Login required to submit
FEEDBACK_REQUIRE_EMAIL False Email required for guests
FEEDBACK_MESSAGE_MAX_LENGTH 5000 Max message length
FEEDBACK_SUBMIT_REDIRECT "/" Path or URL name after submit
FEEDBACK_BASE_TEMPLATE feedback/base.html Base template for dashboard
FEEDBACK_LOGIN_URL "login" Login URL for staff views
FEEDBACK_DASHBOARD_DAYS 30 Default analytics window
FEEDBACK_OPENAI_API_KEY "" Optional LLM summaries
FEEDBACK_AUTHOR_NAME Nitesh Kumar Singh Template / SEO author
FEEDBACK_AUTHOR_HANDLE nkscoder Brand handle
FEEDBACK_GITHUB_URL https://github.com/nkscoder/feedback Repo link
FEEDBACK_HOMEPAGE_URL https://nkscoder.in Author site
FEEDBACK_SEO_DESCRIPTION (see conf.py) Meta description
FEEDBACK_SEO_KEYWORDS (see conf.py) Meta keywords

Example:

FEEDBACK_COOLDOWN_DAYS = 7
FEEDBACK_SUBMIT_REDIRECT = "home"
FEEDBACK_SEO_DESCRIPTION = (
    "Customer feedback for MyApp — powered by nkscoder-django-feedback "
    "by Nitesh Kumar Singh (nkscoder)."
)

Submit feedback (HTML form)

Example feedback form

<form method="post" action="{% url 'feedback:submit_feedback' %}">
  {% csrf_token %}
  <textarea name="feedback" required placeholder="Your feedback…"></textarea>
  <input name="name" placeholder="Name">
  <input name="email" type="email" placeholder="Email">
  <select name="rating">
    <option value="">Rating</option>
    <option value="5">5 — Excellent</option>
    <option value="4">4</option>
  </select>
  <input name="category" placeholder="Bug / Feature / Praise">
  <button type="submit">Send feedback</button>
</form>

Python helpers:

from feedback.services import is_feedback_allowed, create_feedback
from feedback.views import get_feedback_context

# Template context
context = {**get_feedback_context(request)}

# Programmatic
create_feedback(request, "Great UX!", category="praise", rating=5)

AI dashboard

Staff-only analytics built by Nitesh Kumar Singh (nkscoder).

AI analytics dashboard

URL Name Access
/feedback/dashboard/ feedback:ai_dashboard Staff
/feedback/dashboard/api/?days=30 feedback:ai_dashboard_api Staff
/feedback/license/ feedback:license Public (SEO)

Default insights: rule-based (volume, ratings, sentiment keywords, categories).
With OpenAI: FEEDBACK_OPENAI_API_KEY + pip install "nkscoder-django-feedback[ai]".


SEO & branding templates

Included for discoverability and attribution:

  • feedback/_seo_head.html — description, keywords, author, Open Graph, Twitter Card, JSON-LD SoftwareApplication
  • feedback/_opensource_footer.html — links to GitHub, PyPI, License, nkscoder.in
  • feedback/license.html — public MIT license page

Override copy via FEEDBACK_SEO_* and FEEDBACK_AUTHOR_* settings.


Full documentation

See DOCUMENTATION.md for:

  • Data model reference
  • Services API
  • Analytics & AI insight logic
  • Admin customization
  • Publishing to PyPI

Troubleshooting

Issue Fix
Empty SEO meta on dashboard Add feedback.context_processors.feedback_open_source
TemplateSyntaxError on _seo_head.html Same — context processor required
Redirect after submit fails Set FEEDBACK_SUBMIT_REDIRECT to a valid path or URL name
Guests submit too often Lower FEEDBACK_COOLDOWN_DAYS or set FEEDBACK_REQUIRE_AUTH
No OpenAI insights Install [ai] extra and set FEEDBACK_OPENAI_API_KEY

About the author

Nitesh Kumar Singh (nkscoder) builds reusable Django packages at nkscoder.in — including ticket systems, activity monitors, and this feedback plugin.

For integration help, custom dashboards, or enterprise extensions, visit https://nkscoder.in.


License

Copyright © 2020–2026 Nitesh Kumar Singh (nkscoder).

Released under the MIT License. You may use, copy, modify, and distribute this software with attribution to Nitesh Kumar Singh (nkscoder).


Publish to PyPI

Maintainer: nkscoder. See PUBLISHING.md.

pip install build twine
python -m build
twine upload dist/*

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

nkscoder_django_feedback-1.0.1.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

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

nkscoder_django_feedback-1.0.1-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file nkscoder_django_feedback-1.0.1.tar.gz.

File metadata

  • Download URL: nkscoder_django_feedback-1.0.1.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for nkscoder_django_feedback-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4be65f4b03d7d8e6365f54dc64650a5de4e396f316af921f68319102a10fa5e6
MD5 34e9320bc5fa9ac1d05885c9c5c2821a
BLAKE2b-256 04a1b74a5a1155724f9dd3f72a19ff65612cadbf00656e0201abcffd32106e99

See more details on using hashes here.

File details

Details for the file nkscoder_django_feedback-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nkscoder_django_feedback-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ee759e37386821628984427c107bc495667c571486224fb2ea777c75854110e0
MD5 f18d391f3efaeff789087030340e61fb
BLAKE2b-256 7ae076c66b2f8c89d9f3e494b0562908575a6df784ad322323cd2f33feb2eb21

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