nautalotastitches-retreat

Retreat Site

A Django scaffold for a private online cross-stitch retreat community.

What’s built:

Later sections to flesh out: calendar, events, tasks, points, finish wall.

Quick start

From inside this folder:

python -m venv venv
source venv/bin/activate          # Windows: venv\Scripts\activate
pip install -r requirements.txt

cp .env.example .env
# open .env and replace DJANGO_SECRET_KEY with a long random string.
# generate one with:  python -c "import secrets; print(secrets.token_urlsafe(50))"

python manage.py makemigrations accounts
python manage.py makemigrations posts
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

Then visit:

Assigning roles

Via Django admin (recommended): log in at /admin/, go to Users, pick a user, and add them to groups under “Groups.”

Via the command line:

python manage.py assign_role alice Host
python manage.py assign_role bob Helper
python manage.py assign_role bob Helper --remove

New signups automatically get the Member role. The superuser bypasses all role checks.

Role semantics

Roles are nested — higher roles inherit lower-role powers.

Role Can do
Admin Everything. Manage users, edit any post, site settings.
Host Create/edit/pin their own posts, delete their own posts.
Helper (Reserved for approving points later.) Read-only for now.
Member Read posts, leave comments, react to posts.

Python version note

This project is configured for Django 4.2, which runs on Python 3.8+. If you upgrade to Python 3.10+ later, you can bump Django to 5.x by editing requirements.txt and reinstalling.

Next steps to build out

  1. Events & calendarevents app with Event model and calendar view
  2. Tasks — per-event tasks that members post completions to (points live here)
  3. Points — a view that aggregates task points per member (Helpers approve)
  4. Finish wall — gallery app with image uploads

For production image storage, swap MEDIA_ROOT for Cloudinary or S3 — storing user uploads on the web server doesn’t scale well.

Deployment notes

Before going live: