This page covers a complete Signia installation from scratch, including system-level prerequisites, Python environment setup, environment variable configuration, database options, and static file collection. If you just want the fastest path to a running dev server, see the Quickstart. Come back here when you need to understand the full picture — for example, when setting up a production environment or troubleshooting a dependency issue.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/jtapieromalambo-ctrl/Signia/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
The table below lists everything that must be installed on your system before you begin. All Python packages are handled byrequirements.txt; only the tools in this table need to be installed manually.
| Tool | Minimum version | Notes |
|---|---|---|
| Python | 3.11 | Exact minor version matters — MediaPipe and faster-whisper wheels target 3.11 |
| pip | 23+ | Bundled with Python 3.11 |
| Git | Any | Required to clone the repository |
| ffmpeg | Any | Required by faster-whisper for audio decoding |
Windows users: You do not need to install ffmpeg globally. The repository includes bundled ffmpeg binaries in the
/ffmpeg/ directory. The traduccion module prepends that directory to PATH at runtime, so faster-whisper can locate ffmpeg automatically. Do not move or delete the /ffmpeg/ folder.libgl1 and libglib2.0-0 are required by OpenCV and MediaPipe. Railway’s nixpacks.toml installs these automatically during the production build.
Virtual environment
Isolate Signia’s dependencies from your system Python by creating a virtual environment. The project conventionally names this environmentENT.
- Windows (PowerShell)
- Linux / macOS
(ENT) at the start of each line.Install Python dependencies
With the virtual environment active, install all packages from the lock file:requirements.txt includes their transitive dependencies.
| Package | Version | Purpose |
|---|---|---|
Django | 5.2.12 | Core web framework |
django-allauth | 65.15.0 | OAuth authentication (Google, Facebook) |
faster-whisper | 1.2.1 | Speech-to-text transcription of audio input |
mediapipe | 0.10.30 | Hand landmark extraction for webcam recognition |
scikit-learn | 1.8.0 | RandomForest classifier for sign recognition |
groq | 1.2.0 | API client for the LSC grammar LLM layer |
psycopg2-binary | 2.9.11 | PostgreSQL database adapter |
gunicorn | 25.3.0 | WSGI server for production |
whitenoise | 6.12.0 | Static file serving in production |
dj-database-url | 3.1.2 | Parses DATABASE_URL connection strings |
python-decouple | 3.8 | Reads environment variables from .env |
Environment variables
Create a.env file in the project root — the same directory as manage.py:
Development (SQLite)
For a local development setup, only two variables are strictly required to start the server:SECRET_KEY:
Full variable reference
Database setup
Signia supports two database backends selected automatically based on whetherDATABASE_URL is present in the environment.
SQLite (development — no configuration needed)
IfDATABASE_URL is not set, Django uses an SQLite file at db.sqlite3 in the project root. This requires no external service and is the recommended choice for local development.
PostgreSQL with Neon (production)
For production, Signia is configured to connect to a Neon PostgreSQL instance. The connection string must include?sslmode=require because the settings apply sslmode: require and DISABLE_SERVER_SIDE_CURSORS: True (required for Neon’s connection pooler).
- Create a free project at neon.tech.
- Copy the connection string from the Neon dashboard.
- Add it to your
.env:
- Run migrations:
Create a superuser
Regardless of the database backend, create a superuser to access the admin video panel at/admin-videos/:
Static files
Development
In development, Django serves static files automatically from the/static/ directory. No extra configuration is needed.
Production
In production, WhiteNoise serves all static files directly from the/staticfiles/ directory. Run the following command to collect static files before deploying:
/static/ and each app’s static/ directory into /staticfiles/.
Signia uses
CompressedStaticFilesStorage instead of the more common ManifestStaticFilesStorage. This is intentional. Manifest mode appends a content hash to every filename (e.g., mediapipe.wasm becomes mediapipe.abc123.wasm). MediaPipe’s WASM loader looks for files by their original exact names and cannot follow renamed paths, which causes the webcam recognition feature to silently fail. CompressedStaticFilesStorage compresses files with gzip and Brotli but leaves filenames unchanged, keeping WASM loading intact.Additionally, .wasm and .task file extensions are added to WHITENOISE_SKIP_COMPRESS_EXTENSIONS to prevent WhiteNoise from compressing them — Chromium makes HTTP range requests to WASM files, and compressed responses break range request semantics.Final check
Start the development server to verify everything is wired up correctly:/admin-videos/ to verify admin access.