

Indicators
- Size
- 44.5 × 18 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 12
- Nets
- 4
- Pads
- 24
- Tracks, vias
- 36, 0
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 4 Nov 2024
- Updated
- 27 Feb 2025
Overview
Indicators is an open-source printed circuit board by Pegoku, from the Pegoku/StorageSystem repository on GitHub. It is a 2-layer board of 44.5 × 18 mm with 12 parts on 4 nets, routed with 36 tracks and 0 vias.
It is built around the WS2812B-B/T. Its parts include 4 connectors, 1 capacitor and 1 diode.
Main components
1README
README.mdSmart Storage System
Overview
This is a versatile and customizable Storage System. It has the ability to combine multiple Storage Systems via the use of ESP32 (a cheap microcontroller) as controllers for the neopixels (indicators). It has a simple but useful WebUI and an API. The storage bins are compatible with Gridfinity 1x4 bins.
Features
- Gridfinity Compatible: Easily integrates with the Gridfinity storage system for modular storage.
- Parametric Design: Easily customizable bins.
- ESP32 Controlled: Scalable system using ESP32 as wireless controllers.
- Neopixels: Dynamic lighting indicators.
- Web UI to Manage Storage: User-friendly web interface for managing the items.
- API: Simple to use API.
- Node PCB: Simple ESP32-Wroom based PCB with the necessary connectors.
Media
Main Website

Add Item Menu

API Endpoints
List Storage Items
- Endpoint:
/api/list - Method:
GET - Description: Retrieves a list of all storage items. Supports optional query parameters for filtering by category, node, and position.
- Query Parameters:
category(optional): Filter items by category.node(optional): Filter items by node.position(optional): Filter items by position.id(optional): Filter items by ID:
Locate Item by ID (GET)
- Endpoint:
/api/locateget - Method:
GET - Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Query Parameters:
id(required): The ID of the item to locate.
List Nodes
- Endpoint:
/api/nodes - Method:
GET - Description: Retrieves a list of all nodes. Supports optional query parameter for filtering by ID.
- Query Parameters:
id(optional): Filter nodes by ID.
Add Storage Item
- Endpoint:
/api/additem - Method:
POST - Description: Adds a new storage item to the database.
- Request Body (JSON):
json { "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
Add Node
- Endpoint:
/api/addnode - Method:
POST - Description: Adds a new node to the database or updates an existing node if the ID already exists.
- Request Body (JSON):
json { "id": "integer", "ip": "string", "positions": "integer" }
Delete Storage Item
- Endpoint:
/api/delete - Method:
POST - Description: Deletes a storage item by its ID.
- Request Body (JSON):
json { "id": "integer" }
Edit Storage Item
- Endpoint:
/api/edit - Method:
POST - Description: Edits an existing storage item by its ID.
- Request Body (JSON):
json { "id": "integer", "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
Move Storage Item
- Endpoint:
/api/move - Method:
POST - Description: Moves a storage item to a different node and position.
- Request Body (JSON):
json { "id": "integer", "node": "integer", "position": "integer" }
Locate Item by ID (POST)
- Endpoint:
/api/locate - Method:
POST - Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Request Body (JSON):
json { "id": "integer" }
Getting Started
Prerequisites
- PlatformIO installed on your development environment.
- ESP32 DevBoard or Node PCB .
- Neopixels (WS2812B) or Indicator PCB.
- Some wire.
- Edit Code/App/static/script.js
servervariable - Edit Code/Node/include/.env with the correct settings
Docker (API + Website)
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Build and run the Docker containers:
docker compose up -d --buildAPI
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/Server - Create a Python virtual environment and install the requirements:
sh python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
sh python3 main.py
API (Docker)
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem- Build and run the Docker container:
docker buildx build -t storagesystem:server -f server.Dockerfile .
docker run -p 5505:5505 -v ./database.db:/app/database.db storagesystem:server- The API should now be running and accessible at
http://localhost:5505.
ESP32
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Install the required libraries and dependencies:
sh platformio run - Connect your ESP32 to your computer.
- Edit the
include/.env.templatefile and rename it toinclude/.env. - Upload the firmware to the ESP32:
sh platformio run --target upload - Open the serial monitor to check if the installation was successful:
sh platformio device monitor
Website
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/App - Create a Python virtual environment and install the requirements:
sh python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
sh python3 main.py
Website (Docker)
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem- Build and run the Docker container:
docker buildx build -t storagesystem:app -f app.Dockerfile .
docker run -p 5506:5506 storagesystem:app- The website should now be running and accessible at
http://localhost:5506.
Contributing
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
Parts
12| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | TestPoint | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP2, TP3, TP4, TP5, TP6 |
| 2 | Conn_01x03 | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Horizontal | J3, J4 |
| 2 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Horizontal | J1, J2 |
| 1 | C | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | WS2812B-B | easyeda2kicad:LED-SMD_4P-L5.0-W5.0-BL_TC5050RGB | LED1 |
Questions
How big is the Indicators PCB?
It measures 44.5 × 18 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Indicators use?
12 parts, built around the WS2812B-B/T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Indicators KiCad files?
From the Pegoku/StorageSystem repository on GitHub, at the commit this page was made from: the board is PCB/Indicators/Indicators.kicad_pcb and its schematic PCB/Indicators/Indicators.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Indicators design in my own project?
Its repository states no licence, so its author keeps all rights: ask Pegoku before reusing the design.
More from Pegoku/StorageSystem
1- 2 layers36 × 54 mm

Similar boards
- 4 layers118 × 117 mm

Cm4-robot
Twisted-Fields/acorn-robot-electronics
PCB hardware designs in KICAD for Acorn, the precision farming rover from Twisted Fields.
268 parts81 - 4 layers88 × 58 mm

- 4 layers79.5 × 20 mm

Matter usb switch
IvanVeloz/smart-usb-plug
A smart plug for USB with energy measurement and Matter over Thread support
65 parts2GPL-3.0 - 4 layers130 × 105 mm

HomeDeck
Kilan777/HomeDeck
Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)
228 parts1 - 2 layers831.3 × 10.7 mm

Octave flex
lxdinh/Piano_Prof
Custom PCB hardware controller integrated with a responsive LED strip, designed to provide real-time feedback for interactive piano instruction
121 parts1 - 4 layers67 × 77.5 mm

ECE148 Mainboard
UCSD-Silberman-Classes-and-Projects/148-winter-2025-final-project-team-11
148-winter-2025-final-project-team-11 created by GitHub Classroom
78 parts1 - 2 layers98 × 100 mm

- 4 layers195 × 159 mm
