MindPad is a modern, full-featured Django web application for managing personal notes, files, and tags, with beautiful analytics and robust user authentication. Built for productivity, privacy, and insight, MindPad is perfect for anyone who wants a secure, extensible, and data-driven note-taking experience.
-
Rich Note Editing:
Create, edit, and organize notes with Markdown or rich text support. -
Tagging System:
Add multiple tags to notes for easy categorization and search. -
File Attachments:
Attach files to your notes and manage them securely. -
Advanced Analytics:
Analytics dashboard with interactive charts (Chart.js) showing:- Notes per month, per tag, per day
- Top tags
- Notes with/without attachments
- Note status (active/archived)
- Average note length
- Tag diversity and more
-
User Authentication:
Secure registration, login, password reset, and social login via Django Allauth. -
Dark Mode:
Seamless light/dark theme toggle with Tailwind CSS and Alpine.js. -
Responsive Design:
Mobile-friendly UI with Tailwind CSS. -
Security:
Notes are private to each user. Attachments are stored securely.
- Backend: Django 4+, Django Allauth, django-taggit
- Frontend: Tailwind CSS, Alpine.js, Chart.js
- Database: SQLite (default, easy to swap for PostgreSQL/MySQL)
- Other: Python 3.10+, HTML5, JavaScript
git clone https://github.com/PeterOlayemi/django_notes_app.git
cd mindpad
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
- Allauth is pre-configured for email/password and social login.
- Run migrations:
python manage.py migrate
- Create a superuser:
python manage.py createsuperuser
python manage.py collectstatic
python manage.py runserver
- Visit http://127.0.0.1:8000/ to use MindPad.
- Visit
/admin/
for the Django admin.
-
Environment Variables:
Create a.env
file in the project root with the following variables:SECRET_KEY = your-django-secret-key email = your-email@example.com appPassword = your-app-specific-password
SECRET_KEY
: Your Django secret key (generate withpython -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
)email
: The email address used for sending emails (e.g., for password reset, newsletter)appsPassword
: The app-specific password for your email provider (e.g., Gmail App Password)
-
Media & Attachments:
Uploaded files are stored in/media/attachments/
.
Make sure your server serves media files in production. -
Social Auth:
Configure social providers. For Google: Go to Google Cloud Console → OAuth credentials Under Authorized redirect URIs, add: http://127.0.0.1:8000/accounts/google/login/callback/ (or your production domain later) Copy the Client ID and Client Secret.For GitHub: GitHub Developer Settings → OAuth Apps Under Authorized redirect URIs, add: http://127.0.0.1:8000/accounts/github/login/callback/ (or your production domain later) Copy the Client ID and Client Secret.
Add Site & Social App in Django Admin: Under Sites, ensure you have: Domain name = 127.0.0.1:8000 Display name = localhost Under Social Applications, add a new one: Provider = Google Name = Google Login Client ID = (paste from Google Console) Secret Key = (paste from Google Console) Sites = select your site Do the same for GitHub
MindPad includes a dedicated analytics page (/notes/analytics/
) with interactive charts and stats about your notes, tags, and activity.
Great for personal insight and portfolio demonstration!
- Themes: Easily customize Tailwind CSS for your own color scheme.
- Extend Models: Add more fields to notes, tags, or users as needed.
- APIs: Build REST APIs with Django REST Framework for mobile or integrations.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under MIT License.
MindPad – Your notes, your insights, your way.