Skip to content

uid0/openmakersuite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

OpenMakerSuite

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.

Feature Set

Open Maker Suite isn't just one component or one application. It's a few things:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Features

  • πŸ“¦ 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

πŸ› οΈ Technology Stack

Backend

  • Django: Python web framework with REST API
  • PostgreSQL: Primary database
  • Redis: Caching and background tasks
  • Celery: Asynchronous task processing
  • Docker: Containerization

Frontend

  • React: Modern JavaScript UI framework
  • TypeScript: Type-safe JavaScript development
  • React Router: Client-side routing
  • Axios: HTTP client for API calls

Infrastructure

  • Docker Compose: Local development orchestration
  • GitHub Actions: CI/CD pipeline
  • Sentry: Error tracking and performance monitoring

πŸš€ Quick Start

Prerequisites

  • Docker & Docker Compose
  • Node.js 18+ (for local frontend development)
  • Python 3.11+ (for local backend development)

1. Clone and Setup

git clone https://github.com/your-org/openmakersuite.git
cd openmakersuite
cp .env.example .env

2. Configure Environment

Edit .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

3. Start Services

# Development mode with hot reload
docker-compose up -d

# Or use the latest release (production-ready)
./scripts/verify-release.sh latest
./deploy.sh

4. Initialize Data

# 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

5. Access the Application

πŸ“± Usage

Basic Workflow

  1. Setup Categories & Locations: Organize your inventory structure
  2. Add Items: Create inventory items with details and suppliers
  3. Generate QR Codes: Print QR codes for easy item identification
  4. Scan & Use: Scan QR codes to log usage and check stock
  5. Automatic Reorders: System suggests reorders based on usage patterns
  6. Receive Deliveries: Update stock when supplies arrive

QR Code Scanning

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

πŸ”§ Development

Local Development Setup

# 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 start

Code Quality

The 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

Database Migrations

# Create new migration
docker-compose exec backend python manage.py makemigrations

# Apply migrations
docker-compose exec backend python manage.py migrate

πŸ§ͺ Testing

Automated Testing

GitHub 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)

Manual Testing

# 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 --build

πŸ” Security

Security 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

Security Scanning

# Backend security checks
bandit -r backend/
safety check --json

# Frontend dependency audit
cd frontend && npm audit

# Git secrets scanning
gitleaks detect

πŸ“¦ Deployment

Production Deployment

  1. Download Latest Release:

    ./scripts/verify-release.sh latest
  2. Configure Environment:

    cp .env.example .env
    # Edit .env with production settings
  3. Deploy:

    ./deploy.sh

Environment Variables

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=1

Reverse Proxy Setup

Example 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;
    }
}

πŸ“– Documentation

🀝 Contributing

We welcome contributions! Please read our Contributing Guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Workflow

  1. Issues: Check existing issues or create new ones
  2. Testing: Ensure all tests pass locally
  3. Code Quality: Run linting and formatting tools
  4. Documentation: Update docs for new features
  5. Review: Respond to code review feedback

πŸ“Š Monitoring & Analytics

Sentry Integration

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.

Metrics Dashboard

The admin dashboard provides:

  • πŸ“Š Inventory levels and trends
  • πŸ“ˆ Usage patterns and analytics
  • πŸ”„ Reorder queue status
  • πŸ‘₯ User activity logs
  • πŸ“¦ Supplier performance metrics

πŸ›Ÿ Support

Getting Help

  • πŸ“– 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.

Community

  • 🎯 Roadmap: See planned features in GitHub Projects
  • πŸŽ‰ Releases: Follow release notes for updates
  • ⭐ Star: Star the repo if you find it useful!

πŸ“„ License

This project is licensed under the AGPL License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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.

About

Open Maker Suite

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •