A general-purpose internal member system developed with Django. It provides a compact team portal with member profiles, OAuth login, personal Bio pages, quick links, document entries, and admin-managed site settings.
Repository: GitHub
- Member directory with manually configured profiles or OAuth-bound accounts.
- OAuth login flow with lookup-code based user discovery.
- Personal Bio pages with Markdown editing, syntax highlighting, math rendering, and rich Markdown extensions.
- Quick links directory with sorting, enabled/disabled state, pinned entries, descriptions, and new-tab behavior.
- Document directory with title, cover image, description, pinned state, sorting, and optional per-document credentials.
- Admin dashboard powered by
django-unfold. - Site settings for brand name, navigation logo, navigation target, support email, footer text, and dashboard copy.
- Light/dark theme support in the frontend.
- Python 3.12+
- Django 6.0+
- TailwindCSS
- uv
- Authlib
- django-unfold
- python-markdown, pymdown-extensions, Martor
Install dependencies:
uv syncCreate local environment variables:
cp .env.example .envUpdate .env with a Django secret key, allowed hosts, admin credentials, and OAuth settings.
Apply migrations:
uv run python manage.py migrateRun checks:
uv run python manage.py checkStart the development server:
uv run python manage.py runserverOpen the site at:
http://127.0.0.1:8000/
The project reads configuration from environment variables. See .env.example for the full local template.
Common variables:
DJANGO_SECRET_KEYDJANGO_ALLOWED_HOSTSDJANGO_SUPERUSER_USERNAMEDJANGO_SUPERUSER_EMAILDJANGO_SUPERUSER_PASSWORDOAUTH_CLIENT_IDOAUTH_CLIENT_SECRETOAUTH_SERVER_METADATA_URLOAUTH_SCOPEOAUTH_TOKEN_ENDPOINT_AUTH_METHOD
Do not commit secrets or real credentials.
.
├── apps/
│ └── core/ # Main application: views, models, admin, templates, tests
├── media/ # Local uploaded files, ignored except placeholder
├── srmember/ # Django project package and settings
├── static/ # Project-level static assets
├── templates/ # Shared templates and admin overrides
├── manage.py
├── pyproject.toml
└── uv.lock
uv run python manage.py makemigrations
uv run python manage.py migrate
uv run python manage.py test
uv run python manage.py check
uv run python manage.py createsuperuserAfter creating an admin user, visit:
http://127.0.0.1:8000/admin/
The admin area can manage:
- Site settings
- Member profiles
- OAuth lookup codes
- Bio profiles
- Quick links
- Document entries and document credentials
This project is released under the license included in LICENSE.