| # exit on error | |
| set -o errexit | |
| # Ensure Cargo has a writable home directory for Rust-based builds | |
| export CARGO_HOME=$HOME/.cargo | |
| echo "==========================================" | |
| echo " FinMK - Render Build Script" | |
| echo "==========================================" | |
| # 1. Install Global Dependencies (if any needed for OpenCV/etc that aren't in requirements) | |
| # Render's native python env usually has what we need, or we use opencv-python-headless. | |
| # 2. Build Frontend | |
| echo "[Step 1/3] Building Frontend..." | |
| cd frontend | |
| npm install | |
| npm run build | |
| cd .. | |
| # 3. Setup Backend & Collect Static | |
| echo "[Step 2/3] Setting up Backend..." | |
| cd backend | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| # Post-install check for headless opencv | |
| echo "Verifying headless libraries..." | |
| pip install opencv-python-headless matplotlib | |
| echo "[Step 3/3] Collecting Static Files..." | |
| # Ensure staticfiles directory exists | |
| mkdir -p staticfiles | |
| # Collect static files (including frontend build due to STATICFILES_DIRS in settings) | |
| python manage.py collectstatic --no-input | |
| # Run Migrations (Optional here, can also be done in start.sh) | |
| # Doing it here ensures the build fails if migrations are broken | |
| python manage.py migrate --noinput | |
| echo "==========================================" | |
| echo " Build Successful!" | |
| echo "==========================================" | |