A B2B SaaS platform for private practice dietitians. NUTRX helps dietitians build meal plans for patients, store patient health information, and provide patients with a portal to access their meal plans.
| Layer | Technology |
|---|---|
| Backend | Django 5.2, Django REST Framework, PostgreSQL |
| Frontend | React 19, TypeScript, Vite, Tailwind CSS, shadcn/ui |
| Async | Celery + Redis, Django Channels (WebSockets) |
| Auth | JWT (SimpleJWT) with multi-tenant isolation |
See backend/README.md and frontend/README.md for detailed architecture docs.
- Python 3.11+
- Node.js 18+ and pnpm
- PostgreSQL 14+
- Redis
# Install Redis via Homebrew
brew install redis
# Start Redis as a background service
brew services start redis
# Verify Redis is running
redis-cli ping # should return PONGcd backend
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment variables
cp .env.example .envEdit .env with your values:
| Variable | Description |
|---|---|
DJANGO_SECRET_KEY |
Django secret key |
PG_DB_NAME |
PostgreSQL database name |
PG_DB_USER |
PostgreSQL user |
PG_DB_PASSWORD |
PostgreSQL password |
PG_DB_HOST |
PostgreSQL host (e.g. localhost) |
PG_DB_PORT |
PostgreSQL port (default 5432) |
REDIS_HOST |
Redis host (e.g. localhost) |
CELERY_BROKER_URL |
Celery broker URL (e.g. redis://localhost:6379/0) |
CELERY_RESULT_BACKEND |
Celery result backend URL |
EMAIL_BACKEND |
Django email backend class |
DEFAULT_FROM_EMAIL |
Default sender email address |
FIELD_ENCRYPTION_KEY |
Encryption key for HIPAA-protected fields |
# Run migrations (public schema first, then tenant schemas)
python manage.py migrate_schemas --shared
python manage.py migrate_schemas
# Start the development server
python manage.py runserverTo run Celery (for async tasks like meal plan generation):
celery -A backend worker --loglevel=infocd frontend
# Install dependencies
pnpm install
# Start the development server
pnpm run dev