A comprehensive 3D printing management solution. Built with React, TypeScript, and SQLite, SIMS helps you track your filament collection, manage printers, maintain a parts inventory, organize print jobs, and calculate product pricing with a clean, responsive interface.
-
Comprehensive Filament Tracking
- Material types and manufacturers
- Quantity management with minimum stock alerts
- Color visualization
- Detailed notes and specifications
-
3D Printer Management
- Track all your printers in one place
- Associate printers with filament types
- Monitor printer status and maintenance
-
Print Queue System
- Manage ongoing and upcoming print jobs
- Assign prints to specific printers
- Track print status and completion
- Select filament colors for each print
-
Purchase List
- Automated low-stock tracking
- Shopping list for filament reordering
- Track filament suppliers and pricing
-
Parts Inventory
- Monitor replacement and spare parts
- Track part quantities with minimum stock alerts
- Associate parts with specific printers
- Store supplier information and part numbers
-
Product Pricing & Profitability
- Calculate costs and pricing for printed products
- Track filament usage per product
- Labor cost calculations with hourly rates
- Profit margin analysis and suggested pricing
- Wear & tear cost estimations
- Platform fee calculations for online sellers
-
Smart Organization
- Sort by name, material, quantity, or manufacturer
- Search functionality across all inventory
- Quick edit and delete operations
- Filter products, parts, and filaments
-
Robust Architecture
- Offline-first with SQLite database
- Automatic database migrations
- RESTful API
- Modern, responsive UI
- Containerized with Docker for easy deployment
- React 18+ with TypeScript
- Vite for fast builds and development
- Tailwind CSS for modern styling
- HeadlessUI for accessible components
- React Hook Form for form management
- Express.js with TypeScript
- SQLite3 for persistent storage
- Automated database migrations
- CORS enabled API
-
Clone the repository:
git clone https://github.com/Shpigford/sims.git cd sims -
Install dependencies:
# Install backend dependencies npm install # Install frontend dependencies cd frontend npm install cd ..
-
Start the development servers:
# Run both frontend and backend npm run dev:all # Or run them separately: npm run frontend # Frontend only npm run backend # Backend only
-
Open your browser and navigate to:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8175
SIMS is containerized and can be easily installed using Docker. There are two options for Docker installation:
-
Create a
docker-compose.ymlfile with the following content:version: '3.8' services: app: image: joshpigford/sims:latest volumes: - db-data:/app/db ports: - "5173:5173" - "8175:8175" restart: unless-stopped volumes: db-data: name: sims-db-data
-
Run the container:
docker-compose up -d
-
Access SIMS at http://localhost:5173
-
Clone the repository:
git clone https://github.com/Shpigford/sims.git cd sims -
Build and run with Docker Compose:
docker-compose -f docker-compose.yml up -d --build
-
Access SIMS at http://localhost:5173
For production use, you may want to enable automatic updates and backups. Create a docker-compose.prod.yml file with the following content:
version: '3.8'
services:
app:
image: joshpigford/sims:latest
volumes:
- db-data:/app/db
ports:
- "5173:5173"
- "8175:8175"
restart: unless-stopped
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 30
restart: unless-stopped
backup:
image: offen/docker-volume-backup:v2
environment:
BACKUP_CRON_EXPRESSION: "0 4 * * *" # Runs at 4 AM daily
BACKUP_RETENTION_DAYS: "7" # Keep backups for 7 days
BACKUP_FILENAME: "sims-backup-%Y-%m-%d"
volumes:
- db-data:/backup/sims-db:ro # Mount the database volume
- ./backups:/archive # Local folder to store backups
depends_on:
- app
volumes:
db-data:
name: sims-db-dataRun with:
docker-compose -f docker-compose.prod.yml up -dSIMS uses SQLite for data storage, providing several benefits:
- Portable: All data is stored in a single file (
db/filaments.db) - Offline-First: No internet connection required
- Zero Configuration: No separate database server needed
- Automatic Backups: Easy to backup with file system tools
GET /api/filaments- List all filamentsPOST /api/filaments- Add a new filamentPUT /api/filaments/:id- Update a filamentDELETE /api/filaments/:id- Delete a filament
GET /api/printers- List all printersPOST /api/printers- Add a new printerPUT /api/printers/:id- Update a printerDELETE /api/printers/:id- Delete a printer
GET /api/print-queue- List all print queue itemsPOST /api/print-queue- Add a new print queue itemPUT /api/print-queue/:id- Update a print queue itemDELETE /api/print-queue/:id- Delete a print queue item
GET /api/purchase-list- List all purchase itemsPOST /api/purchase-list- Add a new purchase itemPUT /api/purchase-list/:id- Update a purchase itemDELETE /api/purchase-list/:id- Delete a purchase item
GET /api/parts- List all partsPOST /api/parts- Add a new partPUT /api/parts/:id- Update a partDELETE /api/parts/:id- Delete a part
GET /api/products- List all productsPOST /api/products- Add a new productPUT /api/products/:id- Update a productDELETE /api/products/:id- Delete a product
GET /api/settings- Get all settingsPUT /api/settings- Update settings
Contributions are welcome! Please feel free to submit a Pull Request.
