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.
- 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.
- 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:
- 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.
- 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.
- Endpoint:
/api/additem - Method:
POST - Description: Adds a new storage item to the database.
- Request Body (JSON):
{ "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
- 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):
{ "id": "integer", "ip": "string", "positions": "integer" }
- Endpoint:
/api/delete - Method:
POST - Description: Deletes a storage item by its ID.
- Request Body (JSON):
{ "id": "integer" }
- Endpoint:
/api/edit - Method:
POST - Description: Edits an existing storage item by its ID.
- Request Body (JSON):
{ "id": "integer", "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
- Endpoint:
/api/move - Method:
POST - Description: Moves a storage item to a different node and position.
- Request Body (JSON):
{ "id": "integer", "node": "integer", "position": "integer" }
- 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):
{ "id": "integer" }
- 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
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Build and run the Docker containers:
docker compose up -d --build- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/Server - Create a Python virtual environment and install the requirements:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
python3 main.py
- 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.
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Install the required libraries and dependencies:
platformio run
- Connect your ESP32 to your computer.
- Edit the
include/.env.templatefile and rename it toinclude/.env. - Upload the firmware to the ESP32:
platformio run --target upload
- Open the serial monitor to check if the installation was successful:
platformio device monitor
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/App - Create a Python virtual environment and install the requirements:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
python3 main.py
- 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.
Contributions are welcome! Please fork the repository and submit a pull request with your changes.

