{"id":46026542,"url":"https://github.com/uid0/openmakersuite","last_synced_at":"2026-06-27T02:01:24.266Z","repository":{"id":320677603,"uuid":"1082993492","full_name":"uid0/openmakersuite","owner":"uid0","description":"Open Maker Suite","archived":false,"fork":false,"pushed_at":"2026-06-23T10:47:47.000Z","size":42136,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-23T12:47:47.019Z","etag":null,"topics":["makerspace","management","supplies"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uid0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-25T06:01:23.000Z","updated_at":"2026-06-23T10:21:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"da05dd80-0460-4656-9634-6aced773562f","html_url":"https://github.com/uid0/openmakersuite","commit_stats":null,"previous_names":["uid0/openmakersuite"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/uid0/openmakersuite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uid0%2Fopenmakersuite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uid0%2Fopenmakersuite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uid0%2Fopenmakersuite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uid0%2Fopenmakersuite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uid0","download_url":"https://codeload.github.com/uid0/openmakersuite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uid0%2Fopenmakersuite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34839005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["makerspace","management","supplies"],"created_at":"2026-03-01T03:03:24.394Z","updated_at":"2026-06-27T02:01:24.251Z","avatar_url":"https://github.com/uid0.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenMakerSuite\n\nOpen 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.\n\n## Feature Set\n\nOpen Maker Suite isn't just one component or one application. It's a few things:\n\n1. 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.\n1. 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.\n1. 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.\n1. A QR code reporting system that allows members to report issues with restrooms, lobbies, or equipment.\n\nWith that said, there are a few things that Open Maker Suite isn't:\n\n* 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.\n* 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.\n* A member management solution.\n\n\n## Features\n\n- **📦 Inventory Management**: Track items, quantities, locations, and suppliers\n- **🔄 Automated Reordering**: Smart reorder suggestions based on usage patterns\n- **📱 QR Code Integration**: Generate and scan QR codes for quick item access\n- **📊 Usage Analytics**: Monitor consumption patterns and optimize stock\n- **🏷️ Index Card Generation**: Print physical inventory cards\n- **👥 Multi-User Support**: Role-based access control\n- **📈 Supplier Management**: Track lead times, costs, and performance\n- **🔔 Notifications**: Get alerts for low stock and deliveries\n- **📋 Dashboard**: Real-time overview of inventory status\n\n## 🛠️ Technology Stack\n\n### Backend\n\n- **Django**: Python web framework with REST API\n- **PostgreSQL**: Primary database\n- **Redis**: Caching and background tasks\n- **Celery**: Asynchronous task processing\n- **Docker**: Containerization\n\n### Frontend\n\n- **React**: Modern JavaScript UI framework\n- **TypeScript**: Type-safe JavaScript development\n- **React Router**: Client-side routing\n- **Axios**: HTTP client for API calls\n\n### Infrastructure\n\n- **Docker Compose**: Local development orchestration\n- **GitHub Actions**: CI/CD pipeline\n- **Sentry**: Error tracking and performance monitoring\n\n## 🚀 Quick Start\n\nThe Quick Start below boots a local development stack. For self-hosted or\ncluster deployments, see **[Supported Deployment Paths](docs/deployment-paths.md)**\n(local development, Docker Compose, raw Kubernetes, Helm).\n\n### Prerequisites\n\n- Docker \u0026 Docker Compose\n- Node.js 18+ (for local frontend development)\n- Python 3.11+ (for local backend development)\n\nFor full per-distro install steps, see [`deploy/PREREQUISITES.md`](deploy/PREREQUISITES.md).\n\n### 1. Clone and Setup\n\n```bash\ngit clone https://github.com/your-org/openmakersuite.git\ncd openmakersuite\ncp .env.example .env\n```\n\n### 2. Configure Environment\n\nEdit `.env` with your settings:\n\n```bash\n# Database\nDATABASE_URL=postgresql://postgres:password@db:5432/makerspace_inventory\n\n# Django\nSECRET_KEY=your-secret-key-here\nDEBUG=1\nALLOWED_HOSTS=localhost,127.0.0.1\n\n# Redis\nREDIS_URL=redis://redis:6379/0\n```\n\n### 3. Start Services\n\n```bash\n# Development mode with hot reload\ndocker-compose up -d\n\n# Or use the latest release (production-ready)\n./scripts/verify-release.sh latest\n./deploy.sh\n```\n\n### 4. Initialize Data\n\n```bash\n# Create superuser\ndocker-compose exec backend python manage.py createsuperuser\n\n# Load sample data (optional)\ndocker-compose exec backend python manage.py loaddata fixtures/sample_data.json\n```\n\n### 5. Access the Application\n\n- **Frontend**: http://localhost:3000\n- **Backend API**: http://localhost:8000/api/\n- **Admin Panel**: http://localhost:8000/admin/\n- **API Documentation**: http://localhost:8000/api/docs/\n\n## 📱 Usage\n\n### Basic Workflow\n\n1. **Setup Categories \u0026 Locations**: Organize your inventory structure\n2. **Add Items**: Create inventory items with details and suppliers\n3. **Generate QR Codes**: Print QR codes for easy item identification\n4. **Scan \u0026 Use**: Scan QR codes to log usage and check stock\n5. **Automatic Reorders**: System suggests reorders based on usage patterns\n6. **Receive Deliveries**: Update stock when supplies arrive\n\n### QR Code Scanning\n\nAccess the scanner at `/scan/:itemId` or use the main scanner page:\n\n- **Logged Users**: Manual reorder form with quantity control\n- **Anonymous Users**: Automatic reorder submission\n- **Real-time Updates**: Instant stock level updates\n\n## 🔧 Development\n\n### Local Development Setup\n\n```bash\n# Backend\ncd backend\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\npip install -r requirements.txt -r requirements-dev.txt\npython manage.py migrate\npython manage.py runserver\n\n# Frontend\ncd frontend\nnpm install\nnpm start\n```\n\n### Code Quality\n\nThe project includes comprehensive linting and testing:\n\n```bash\n# Backend\ncd backend\nblack .                    # Code formatting\nisort .                    # Import sorting\nflake8 .                   # Style checking\nbandit -r .               # Security scanning\npytest --cov             # Tests with coverage\n\n# Frontend\ncd frontend\nnpm run lint              # ESLint checking\nnpm test                  # Jest tests\nnpm run test:coverage     # Coverage report\n```\n\n### Database Migrations\n\n```bash\n# Create new migration\ndocker-compose exec backend python manage.py makemigrations\n\n# Apply migrations\ndocker-compose exec backend python manage.py migrate\n```\n\n## 🧪 Testing\n\n### Automated Testing\n\nGitHub Actions runs comprehensive tests on every push:\n\n- ✅ Backend unit \u0026 integration tests (pytest)\n- ✅ Frontend component tests (Jest/React Testing Library)\n- ✅ Code quality checks (Black, isort, flake8, ESLint)\n- ✅ Security scanning (Bandit, Safety, Gitleaks)\n- ✅ Docker build verification\n- ✅ Coverage reporting (Codecov)\n\n### Manual Testing\n\n```bash\n# Run specific test suites\ndocker-compose exec backend pytest inventory/tests/\ndocker-compose exec backend pytest reorder_queue/tests/\n\n# Frontend tests\ncd frontend \u0026\u0026 npm test\n\n# Integration tests with test database\ndocker-compose -f docker-compose.test.yml up --build\n```\n\n## 🔐 Security\n\nSecurity is a top priority with multiple layers of protection:\n\n- **🔒 Authentication**: JWT-based authentication system\n- **🛡️ Permissions**: Role-based access control (RBAC)\n- **🔍 Scanning**: Automated security vulnerability scanning\n- **🔐 Secrets**: No hardcoded credentials or API keys\n- **📊 Monitoring**: Sentry integration for security issue tracking\n- **✅ Validation**: Input validation and sanitization\n- **🔒 HTTPS**: SSL/TLS encryption in production\n\n### Security Scanning\n\n```bash\n# Backend security checks\nbandit -r backend/\nsafety check --json\n\n# Frontend dependency audit\ncd frontend \u0026\u0026 npm audit\n\n# Git secrets scanning\ngitleaks detect\n```\n\n## 📦 Deployment\n\n### Production Deployment\n\n1. **Download Latest Release**:\n\n   ```bash\n   ./scripts/verify-release.sh latest\n   ```\n\n2. **Configure Environment**:\n\n   ```bash\n   cp .env.example .env\n   # Edit .env with production settings\n   ```\n\n3. **Deploy**:\n   ```bash\n   ./deploy.sh\n   ```\n\n### Environment Variables\n\nKey production environment variables:\n\n```bash\n# Security\nSECRET_KEY=your-production-secret-key\nDEBUG=0\nALLOWED_HOSTS=yourdomain.com\n\n# Database\nDATABASE_URL=postgresql://user:pass@host:5432/dbname\n\n# Monitoring\nSENTRY_DSN=https://your-sentry-dsn\nSENTRY_ENVIRONMENT=production\n\n# Email (optional)\nEMAIL_HOST=smtp.yourdomain.com\nEMAIL_PORT=587\nEMAIL_USE_TLS=1\n```\n\n### Reverse Proxy Setup\n\nExample Nginx configuration:\n\n```nginx\nserver {\n    listen 80;\n    server_name yourdomain.com;\n\n    location / {\n        proxy_pass http://localhost:3000;\n        proxy_set_header Host $host;\n    }\n\n    location /api/ {\n        proxy_pass http://localhost:8000;\n        proxy_set_header Host $host;\n    }\n}\n```\n\n## 📖 Documentation\n\n- **🌐 [API Documentation](docs/api.md)**: REST API reference\n\n## 🤝 Contributing\n\nWe welcome contributions! Please read our [Contributing Guidelines](CONTRIBUTING.md):\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Commit** your changes (`git commit -m 'Add amazing feature'`)\n4. **Push** to the branch (`git push origin feature/amazing-feature`)\n5. **Open** a Pull Request\n\n### Development Workflow\n\n1. **Issues**: Check existing issues or create new ones\n2. **Testing**: Ensure all tests pass locally\n3. **Code Quality**: Run linting and formatting tools\n4. **Documentation**: Update docs for new features\n5. **Review**: Respond to code review feedback\n\n## 📊 Monitoring \u0026 Analytics\n\n### Sentry Integration\n\nOpenMakerSuite integrates with Sentry for:\n\n- **🐛 Error Tracking**: Automatic error capture and reporting\n- **📈 Performance Monitoring**: API response times and database queries\n- **📱 Release Tracking**: Associate errors with specific releases\n- **🔔 Alerting**: Real-time notifications for critical issues\n\nTo set this up for use in your own environment, please update the `SENTRY_DSN` variable in the .env file.\n\n### Metrics Dashboard\n\nThe admin dashboard provides:\n\n- 📊 Inventory levels and trends\n- 📈 Usage patterns and analytics\n- 🔄 Reorder queue status\n- 👥 User activity logs\n- 📦 Supplier performance metrics\n\n## 🛟 Support\n\n### Getting Help\n\n- **📖 Documentation**: Check the docs folder for detailed guides\n- **🐛 Issues**: Report bugs on GitHub Issues\n- **💬 Discussions**: Join GitHub Discussions for questions\n- **📧 Security**: Email security issues to me AT ianwilson DOT org.\n\n### Community\n\n- **🎯 Roadmap**: See planned features in GitHub Projects\n- **🎉 Releases**: Follow release notes for updates\n- **⭐ Star**: Star the repo if you find it useful!\n\n## 📄 License\n\nThis project is licensed under the AGPL License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- **Django** community for the excellent web framework\n- **React** team for the powerful UI library\n- **Sigstore** for keyless cryptographic signing\n- **PostgreSQL** for robust database functionality\n- **All contributors** who help improve OpenMakerSuite\n- **Hive13** Cincinnati's Premier Makerspace\n- **Dallas Makerspace** The biggest makerspace in terms of membership count in the US, where I'm currently the COO.\n\n---\n\n**Built with ❤️ my makers, for the maker community**\n\n_OpenMakerSuite helps makerspaces focus on creating instead of managing inventory._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuid0%2Fopenmakersuite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuid0%2Fopenmakersuite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuid0%2Fopenmakersuite/lists"}