Home of SpokaneTech.org, an online hub for Spokane's tech events and groups. It's not just a website; it's a community-driven, open-source initiative aimed at fostering learning and collaboration among aspiring and seasoned tech enthusiasts.
See the live site here: https://www.spokanetech.org
Follow development here:
https://spokanetech.github.io/blog/building-spokane-tech/intro/
Public pages include per-page search/social metadata, a sitemap, and guides
backed by current groups and events. Development and staging default to noindex.
Production must explicitly set SEO_INDEXING_ENABLED=True and configure
PUBLIC_SITE_URL when deploying these changes. Event structured data requires
individual eligibility review; notification promotion links are a separate opt-in.
See the rollout guide, organic outreach playbook, and search account setup.
- git installed on system
- Python 3.10+ installed on system (required for Django 5.2)
Forking is the recommended contribution path. Use GitHub's
Fork button, then clone your
fork rather than the upstream repository. Replace YOUR_USERNAME below:
git clone https://github.com/YOUR_USERNAME/SpokaneTechWeb.git
cd SpokaneTechWeb
git remote add upstream https://github.com/SpokaneTech/SpokaneTechWeb.git
git switch -c describe-your-changePush your branch to your fork and open a pull request targeting
SpokaneTech/SpokaneTechWeb:main. See the
contribution guide for updating your fork, validation,
reporting issues, and review expectations.
To enable optional local pre-commit checks:
git config core.hooksPath .github/hooksThe hook checks formatting without editing files. Run ruff format src yourself
to apply formatting before committing.
-
from the directory containing your clone, cd into the repo directory (skip if already there)
cd SpokaneTechWeb -
create a python virtual environment
python -m venv venv -
activate the python virtual environment
for linux, mac, or wsl:
source venv/bin/activatefor powershell:
.\venv\Scripts\Activate.ps1
-
install the python dependencies
python -m pip install -e '.[dev]'The editable install also adds
spokanetech-manageto the active virtual environment. It accepts the same arguments asmanage.pyand can be run from the repository root or another directory:spokanetech-manage check spokanetech-manage migrate spokanetech-manage runserver
After adding or changing the shortcut, rerun the install command above.
-
(optional) create a custom .env file and update contents as applicable
cp src/envs/.env.template src/envs/.env.local -
cd to the django_project directory
cd src/django_project -
create a local database by running django migrations
./manage.py migrate -
create a local admin user
./manage.py add_superuser --group admin -
(optional) add platforms and groups to your local database
./manage.py runscript initialize_data -
(optional) ingest future events to your local database
./manage.py runscript ingest_eventsNote: this requires playwright and its dependencies to be installed on your system.
playwright install --with-deps -
start the local demo server
./manage.py runserver
Open http://127.0.0.1:8000 and sign in with the credentials you configured for your local administrator account.
** you can stop the local demo server anytime via ctrl + c
Third-party browser packages load from pinned CDN URLs with integrity checks in
src/django_project/core/templates/base.htm. The application does not require
static files from handyhelpers' node_modules directory. Site styles, scripts,
and images remain in Django static assets.
Bootstrap is loaded once from CDN. The committed spokanetech.css contains the
site's theme overrides only. After changing its Sass source, regenerate it from
the repository root:
sass --style expanded src/django_project/core/static/spokanetech/css/spokanetech.scss src/django_project/core/static/spokanetech/css/spokanetech.cssSass is an optional editing tool; deployments serve the committed CSS directly. See the static assets review for the package inventory, framework recommendation, and validation details.
Meetup and Eventbrite ingestion saves event images into a shared persistent media
volume. runscript ingest_events downloads images synchronously; scheduled
ingestion uses background Celery image tasks. See the design decision and VPS rollout guide
for migrations, reverse-proxy configuration, local development, and backups.
Python 3.10+ is declared by the project. Current CI runs on Python 3.13, while the Docker image uses Python 3.12; there is currently no full Python-version test matrix.