Skip to content

Commit b8615a0

Browse files
authored
Merge pull request #2 from Open-BeatBox/websitev1.0.0
Website v1.0.0 updates (without node_modules)
2 parents e3255e9 + 90fee82 commit b8615a0

54 files changed

Lines changed: 11163 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
MAILGUN_API_KEY=
2+
MAILGUN_DOMAIN=
3+
MAILGUN_API_URL=https://api.mailgun.net/v3
4+
MAILGUN_FROM_EMAIL=
5+
MAILGUN_TO_EMAIL=
6+
NEXT_PUBLIC_SITE_URL=
7+
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=

.eslintrc.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": ["next/core-web-vitals"],
3+
"rules": {
4+
"@next/next/no-html-link-for-pages": "off"
5+
}
6+
}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules/
2+
.next/
3+
dist/
4+
*.log

README.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,49 @@
1-
# Open-BeatBox.github.io
1+
# Beatbox – Content-Driven Next.js Site
2+
3+
A Next.js 15 App Router site for **Beatbox**, an open, modular home-cage cognitive monitoring system. All copy and structure come from Markdown in `content/` and render through reusable React components.
4+
5+
## Content model
6+
- Site metadata: `content/_site.md` (title, description, keywords, authors, Open Graph/Twitter defaults, logo paths).
7+
- Pages: top-level Markdown files like `content/home.md`, `content/beatbox.md`. Each has frontmatter with `hero`, `sections`, `layout`, `slug`, and navigation fields.
8+
- Blog: Markdown in `content/blog/*.md` with `layout: "blog"`, `publishAt` for scheduling, and optional `showInNav`/`navOrder`.
9+
- Navigation: built automatically from `showInNav` and `navOrder`.
10+
- Metadata: generated from `_site.md` plus per-page overrides, with canonical URLs built from `NEXT_PUBLIC_SITE_URL`.
11+
12+
## Getting started
13+
```bash
14+
npm install
15+
npm run dev
16+
```
17+
18+
## Scripts
19+
- `npm run dev` – start development server
20+
- `npm run build` – production build
21+
- `npm run start` – start production server
22+
- `npm run lint` – ESLint (Next.js config, ESLint 9)
23+
- `npm run type-check` – TypeScript `--noEmit`
24+
- `npm run test` – lightweight utility tests via `ts-node`
25+
26+
## Adding content
27+
1. Duplicate an existing file in `content/` and adjust frontmatter (`title`, `layout`, `slug`, `hero`, `sections`).
28+
2. For blog posts, place files in `content/blog/` with `layout: "blog"` and `publishAt`. Future-dated posts are hidden until their date.
29+
3. Navigation updates automatically from `showInNav` and `navOrder`.
30+
31+
## Metadata & SEO
32+
- Global defaults come from `content/_site.md`.
33+
- Per-page metadata uses hero/subtitle or body for descriptions and pulls OG/Twitter images from hero backgrounds, the first Markdown image, or the default logo/OG image.
34+
- `NEXT_PUBLIC_SITE_URL` is used for canonical, sitemap, and robots entries.
35+
36+
## Environment variables
37+
Copy `.env.example` to `.env.local` and fill in:
38+
- `MAILGUN_API_KEY`, `MAILGUN_DOMAIN`, `MAILGUN_API_URL`, `MAILGUN_FROM_EMAIL`, `MAILGUN_TO_EMAIL`
39+
- `NEXT_PUBLIC_SITE_URL`
40+
- `NEXT_PUBLIC_RECAPTCHA_SITE_KEY` (optional Google reCAPTCHA for the contact form)
41+
42+
## Contact form
43+
`/api/send-email` accepts JSON `fields`, sanitizes values, and forwards them to Mailgun. Ensure the Mailgun variables are set and reachable from the server environment.
44+
45+
## Styling
46+
Tailwind CSS v4 via `@tailwindcss/postcss`, plus small component-scoped CSS files (e.g., `HeroSection.css`, `ContentSections.css`) to keep the glass aesthetic and hero typography.
47+
48+
## Testing
49+
`npm run test` executes simple utility checks via `ts-node`. Extend with additional utility or content schema tests as needed.

content/_site.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
title: "Beatbox – Open Home-Cage Cognitive Monitoring for Mice"
3+
description: "Beatbox is an open, modular home-cage cognitive monitoring system for mice. Measure continuously, stream in real time, and standardize behavioral experiments across labs."
4+
keywords:
5+
- Beatbox
6+
- home-cage monitoring
7+
- operant conditioning
8+
- behavioral neuroscience
9+
- open hardware
10+
authors:
11+
- name: "Beatbox Contributors"
12+
url: "https://github.com/beatbox-hcm"
13+
openGraph:
14+
defaultImage: "/images/beatbox-og-default.png"
15+
type: "website"
16+
locale: "en_US"
17+
twitter:
18+
handle: "@beatbox_hcm"
19+
cardType: "summary_large_image"
20+
logo: "/images/beatbox-logo.svg"
21+
brandColor: "#2563EB"
22+
secondaryColor: "#0F172A"
23+
---

content/beatbox.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: "What is Beatbox?"
3+
layout: "page"
4+
showInNav: true
5+
navOrder: 2
6+
slug: "/beatbox"
7+
hero:
8+
title: "Ecological, automated operant-conditioning in the home cage."
9+
subtitle: "Continuous behavioral experiments with reduced handling, improved welfare, and richer data."
10+
sections:
11+
- type: "text"
12+
title: "Beatbox in a nutshell"
13+
body: |
14+
Beatbox is an ecological, automated operant-conditioning and home-cage monitoring device for mice. It enables continuous (24/7) behavioral experiments directly in the animal’s living environment.
15+
16+
By allowing mice to self-engage in tasks at any time over weeks, Beatbox both refines welfare conditions and improves the statistical power of experiments.
17+
- type: "list"
18+
title: "Core problems Beatbox addresses"
19+
items:
20+
- "Short, stressful, experimenter-dependent sessions"
21+
- "Limited task flexibility in classical operant chambers"
22+
- "Poor standardization across labs and platforms"
23+
- type: "pipeline"
24+
title: "Design overview"
25+
steps:
26+
- "Environmental sensors (temperature, humidity, light)"
27+
- "Behavioral sensors (IR beam breaks, nosepoke sensors, levers, capacitive touch)"
28+
- "Audio input/output modules"
29+
- "Microcontroller with real-time firmware"
30+
- "Streaming to local PC or server via USB or Wi-Fi"
31+
- "Python client and REST/WebSocket APIs for data access"
32+
- type: "columns"
33+
title: "Hardware and Software"
34+
columns:
35+
- heading: "Hardware design"
36+
body: |
37+
Beatbox uses a modular enclosure with removable panels so labs can adapt the chamber to their task.
38+
39+
Core components include the main chamber, interchangeable operant modules (nosepoke, rewards, sensors), a PCB with multiple sensor interfaces, and a central microcontroller.
40+
41+
<!-- TODO: Insert exact microcontroller model, chamber dimensions, reward system details, and power supply specs. -->
42+
- heading: "Software stack"
43+
body: |
44+
The Beatbox software stack includes real-time acquisition firmware, a Python middleware layer for streaming and buffering, Dockerized services for visualization and storage, and open APIs in JSON and WebSocket formats.
45+
46+
Optional JSON-LD metadata export supports integration with FAIR data workflows.
47+
- type: "roadmap"
48+
title: "Versions & roadmap"
49+
items:
50+
- label: "v0.1 – First public release"
51+
- label: "v0.2 – Modular panel redesign"
52+
- label: "v0.3 – API stabilization"
53+
- label: "v0.4 – Benchmarking and validation datasets"
54+
- label: "v1.0 – Community hardware certification program"
55+
---
56+

content/blog/first-post.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: "Introducing Beatbox: Open, Modular Home-Cage Cognitive Monitoring"
3+
layout: "blog"
4+
showInNav: false
5+
publishAt: "2025-01-01T00:00:00.000Z"
6+
navGroup: "Blog"
7+
---
8+
9+
Beatbox is an open, modular home-cage cognitive monitoring system for mice. It is designed to enable continuous, ecological behavioral experiments while improving welfare and standardization.
10+
11+
In this first post, we summarize the motivation behind Beatbox, its core design principles, and how you can start exploring the hardware, firmware, and software stack.
12+
13+
Future posts will cover build tutorials, validation datasets, and integrations with other home-cage monitoring systems.

content/build-and-code.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: "Build & Code"
3+
layout: "page"
4+
showInNav: true
5+
navOrder: 4
6+
slug: "/build-and-code"
7+
hero:
8+
title: "Build Beatbox, flash the firmware, start streaming data."
9+
subtitle: "Open hardware, open firmware, and open APIs."
10+
sections:
11+
- type: "steps"
12+
title: "Hardware"
13+
steps:
14+
- "Download CAD, STL, PCB, and wiring diagrams from the Beatbox repository."
15+
- "Order components using the Bill of Materials."
16+
- "Assemble the chamber and modules following the build guide."
17+
- "<!-- TODO: link exact GitHub repo and hardware docs. -->"
18+
- type: "steps"
19+
title: "Firmware"
20+
steps:
21+
- "Install the toolchain for the chosen microcontroller."
22+
- "Clone the firmware repository."
23+
- "Configure the build for your hardware variant."
24+
- "Flash the firmware onto the Beatbox controller."
25+
- "<!-- TODO: add exact commands and microcontroller type. -->"
26+
- type: "steps"
27+
title: "Software & API"
28+
steps:
29+
- "Install the Python client package and/or Docker stack."
30+
- "Start the Beatbox server and confirm streaming from the device."
31+
- "Use the REST or WebSocket API to subscribe to events and time-series."
32+
- "Explore the example Jupyter notebooks for analysis workflows."
33+
- type: "text"
34+
title: "Contributing"
35+
body: |
36+
Contributions are welcome. Please follow the coding style and pull request process described in the repository.
37+
38+
<!-- TODO: link CONTRIBUTING.md and issue tracker. -->
39+
---
40+

content/community.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: "Community"
3+
layout: "page"
4+
showInNav: true
5+
navOrder: 6
6+
slug: "/community"
7+
hero:
8+
title: "Build, share, and refine Beatbox together."
9+
subtitle: "A community-driven ecosystem for open behavioral neuroscience tools."
10+
sections:
11+
- type: "text"
12+
title: "Who uses Beatbox?"
13+
body: |
14+
Beatbox is designed for behavioral neuroscience labs, preclinical platforms, and facilities interested in open, ecological monitoring and operant tasks in the home cage.
15+
16+
<!-- TODO: add a map or list of early adopters when available. -->
17+
- type: "links"
18+
title: "Join the community"
19+
links:
20+
- label: "GitHub repository and Discussions"
21+
href: "#"
22+
- label: "Chat server (Discord/Slack/Zulip)"
23+
href: "#"
24+
note: "<!-- TODO: insert actual invite link and chosen platform. -->"
25+
- type: "faq"
26+
title: "FAQ"
27+
items:
28+
- question: "What sensors does Beatbox support?"
29+
answer: "Beatbox supports environmental sensors (temperature, humidity, light) and behavioral sensors such as IR beam breaks, nosepoke sensors, and capacitive touch modules. Exact sensor models can be configured per build."
30+
- question: "Can Beatbox integrate with video-based HCM systems?"
31+
answer: "Yes. Beatbox is designed to complement camera-based systems and can be synchronized via software and, where available, hardware triggers."
32+
- question: "What are the power and network requirements?"
33+
answer: "Typical setups require a stable power source and either USB or Wi-Fi for data transfer. Detailed requirements depend on the final hardware configuration."
34+
- type: "text"
35+
title: "How to cite Beatbox"
36+
body: |
37+
If you use Beatbox in a scientific publication, please cite the Beatbox project and its main reference paper once available.
38+
39+
<!-- TODO: add canonical citation (plain text + BibTeX) once a preprint or paper exists. -->
40+
- type: "list"
41+
title: "Tutorials"
42+
items:
43+
- "Assembly overview"
44+
- "First operant task in the home cage"
45+
- "Basic data analysis with the Python client"
46+
---
47+

content/contact.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: "Contact"
3+
layout: "page"
4+
showInNav: false
5+
slug: "/contact"
6+
hero:
7+
title: "Get in touch about Beatbox."
8+
subtitle: "Questions, collaborations, feedback, and contributions are welcome."
9+
sections:
10+
- type: "contactForm"
11+
title: "Contact form"
12+
fields:
13+
- name: "name"
14+
label: "Name"
15+
type: "text"
16+
required: true
17+
- name: "email"
18+
label: "Email"
19+
type: "email"
20+
required: true
21+
- name: "topic"
22+
label: "Topic"
23+
type: "choice"
24+
options:
25+
- "General question"
26+
- "Building Beatbox"
27+
- "Collaboration"
28+
- "Contributing code or hardware"
29+
- name: "message"
30+
label: "Message"
31+
type: "textarea"
32+
required: true
33+
- name: "recaptcha"
34+
label: "reCAPTCHA"
35+
type: "recaptcha"
36+
required: true
37+
---
38+
39+
You can also reach us via email at **contact@beatbox-hcm.org**.
40+
41+
<!-- TODO: confirm and replace with the actual contact address. -->

0 commit comments

Comments
 (0)