diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2eddebf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: Website and documentation CI + +on: + pull_request: + branches: [main] + paths: + - "docs/**" + - "scripts/**" + - "site/**" + - "package.json" + - ".github/workflows/**" + workflow_dispatch: + +permissions: + contents: read + +jobs: + website-docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: site/package-lock.json + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + cache: pip + + - name: Install website dependencies + run: npm ci + working-directory: site + + - name: Install documentation dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r docs/requirements.txt + + - name: Build Sphinx manual with warnings as errors + run: python -m sphinx -W --keep-going -b html -d docs/_build/ci-doctrees docs/source site/public/docs/manual + + - name: Type-check website + run: npm run type-check + working-directory: site + + - name: Run website tests + run: npm test + working-directory: site + + - name: Build static website + env: + NEXT_PUBLIC_SITE_URL: https://open-beatbox.github.io + run: npm run build + working-directory: site + + - name: Check rendered output + run: | + test -f site/out/index.html + test -f site/out/docs/manual/index.html + test -f site/out/docs/beatbox-assembly-sop.html + grep -q "BEATBox" site/out/index.html + grep -q "BEATBox" site/out/docs/manual/index.html diff --git a/README.md b/README.md index b5e946c..9f10fcd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # BEATBox -**BEATBox** — **BE**havioural and **A**u**T**onomous Box — is an open-source, modular, low-cost platform for autonomous home-cage operant conditioning and long-duration behavioral data acquisition in rodents. +**BEATBox** — **BE**havioural and **A**u**T**onomous operant Box — is an open-source, modular, low-cost platform for autonomous home-cage operant conditioning and long-duration behavioral data acquisition in rodents. The goal of this repository is to make the project reproducible from a single entry point: website, one-pager, technical manual, assembly SOP, hardware resources, firmware, software, and public communication assets. diff --git a/site/content/_site.md b/site/content/_site.md index 16ffd66..8e5cfa1 100644 --- a/site/content/_site.md +++ b/site/content/_site.md @@ -1,6 +1,6 @@ --- -title: "BEATBox - Behavioral and Ecological Automated operant Box" -description: "BEATBox is an open-source, automated, customizable, and low-cost system for ecological behavioral data acquisition in home-cage environments." +title: "BEATBox - Behavioural and Autonomous operant Box" +description: "BEATBox is an open-source, autonomous, customizable, and low-cost system for ecological behavioral data acquisition in home-cage environments." keywords: - Beatbox - home-cage monitoring diff --git a/site/content/home.md b/site/content/home.md index 2948b28..e7c3087 100644 --- a/site/content/home.md +++ b/site/content/home.md @@ -1,5 +1,5 @@ --- -title: "Behavioral and Ecological Automated operant Box (BEATBox)" +title: "Behavioural and Autonomous operant Box (BEATBox)" layout: "page" showInNav: false navOrder: 1 @@ -7,7 +7,7 @@ slug: "/" sections: - type: "brandShowcase" title: "BEATBox" - subtitle: "Behavioral and Ecological Automated operant Box" + subtitle: "Behavioural and Autonomous operant Box" kicker: "Open-source 24/7 home-cage operant conditioning that preserves natural rhythms while increasing data density and reproducibility." logo: "/images/beatbox-logo.png" video: "/assets/gifs/BEATBOX.5.compressed.gif" @@ -252,14 +252,18 @@ sections: items: - question: "What is BEATBox designed for?" answer: "BEATBox is designed for 24/7 home-cage operant conditioning, longitudinal behavioral monitoring, and modular task development." - - question: "Can a lab build BEATBox themselves?" - answer: "Yes. The project is open-source and provides documentation, assembly SOPs, hardware files, and software resources to support local builds." + - question: "Can I build BEATBox myself?" + answer: "Yes. The project is open-source and provides documentation, assembly SOPs, hardware files, and software resources to support local builds. One system is estimated at 600€ (details to be added soon) and takes only 2 hours to assemble from scratch. Detailed assembly protocol: [https://open-beatbox.github.io/docs/beatbox-assembly-sop.html](https://open-beatbox.github.io/docs/beatbox-assembly-sop.html)." - question: "Does BEATBox reduce daily experimenter intervention?" - answer: "Yes. Animals can engage with tasks autonomously, while events, rewards, sensors, and performance data are logged automatically." + answer: "Yes. Animals can live in the BEATBox for weeks and engage voluntarily with tasks, while events, rewards, sensors, and performance data are logged automatically. You can track everything from your home/desk computer without interfering with experiments." - question: "What can be customized?" - answer: "The system is modular: feeders, screens, nosepokes, IR barriers, lighting, tunnels, and sensor workflows can be adapted to different behavioral protocols." + answer: "The system is modular: feeders, screens, nosepokes, IR barriers, lighting, tunnels, and sensor workflows can be adapted to different behavioral protocols. All new customizations and protocols are invited to be shared with the BEATBox community here: [https://github.com/Open-BeatBox/Open-BeatBox.github.io/discussions](https://github.com/Open-BeatBox/Open-BeatBox.github.io/discussions)." - question: "Where can I find the GUI and software resources?" - answer: "The software resources, including the GUI demo and future control code, are available from the BEATBox GitHub software folder." + answer: "The software resources, including the GUI demo and future control code, are available from the BEATBox GitHub software folder here: [https://github.com/Open-BeatBox/Open-BeatBox.github.io/tree/main/resources](https://github.com/Open-BeatBox/Open-BeatBox.github.io/tree/main/resources)." + - question: "Why is a longitudinal approach more respectful of naturalistic behaviors?" + answer: "Longitudinal home-cage testing lets animals engage with tasks voluntarily across their own day-night rhythms, instead of being repeatedly handled and moved into short experimenter-controlled sessions. This preserves more natural motivation, activity timing, and adaptation while reducing avoidable disturbance." + - question: "Which other open-source systems can be incorporated into the BEATBox environment?" + answer: "BEATBox is designed to interoperate with open-source behavioral and neuroscience tools when protocols need them, including camera-based home-cage monitoring, Bonsai workflows, Open Ephys acquisition, pyControl-style task logic, and custom Arduino/Raspberry Pi sensor or actuator modules." --- BEATBox is an open-source platform for ecological home-cage behavioral experiments. diff --git a/site/content/one-pager_deprecated.md b/site/content/one-pager_deprecated.md index 0eef04c..9376a1f 100644 --- a/site/content/one-pager_deprecated.md +++ b/site/content/one-pager_deprecated.md @@ -5,7 +5,7 @@ showInNav: false navOrder: 2 slug: "/one-pager" hero: - title: "BEATBox Behavioral and Ecological" + title: "BEATBox Behavioural and Autonomous operant Box" subtitle: "Open-source 24/7 home-cage operant conditioning that preserves natural rhythms while increasing data density and reproducibility." backgroundVideo: "/images/D_View_Promotional_Video_Generated.mp4" backgroundImage: "/images/beatbox-og-default.png" diff --git a/site/package.json b/site/package.json index 54267fd..ce652be 100644 --- a/site/package.json +++ b/site/package.json @@ -11,7 +11,7 @@ "start": "next start", "lint": "next lint", "type-check": "tsc --noEmit", - "test": "ts-node --transpile-only tests/utils.test.ts" + "test": "ts-node --transpile-only --compiler-options \"{\\\"module\\\":\\\"CommonJS\\\",\\\"moduleResolution\\\":\\\"node\\\"}\" tests/utils.test.ts" }, "dependencies": { "@tailwindcss/postcss": "^4.0.0-alpha.18", diff --git a/site/public/docs/beatbox-assembly-guide-dev-v2.html b/site/public/docs/beatbox-assembly-guide-dev-v2.html new file mode 100644 index 0000000..8c76127 --- /dev/null +++ b/site/public/docs/beatbox-assembly-guide-dev-v2.html @@ -0,0 +1,1887 @@ + + + + + + Build Your Own BEATBox Assembly Guide V2 - Dev Review + + + +
+ +
+
+

+

+
+ + Status: internal troubleshooting + Storage: browser localStorage +
+
+
+
+

Purpose

    +

    Known limitations

      +
      +
      +
      +
      No checklist item matches the current search.
      + +
      +
      + +
      + + +
      +
      + + + +
      +
      + + + + diff --git a/site/public/docs/beatbox-assembly-sop-dev-troubleshooting.html b/site/public/docs/beatbox-assembly-sop-dev-troubleshooting.html index 312dccb..ec91d1c 100644 --- a/site/public/docs/beatbox-assembly-sop-dev-troubleshooting.html +++ b/site/public/docs/beatbox-assembly-sop-dev-troubleshooting.html @@ -3,7 +3,7 @@ - BEATBox Assembly SOP — Dev Review and Troubleshooting + Build Your Own BEATBox Assembly Guide - Dev Review and Troubleshooting