Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
4 changes: 2 additions & 2 deletions site/content/_site.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
18 changes: 11 additions & 7 deletions site/content/home.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
title: "Behavioral and Ecological Automated operant Box (BEATBox)"
title: "Behavioural and Autonomous operant Box (BEATBox)"
layout: "page"
showInNav: false
navOrder: 1
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"
Expand Down Expand Up @@ -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.
2 changes: 1 addition & 1 deletion site/content/one-pager_deprecated.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading
Loading