The NAMETS Website ships with aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Muhammadbugaje/NAMETS_Website/llms.txt
Use this file to discover all available pages before exploring further.
render.yaml Infrastructure-as-Code file that defines everything Render needs to build and run the application — including the runtime, build commands, start command, and environment variable declarations. Deploying is as straightforward as connecting your GitHub repository to Render and letting the platform execute the pre-configured pipeline. The production stack uses Neon (serverless PostgreSQL) for the database, Cloudinary for media file storage, and WhiteNoise for efficient static file serving directly from Gunicorn — no separate file server required.
render.yaml Configuration
Therender.yaml at the repository root declares a single web service named namets. Review it before your first deploy to understand exactly what Render will do:
Build Command
The build phase installs Rust (required by some cryptographic dependencies), installs all Python packages, collects static files, and runs database migrations — in that order:Start Command
Render starts the application using Gunicorn with 2 worker processes and informational log output:The
Procfile in the repository root uses 4 workers (--workers 4) and is kept for compatibility with other Procfile-aware platforms. Render uses render.yaml’s startCommand exclusively and ignores the Procfile.Python Version
Theruntime.txt file pins the Python version for Render:
Setting Environment Variables
Several environment variables are markedsync: false in render.yaml, meaning you must supply their values manually in the Render dashboard under Environment → Environment Variables before the first deploy succeeds.
| Variable | Source | Description |
|---|---|---|
SECRET_KEY | Auto-generated by Render | Long random string — Render sets this automatically via generateValue: true |
DEBUG | render.yaml default | Set to false — do not change this in production |
ALLOWED_HOSTS | render.yaml default | Set to .onrender.com to allow all Render subdomains |
DATABASE_URL | Neon dashboard | Full PostgreSQL connection string from your Neon project |
CLOUDINARY_CLOUD_NAME | Cloudinary dashboard | Your Cloudinary account cloud name |
CLOUDINARY_API_KEY | Cloudinary dashboard | API key for authenticated media uploads |
CLOUDINARY_API_SECRET | Cloudinary dashboard | API secret — treat this like a password |
N8N_WEBHOOK_URL | n8n instance | Webhook endpoint for event automation notifications |
WEBHOOK_SECRET | Custom value | Shared secret used to validate webhook payloads |
Setting Up Neon PostgreSQL
Neon provides a serverless PostgreSQL database with a free tier well-suited for the NAMETS platform. After creating a Neon project:- Navigate to your project’s Connection Details panel.
- Copy the Connection String (it begins with
postgresql://). - Paste it as the value of
DATABASE_URLin your Render environment variables.
settings.py uses dj-database-url to parse this connection string automatically:
Setting Up Cloudinary
All user-uploaded media (gallery images, event banners, etc.) are stored in Cloudinary under thenamets/ default folder. To configure:
- Sign in to your Cloudinary Console.
- Copy the Cloud Name, API Key, and API Secret from the dashboard.
- Set
CLOUDINARY_CLOUD_NAME,CLOUDINARY_API_KEY, andCLOUDINARY_API_SECRETin Render.
settings.py configures Cloudinary storage as the default media backend:
Static File Serving with WhiteNoise
The platform uses WhiteNoise to serve compressed and fingerprinted static files directly from Gunicorn — no CDN or separate static server is needed. WhiteNoise is wired in at two points insettings.py:
Middleware (must appear directly after SecurityMiddleware):
python manage.py collectstatic --noinput step in the build command populates the staticfiles/ directory that WhiteNoise reads from at runtime.