Skip to content

Conversation

@Aki-07
Copy link
Contributor

@Aki-07 Aki-07 commented Oct 12, 2025

Description

  • add a oneclick-conda-install.sh helper that creates (or reuses) a Conda env, installs the FastAPI backend in editable mode, and installs npm dependencies for the web app and browser extension when Node is available
  • document the installer in README.md, including prerequisite notes and usage examples

Motivation and Context

FIX #

Changes Overview

  • add oneclick-conda-install.sh with env creation, dependency installs, and post-install tips
  • update README.md installation section with instructions and environment variable overrides for the new installer

Screenshots

API Changes

  • This PR includes API changes

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance improvement (non-breaking change which enhances performance)
  • Documentation update
  • Breaking change (fix or feature that would cause existing functionality to change)

Testing

  • I have tested these changes locally
  • I have added/updated unit tests
  • I have added/updated integration tests

Checklist:

  • My code follows the code style of this project
  • My change requires documentation updates
  • I have updated the documentation accordingly
  • My change requires dependency updates
  • I have updated the dependencies accordingly
  • My code builds clean without any errors or warnings
  • All new and existing tests passed

High-level PR Summary

This PR introduces an experimental Conda-based one-click installer script (oneclick-conda-install.sh) to simplify local setup for contributors. The script automates the creation of a Conda environment, installs backend dependencies in editable mode, and handles frontend dependencies for both the web app and browser extension when Node.js is available. The README is updated with installation instructions including environment variable customization options for the Conda environment name and Python version.

⏱️ Estimated Review Time: 5-15 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_web/oneclick-conda-install.sh
2 README.md

Need help? Join our Discord

Analyze latest changes

Summary by CodeRabbit

  • New Features

    • Added a one‑click Conda installer to streamline setup: creates or reuses a Conda environment, upgrades Python tooling, installs backend dependencies, optionally installs frontend assets when Node/npm are available, and prints guided post‑install steps. Honors environment name and Python version overrides and is idempotent on reruns.
  • Documentation

    • Expanded installation guide with the Conda option, explicit usage steps, prerequisites (Conda, Node.js 18+, required API keys), ETL/service options, re-ordered install methods, and minor wording/formatting cleanup.

@vercel
Copy link

vercel bot commented Oct 12, 2025

@Akilesh-Sahaj is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link

coderabbitai bot commented Oct 12, 2025

Walkthrough

Adds a new Conda one‑click installer script and updates README: documents prerequisites, usage, environment variables, and post‑install steps. The script creates or reuses a Conda env, upgrades packaging tools, installs backend deps (editable), optional dev tools, and conditionally installs frontend/extension via npm.

Changes

Cohort / File(s) Summary
Documentation: README update
README.md
Adds a Conda One‑Click Installer option and a prerequisites/setup section (Miniconda/Anaconda, Node.js 18+, API keys, ETL options), documents SURFSENSE_ENV_NAME and SURFSENSE_PYTHON_VERSION, reorders installation methods, adds usage instructions (chmod +x + run), and minor wording/format cleanup.
Tooling: Conda one‑click installer
oneclick-conda-install.sh
New Bash installer that validates conda, defines project paths and env defaults, idempotently creates/reuses a Conda env (configurable Python), upgrades pip/setuptools/wheel, installs backend in editable mode and optional dev tools, conditionally installs frontend/extension via npm (checks Node.js v18+), and prints post‑install guidance.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Script as oneclick-conda-install.sh
  participant Conda
  participant Env as Conda Env
  participant Python as Backend (pip)
  participant NPM as Frontend (npm / Node.js)

  User->>Script: ./oneclick-conda-install.sh
  Script->>Conda: require conda available
  Script->>Conda: conda env list / check Env exists
  alt Env missing
    Script->>Conda: conda create (name, Python version)
  else Env exists
    Script->>Env: reuse existing env
  end
  Script->>Env: conda run python -m pip install -U pip setuptools wheel
  Script->>Python: install backend (editable) and dev tools (e.g., pre-commit)
  Script->>NPM: check npm and Node.js version (v18+)
  alt npm & Node.js OK
    Script->>NPM: npm install frontend & extension deps
  else npm/Node.js missing or too old
    Note right of Script #f9f0c1: Skip frontend install (warn)
  end
  Script-->>User: print activation and run instructions (uvicorn / npm)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

hop hop, I scripted a gentle hatch,
conda hums, the env will match,
pip will plant and npm may sing,
one click starts the dev‑stage spring,
carrots, commits, and a tiny hop 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning The PR implements an automated Conda installer script and updates the documentation as requested by issue [#299], achieving the core objective of streamlining local setup for contributors. However, the script currently suffers from an unbound variable error on BACKEND_DIR which prevents it from fully automating environment creation and dependency installation. Define and export BACKEND_DIR before its usage or provide a default fallback to ensure the variable is always initialized, eliminating the unbound variable error and restoring full automation.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title clearly underscores the primary change by specifying the addition of a Conda one-click installer script along with updated documentation, making it easy to understand the main contribution at a glance. This phrasing is concise and accurately reflects the contents of the pull request without extraneous details.
Out of Scope Changes Check ✅ Passed All modifications are confined to the README and the new Conda installer script, which directly support the one-click installer feature requested in the linked issue. There are no unrelated or out-of-scope changes in other modules or files.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Aki-07 Aki-07 changed the title Feat/conda script Add conda one-click installer script and documentation Oct 12, 2025
Copy link

@recurseml recurseml bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by RecurseML

🔍 Review performed on 402039f..9df3b8d

  Severity     Location     Issue     Delete  
High surfsense_web/oneclick-conda-install.sh:77 Undefined variable causes crash
✅ Files analyzed, no issues (1)

README.md

@Aki-07 Aki-07 force-pushed the feat/conda-script branch from 9df3b8d to c0e8f4d Compare October 12, 2025 05:44
@Aki-07 Aki-07 force-pushed the feat/conda-script branch from c0e8f4d to 2c30139 Compare October 12, 2025 05:45
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
surfsense_web/oneclick-conda-install.sh (2)

26-29: Point PROJECT_ROOT at the repo root before deriving subpaths.

PROJECT_ROOT currently resolves to .../surfsense_web, so FRONTEND_DIR becomes .../surfsense_web/surfsense_web and EXTENSION_DIR becomes .../surfsense_web/surfsense_browser_extension. Both directories are invalid, so every cd "${FRONTEND_DIR}" / "${EXTENSION_DIR}" will fail. Set PROJECT_ROOT to the repository root (e.g., cd "$(dirname "${BASH_SOURCE[0]}")/..") before defining the other paths.


76-100: Define BACKEND_DIR (and reuse it consistently).

BACKEND_DIR is never set, so pip install -e "${BACKEND_DIR}" expands to an empty string and exits immediately; the post-install instructions using ${BACKEND_DIR} are broken for the same reason. Declare it alongside the other path constants (e.g., readonly BACKEND_DIR="${PROJECT_ROOT}/surfsense_backend").

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 402039f and 2c30139.

📒 Files selected for processing (2)
  • README.md (1 hunks)
  • surfsense_web/oneclick-conda-install.sh (1 hunks)
🧰 Additional context used
🪛 Shellcheck (0.11.0)
surfsense_web/oneclick-conda-install.sh

[warning] 26-26: Declare and assign separately to avoid masking return values.

(SC2155)

@Aki-07
Copy link
Contributor Author

Aki-07 commented Oct 14, 2025

@MODSetter requesting review

@NatsumeRyuhane
Copy link
Contributor

Planning on reviewing this later - but over a quick glance I think the doc need some further changes. Looking at the script I assume the script only depends on the conda installed? If that is the case it would be better to make the conda installation write out of quote block of docker & manual installation to help clarify things.

@NatsumeRyuhane
Copy link
Contributor

Okay the script seems not working on my machine - as RecurseML have pointed out I think there is this unbound variable issue on line 77. It was marked as resolved though...

22:59:23 [natsumeryuhane@Ryuhane-MBP_M2]
/Users/natsumeryuhane/playground/SurfSense > ./oneclick-conda-install.sh     [#1036] [1] [%]
[INFO] SurfSense one-click Conda installer starting…
[INFO] Conda environment 'surfsense' already exists. Reusing it.
[INFO] Upgrading pip/setuptools/wheel inside 'surfsense'…
Requirement already satisfied: pip in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (25.2)
Requirement already satisfied: setuptools in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (80.9.0)
Requirement already satisfied: wheel in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (0.45.1)
[INFO] Installing SurfSense backend dependencies…
./oneclick-conda-install.sh: line 77: BACKEND_DIR: unbound variable

@MODSetter
Copy link
Owner

Okay the script seems not working on my machine - as RecurseML have pointed out I think there is this unbound variable issue on line 77. It was marked as resolved though...

22:59:23 [natsumeryuhane@Ryuhane-MBP_M2]
/Users/natsumeryuhane/playground/SurfSense > ./oneclick-conda-install.sh     [#1036] [1] [%]
[INFO] SurfSense one-click Conda installer starting…
[INFO] Conda environment 'surfsense' already exists. Reusing it.
[INFO] Upgrading pip/setuptools/wheel inside 'surfsense'…
Requirement already satisfied: pip in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (25.2)
Requirement already satisfied: setuptools in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (80.9.0)
Requirement already satisfied: wheel in /opt/homebrew/Caskroom/miniconda/base/envs/surfsense/lib/python3.12/site-packages (0.45.1)
[INFO] Installing SurfSense backend dependencies…
./oneclick-conda-install.sh: line 77: BACKEND_DIR: unbound variable

@Aki-07 Can you please fix this.

@Aki-07
Copy link
Contributor Author

Aki-07 commented Oct 16, 2025

@MODSetter Sure, will get it fixed in some time

Reordered the installation options in README.md to highlight the Conda one-click installer as the recommended method for most users. This change aims to clarify and streamline the setup process.
@Aki-07
Copy link
Contributor Author

Aki-07 commented Oct 16, 2025

@MODSetter requesting for review

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (6)
README.md (3)

151-151: Standardize spelling (customize vs customise).

Use consistent regional spelling across the README. Suggest American English to match the rest.

-   - Use `SURFSENSE_ENV_NAME` and `SURFSENSE_PYTHON_VERSION` env vars to customise the Conda environment.
+   - Use `SURFSENSE_ENV_NAME` and `SURFSENSE_PYTHON_VERSION` env vars to customize the Conda environment.

154-156: Hyphenate compound adjective.

“Full-stack” should be hyphenated when used as a compound adjective.

-   - Flexible deployment options (full stack or core services only)
+   - Flexible deployment options (full-stack or core services only)

144-145: Minor wording polish.

Avoid the slash construction; it reads cleaner as “backend and frontend.”

-1. **Conda One-Click Installer (Recommended for most users)** - Create a ready-to-use Conda environment and install backend/frontend dependencies automatically.
+1. **Conda One-Click Installer (Recommended for most users)** - Create a ready-to-use Conda environment and install backend and frontend dependencies automatically.
oneclick-conda-install.sh (3)

26-30: Address SC2155 and make script dir explicit.

Declare and assign separately to avoid masking return values; keep PROJECT_ROOT semantics unchanged.

-readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+readonly PROJECT_ROOT="$SCRIPT_DIR"
 readonly FRONTEND_DIR="${PROJECT_ROOT}/surfsense_web"
 readonly EXTENSION_DIR="${PROJECT_ROOT}/surfsense_browser_extension"
 readonly BACKEND_DIR="${PROJECT_ROOT}/surfsense_backend"

83-91: Check Node.js version, prefer npm ci, and guard missing dirs.

  • Ensure Node >= 18 as documented.
  • Use npm ci when lockfiles exist for reproducibility.
  • Skip missing frontend/extension dirs instead of hard failing.
-if command -v npm >/dev/null 2>&1; then
-    info "Installing frontend dependencies (surfsense_web)…"
-    (cd "${FRONTEND_DIR}" && npm install)
-
-    info "Installing browser extension dependencies (surfsense_browser_extension)…"
-    (cd "${EXTENSION_DIR}" && npm install)
+if command -v npm >/dev/null 2>&1 && command -v node >/dev/null 2>&1; then
+    NODE_MAJOR="$(node -v | sed -E 's/^v([0-9]+).*/\1/')"
+    if [[ "${NODE_MAJOR}" -lt 18 ]]; then
+        warn "Node.js v${NODE_MAJOR} detected; Node 18+ is recommended. Skipping frontend install."
+    else
+        if [[ -d "${FRONTEND_DIR}" ]]; then
+            info "Installing frontend dependencies (surfsense_web)…"
+            if [[ -f "${FRONTEND_DIR}/package-lock.json" ]]; then
+                (cd "${FRONTEND_DIR}" && npm ci)
+            else
+                (cd "${FRONTEND_DIR}" && npm install)
+            fi
+        else
+            warn "Frontend directory not found at '${FRONTEND_DIR}'; skipping web UI install."
+        fi
+
+        if [[ -d "${EXTENSION_DIR}" ]]; then
+            info "Installing browser extension dependencies (surfsense_browser_extension)…"
+            if [[ -f "${EXTENSION_DIR}/package-lock.json" ]]; then
+                (cd "${EXTENSION_DIR}" && npm ci)
+            else
+                (cd "${EXTENSION_DIR}" && npm install)
+            fi
+        else
+            warn "Extension directory not found at '${EXTENSION_DIR}'; skipping extension install."
+        fi
+    fi
 else
     warn "npm not found; skipping frontend dependency installation. Install Node.js 18+ to enable the web UI."
 fi

80-82: Optional: install Git hooks automatically.

If you want devs to get pre-commit hooks by default, add “pre-commit install” when git is available.

 info "Installing optional developer helpers…"
 conda_run python -m pip install "pre-commit>=3.8.0"
+if command -v git >/dev/null 2>&1; then
+    (cd "${PROJECT_ROOT}" && conda_run pre-commit install || true)
+fi
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8b150cf and 05388d7.

📒 Files selected for processing (2)
  • README.md (1 hunks)
  • oneclick-conda-install.sh (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~144-~144: There might be a mistake here.
Context: ...end/frontend dependencies automatically. - Requires Miniconda/Anaconda plus Node.js...

(QB_NEW_EN)


[uncategorized] ~156-~156: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... file - Flexible deployment options (full stack or core services only) - No need to ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~161-~161: Do not mix variants of the same word (‘customize’ and ‘customise’) within a single text.
Context: ...ore control over their setup or need to customize their deployment. Both installation gu...

(EN_WORD_COHERENCY)

🪛 Shellcheck (0.11.0)
oneclick-conda-install.sh

[warning] 26-26: Declare and assign separately to avoid masking return values.

(SC2155)

🔇 Additional comments (3)
oneclick-conda-install.sh (2)

96-101: Verify backend entrypoint and working dir in post-install instructions.

Confirm uvicorn target module/path is correct and matches the repo layout. If incorrect, newcomers will get import errors.

  • Does app.app:app exist under ${BACKEND_DIR}?
  • If not, update the command accordingly (e.g., python -m uvicorn surfsense.app:app).

Also applies to: 104-104


78-78: Earlier BACKEND_DIR issue appears resolved.

BACKEND_DIR is now defined (Line 29) and used here; this should eliminate the prior “unbound variable” failure.

Please re-run the script in the environment that previously failed and confirm it now passes the BACKEND install step.

README.md (1)

146-150: Script path verified
The oneclick-conda-install.sh script exists at the repository root; no updates required.

@Aki-07 Aki-07 force-pushed the feat/conda-script branch from 05388d7 to 47813c3 Compare October 16, 2025 14:58
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
oneclick-conda-install.sh (3)

26-30: Make directory paths configurable; avoid assuming script’s folder equals repo root.

If this script lives under surfsense_web (as in PR summary), FRONTEND_DIR becomes “surfsense_web/surfsense_web”. Allow env overrides to decouple layout.

-readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-readonly FRONTEND_DIR="${PROJECT_ROOT}/surfsense_web"
-readonly EXTENSION_DIR="${PROJECT_ROOT}/surfsense_browser_extension"
-readonly BACKEND_DIR="${PROJECT_ROOT}/surfsense_backend"
+# Resolve script directory; allow directory overrides via env vars.
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+readonly PROJECT_ROOT="${SURFSENSE_PROJECT_ROOT:-${_SCRIPT_DIR}}"
+readonly FRONTEND_DIR="${SURFSENSE_FRONTEND_DIR:-${PROJECT_ROOT}/surfsense_web}"
+readonly EXTENSION_DIR="${SURFSENSE_EXTENSION_DIR:-${PROJECT_ROOT}/surfsense_browser_extension}"
+readonly BACKEND_DIR="${SURFSENSE_BACKEND_DIR:-${PROJECT_ROOT}/surfsense_backend}"

Optionally, detect repo root via git and fall back to script dir:

REPO_ROOT="$(git -C "$_SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$_SCRIPT_DIR")"

26-26: Shellcheck SC2155: split readonly assignment.

Minor: assign first, then mark readonly to avoid masking return codes.

-readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+readonly PROJECT_ROOT="${SURFSENSE_PROJECT_ROOT:-${_SCRIPT_DIR}}"

(Based on static analysis)


96-111: Improve post‑install UX: include no‑activate run example.

Add an example that runs uvicorn via conda run for users who don’t want to activate the env.

 2. Start the backend API:
      (cd "${BACKEND_DIR}" && uvicorn app.app:app --reload)
+     # or without activating:
+     conda run -n ${ENV_NAME} uvicorn app.app:app --reload
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 05388d7 and 47813c3.

📒 Files selected for processing (1)
  • oneclick-conda-install.sh (1 hunks)
🧰 Additional context used
🪛 Shellcheck (0.11.0)
oneclick-conda-install.sh

[warning] 26-26: Declare and assign separately to avoid masking return values.

(SC2155)

🔇 Additional comments (1)
oneclick-conda-install.sh (1)

77-82: No changes required. PROJECT_ROOT and BACKEND_DIR are correctly defined at the top and guarded before use; the unbound‐variable error in your test arose because you ran the checks without sourcing oneclick-conda-install.sh.

@Aki-07 Aki-07 force-pushed the feat/conda-script branch from 47813c3 to 184df08 Compare October 16, 2025 15:06
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
oneclick-conda-install.sh (4)

26-29: Address ShellCheck SC2155: split readonly assignment.

Avoid assign-at-declare to silence SC2155 and improve readability.

-readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+readonly PROJECT_ROOT
 readonly FRONTEND_DIR="${PROJECT_ROOT}/surfsense_web"
 readonly EXTENSION_DIR="${PROJECT_ROOT}/surfsense_browser_extension"
 readonly BACKEND_DIR="${PROJECT_ROOT}/surfsense_backend"

54-56: Make env detection more robust across conda output formats.

Text parsing can be brittle. Consider using conda info to list env names only.

-conda env list | awk '{print $1}' | grep -Fxq "$ENV_NAME"
+conda info --envs | awk 'NR>2 && NF {print $1}' | grep -Fxq "$ENV_NAME"

Optionally, use JSON with jq if available for maximum robustness.


86-115: Prefer npm ci when lockfile exists; keeps installs reproducible.

Use npm ci if package-lock.json is present; fall back to npm install otherwise.

-                (cd "${FRONTEND_DIR}" && npm install)
+                (cd "${FRONTEND_DIR}" && if [[ -f package-lock.json ]]; then npm ci; else npm install; fi)
...
-                (cd "${EXTENSION_DIR}" && npm install)
+                (cd "${EXTENSION_DIR}" && if [[ -f package-lock.json ]]; then npm ci; else npm install; fi)

2-2: Add a simple error trap for easier debugging when a step fails.

Helpful with set -euo to surface failing line/command.

-set -euo pipefail
+set -euo pipefail
+trap 'echo -e "\033[1;31m[ERROR]\033[0m Failed at line $LINENO: $BASH_COMMAND" >&2' ERR
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 47813c3 and 184df08.

📒 Files selected for processing (1)
  • oneclick-conda-install.sh (1 hunks)
🧰 Additional context used
🪛 Shellcheck (0.11.0)
oneclick-conda-install.sh

[warning] 26-26: Declare and assign separately to avoid masking return values.

(SC2155)

🔇 Additional comments (2)
oneclick-conda-install.sh (2)

62-115: Overall: solid installer; previous unbound var fixed and guards look good.

Conda env creation/reuse, pip upgrades, backend install with dir check, and guarded frontend installs (Node ≥18) are correct. Nice use of set -euo pipefail and conda run.


123-125: No change required for uvicorn invocation: BACKEND_DIR is set to surfsense_backend, and surfsense_backend/app/app.py defines app = FastAPI(...), so uvicorn app.app:app --reload correctly loads the ASGI app.

@MODSetter
Copy link
Owner

@NatsumeRyuhane Can you give this a go now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: one-click installer with conda

3 participants