MahaPrinting lets you manage user-uploaded prints in a print queue, and dispatch those prints to multiple printers managed by OctoPrint, all from a single UI.
MahaPrinting was designed for a convention/hackathon where the participants can request 3D prints for their projects.
That causes some headache prioritizing and tracking prints, and coordinating available printers.
MahaPrinting attempts to solve these problems.
-
GCODE/STL support:
- STL files can be downloaded, sliced and re-uploaded as GCODE by the manager
- GCODE files can be sent directly to the printers
-
A user can upload prints and view the status (in queue, printing, done...) of the prints he uploaded in a mobile-friendly web page:
-
The manager can see the list of uploaded user prints, look at a preview of the STL/GCODE and decide to which printer this print should be sent:
Note: To open the management page, browse to /manage
in the address bar. This page can only be opened by the admin.
Requirements:
- Docker & docker-compose installed
- Active internet connection
Steps:
- Open a terminal in the root directory of the project
- Run
docker-compose build
- Open a terminal in the root directory of the project
- Run
docker-compose up -d
Important: In order to open the /manage
page, you need to make sure your user_id
cookie is the same as the ADMIN_USER_ID
environment variable inside of the configuration file docker-compose.yml
.
Developer Guide
- node & npm
- python 3.8.2
- pipenv
Use VSCode and open the client and server folders as two seperate workspaces (instances) of VSCode for an easy development experience.
- Open terminal in the internal client folder
- Install required packages by running
npm install
To start the client, run npm start
.
To enter admin-only pages, make sure your user_id cookie is the same as ADMIN_USER_ID.
- Open terminal in the internal server folder
- Install required packages by running
pipenv install --dev
- Configure environment variables:
- Create a file named
.env
in the server folder with the following content:
SQLITE_DB_PATH=./mahaprinting.db ALLOW_CORS=TRUE ADMIN_USER_ID=<INSERT DESIRED USER_ID FROM COOKIES>
- The
ADMIN_USER_ID
value should be the same as theuser_id
cookie in the client of a manager. You can put a temporary value and fill this one later.
- Create a file named
To start the server, run flask run
in a shell inside the venv. (To open a shell inside the venv, run pipenv shell
)
On windows, pipenv sometimes screws up adding the venv to the PATH on git bash. you can fix this by editing the "activate" script (just "activate", no file extension) in the bin folder of the venv and changing the path assigned to
VIRTUAL_ENV
to be in a format compatible with git bash.
To easily open theactivate
script for editing, run the following command in git bash from the server project directory:code "\$(pipenv --venv)/Scripts/activate"
Alternatively, you can use VSCode's debug capabilities:
- copy the following
launch.json
into the.vscode
folder in your python workspace, and then just hitF5
!
Click here for the VSCode ".vscode/launch.json" file content that helps you debug the server easily
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "app.py",
"FLASK_ENV": "development",
"FLASK_DEBUG": "0"
},
"args": ["run", "--no-debugger", "--no-reload"],
"jinja": true
}
]
}