Open Maker Suite (OMS) solves a problem that I encountered with my time at Dallas Makerspace. It's an inventory management/asset management system that's designed for Makerspaces and collaborative workshops. Use it to track supplies, manage reorders, manage maintenance on equipment, and keep your space running.
Open Maker Suite isn't just one component or one application. It's a few things:
- A inventory system that's based on Kanban principles. For each item that exists, a 3x5" index card is created that contains the name of the item, where it should live, and the general amount that we like to keep on hand and how much is re-ordered. When any user of the space (no login to OMS needed) scans a QR code, your team will be prompted that the material needs to be re-ordered. When you click on that request on the admin dashboard, you'll see a list of suppliers that you've used in the past, what their per-unit cost is, as well as their lead time for obtaining the part (all based on historical orders). This gives you the flexibiltiy to spend your Makerspace's money responsibily and give you the most bang for your buck.
- An asset management system that allows you to specify replaceable parts from inventory items (like 9-volt batteries to an exit alarm) and logs when those items were replaced.
- A device management system that allows you to enable or disable a device via MQTT, along with disabling a device for safety or maintenance reasons.
- A QR code reporting system that allows members to report issues with restrooms, lobbies, or equipment.
With that said, there are a few things that Open Maker Suite isn't:
- An ERP. There are better solutions for small (or big!) makerspaces, and let's be honest, an ERP system isn't one of them. I'm not responsible for finance at my Makerspace, but, I am responsible for being a prudent spender of my member's fees to keep the place running smoothly. I track the prices of items so that I can evaluate the price vs time balance that I frequently have to ask myself about.
- An Inventory Tracking Solution. A makerspace has a LOT of different personalities, a lot of various degrees of technical ability, and some users don't have smartphones...so, this isn't designed to hold inventory of commonly used items. Items that a specific team (like a Facilities/Logistics team) may only use can be inventory controlled for assets, but, if you want an exact count of the number of toilet paper rolls that you have remaining, this isn't the solution for you.
- A member management solution.
- π¦ Inventory Management: Track items, quantities, locations, and suppliers
- π Automated Reordering: Smart reorder suggestions based on usage patterns
- π± QR Code Integration: Generate and scan QR codes for quick item access
- π Usage Analytics: Monitor consumption patterns and optimize stock
- π·οΈ Index Card Generation: Print physical inventory cards
- π₯ Multi-User Support: Role-based access control
- π Supplier Management: Track lead times, costs, and performance
- π Notifications: Get alerts for low stock and deliveries
- π Dashboard: Real-time overview of inventory status
- Django: Python web framework with REST API
- PostgreSQL: Primary database
- Redis: Caching and background tasks
- Celery: Asynchronous task processing
- Docker: Containerization
- React: Modern JavaScript UI framework
- TypeScript: Type-safe JavaScript development
- React Router: Client-side routing
- Axios: HTTP client for API calls
- Docker Compose: Local development orchestration
- GitHub Actions: CI/CD pipeline
- Sentry: Error tracking and performance monitoring
- Docker & Docker Compose
- Node.js 18+ (for local frontend development)
- Python 3.11+ (for local backend development)
git clone https://github.com/your-org/openmakersuite.git
cd openmakersuite
cp .env.example .envEdit .env with your settings:
# Database
DATABASE_URL=postgresql://postgres:password@db:5432/makerspace_inventory
# Django
SECRET_KEY=your-secret-key-here
DEBUG=1
ALLOWED_HOSTS=localhost,127.0.0.1
# Redis
REDIS_URL=redis://redis:6379/0# Development mode with hot reload
docker-compose up -d
# Or use the latest release (production-ready)
./scripts/verify-release.sh latest
./deploy.sh# Create superuser
docker-compose exec backend python manage.py createsuperuser
# Load sample data (optional)
docker-compose exec backend python manage.py loaddata fixtures/sample_data.json- Frontend: http://localhost:3000
- Backend API: http://localhost:8000/api/
- Admin Panel: http://localhost:8000/admin/
- API Documentation: http://localhost:8000/api/docs/
- Setup Categories & Locations: Organize your inventory structure
- Add Items: Create inventory items with details and suppliers
- Generate QR Codes: Print QR codes for easy item identification
- Scan & Use: Scan QR codes to log usage and check stock
- Automatic Reorders: System suggests reorders based on usage patterns
- Receive Deliveries: Update stock when supplies arrive
Access the scanner at /scan/:itemId or use the main scanner page:
- Logged Users: Manual reorder form with quantity control
- Anonymous Users: Automatic reorder submission
- Real-time Updates: Instant stock level updates
# Backend
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt -r requirements-dev.txt
python manage.py migrate
python manage.py runserver
# Frontend
cd frontend
npm install
npm startThe project includes comprehensive linting and testing:
# Backend
cd backend
black . # Code formatting
isort . # Import sorting
flake8 . # Style checking
bandit -r . # Security scanning
pytest --cov # Tests with coverage
# Frontend
cd frontend
npm run lint # ESLint checking
npm test # Jest tests
npm run test:coverage # Coverage report# Create new migration
docker-compose exec backend python manage.py makemigrations
# Apply migrations
docker-compose exec backend python manage.py migrateGitHub Actions runs comprehensive tests on every push:
- β Backend unit & integration tests (pytest)
- β Frontend component tests (Jest/React Testing Library)
- β Code quality checks (Black, isort, flake8, ESLint)
- β Security scanning (Bandit, Safety, Gitleaks)
- β Docker build verification
- β Coverage reporting (Codecov)
# Run specific test suites
docker-compose exec backend pytest inventory/tests/
docker-compose exec backend pytest reorder_queue/tests/
# Frontend tests
cd frontend && npm test
# Integration tests with test database
docker-compose -f docker-compose.test.yml up --buildSecurity is a top priority with multiple layers of protection:
- π Authentication: JWT-based authentication system
- π‘οΈ Permissions: Role-based access control (RBAC)
- π Scanning: Automated security vulnerability scanning
- π Secrets: No hardcoded credentials or API keys
- π Monitoring: Sentry integration for security issue tracking
- β Validation: Input validation and sanitization
- π HTTPS: SSL/TLS encryption in production
# Backend security checks
bandit -r backend/
safety check --json
# Frontend dependency audit
cd frontend && npm audit
# Git secrets scanning
gitleaks detect-
Download Latest Release:
./scripts/verify-release.sh latest
-
Configure Environment:
cp .env.example .env # Edit .env with production settings -
Deploy:
./deploy.sh
Key production environment variables:
# Security
SECRET_KEY=your-production-secret-key
DEBUG=0
ALLOWED_HOSTS=yourdomain.com
# Database
DATABASE_URL=postgresql://user:pass@host:5432/dbname
# Monitoring
SENTRY_DSN=https://your-sentry-dsn
SENTRY_ENVIRONMENT=production
# Email (optional)
EMAIL_HOST=smtp.yourdomain.com
EMAIL_PORT=587
EMAIL_USE_TLS=1Example Nginx configuration:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
}
}- π API Documentation: REST API reference
We welcome contributions! Please read our Contributing Guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Issues: Check existing issues or create new ones
- Testing: Ensure all tests pass locally
- Code Quality: Run linting and formatting tools
- Documentation: Update docs for new features
- Review: Respond to code review feedback
OpenMakerSuite integrates with Sentry for:
- π Error Tracking: Automatic error capture and reporting
- π Performance Monitoring: API response times and database queries
- π± Release Tracking: Associate errors with specific releases
- π Alerting: Real-time notifications for critical issues
To set this up for use in your own environment, please update the SENTRY_DSN variable in the .env file.
The admin dashboard provides:
- π Inventory levels and trends
- π Usage patterns and analytics
- π Reorder queue status
- π₯ User activity logs
- π¦ Supplier performance metrics
- π Documentation: Check the docs folder for detailed guides
- π Issues: Report bugs on GitHub Issues
- π¬ Discussions: Join GitHub Discussions for questions
- π§ Security: Email security issues to me AT ianwilson DOT org.
- π― Roadmap: See planned features in GitHub Projects
- π Releases: Follow release notes for updates
- β Star: Star the repo if you find it useful!
This project is licensed under the AGPL License - see the LICENSE file for details.
- Django community for the excellent web framework
- React team for the powerful UI library
- Sigstore for keyless cryptographic signing
- PostgreSQL for robust database functionality
- All contributors who help improve OpenMakerSuite
- Hive13 Cincinnati's Premier Makerspace
- Dallas Makerspace The biggest makerspace in terms of membership count in the US, where I'm currently the COO.
Built with β€οΈ my makers, for the maker community
OpenMakerSuite helps makerspaces focus on creating instead of managing inventory.