{"id":46481402,"url":"https://github.com/yusufm/smallfactory","last_synced_at":"2026-03-06T08:16:21.535Z","repository":{"id":138874111,"uuid":"564548334","full_name":"yusufm/smallfactory","owner":"yusufm","description":"A Git-native toolset (PLM, inventory, etc.) for small teams to manage the things they make.","archived":false,"fork":false,"pushed_at":"2026-02-25T07:07:06.000Z","size":5958,"stargazers_count":14,"open_issues_count":5,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-25T11:58:00.090Z","etag":null,"topics":["bom","erp","git-based","hardware","inventory-management","makers","manufacturing","parts-management","plm","small-business"],"latest_commit_sha":null,"homepage":"https://www.exploresf.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yusufm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-11T00:24:31.000Z","updated_at":"2026-02-25T07:07:10.000Z","dependencies_parsed_at":"2025-12-29T08:02:40.074Z","dependency_job_id":"626a7141-59fc-46f3-bc49-5d053f37daa9","html_url":"https://github.com/yusufm/smallfactory","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yusufm/smallfactory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufm%2Fsmallfactory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufm%2Fsmallfactory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufm%2Fsmallfactory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufm%2Fsmallfactory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusufm","download_url":"https://codeload.github.com/yusufm/smallfactory/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufm%2Fsmallfactory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30167206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bom","erp","git-based","hardware","inventory-management","makers","manufacturing","parts-management","plm","small-business"],"created_at":"2026-03-06T08:16:21.052Z","updated_at":"2026-03-06T08:16:21.525Z","avatar_url":"https://github.com/yusufm.png","language":"Python","funding_links":["https://ko-fi.com/T6T21UH4X8"],"categories":[],"sub_categories":[],"readme":"# smallFactory\n\n[![GitHub stars](https://img.shields.io/github/stars/yusufm/smallfactory?style=flat-square)](https://github.com/yusufm/smallfactory/stargazers)\n[![License](https://img.shields.io/github/license/yusufm/smallfactory?style=flat-square)](https://github.com/yusufm/smallfactory/blob/main/LICENSE)\n[![Last Commit](https://img.shields.io/github/last-commit/yusufm/smallfactory?style=flat-square)](https://github.com/yusufm/smallfactory/commits/main)\n\n[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord\u0026logoColor=white)](https://discord.gg/g3QSuVmvBt)\n\n[![Ko-fi](https://img.shields.io/badge/Support-smallFactory-FF5E5B?logo=kofi\u0026logoColor=white\u0026style=flat-square)](https://ko-fi.com/T6T21UH4X8)\n\n\n**For solo founders and tiny hardware teams who are tired of spreadsheet chaos but don't need enterprise PLM.**\n\n![smallFactory Dashboard](docs/img/screenshots/dashboard.png)\n\n## What is smallFactory\n\nA Git-native toolset for small teams to manage the things they make.\n\n- Design\n  - Manage part/assembly metadata, drawings/CAD/notes files, BOMs, etc.\n- Snapshot\n  - 1-click revision control of parts.\n- Build\n  - Track built parts, serial numbers, test results, photos, etc.\n  - Manage inventory.\n\n## Why smallFactory\n\nRead the [smallFactory Story](docs/meta/the-smallfactory-story.md)\n\n- Built for small teams: minimal setup, low overhead, fast workflows.\n- Git-native and portable: plain files under Git; diffs, reviews, history. No database, no lock‑in.\n- Opinionated, simple standard: Entities, BOMs, Revisions, Inventory, Files in a consistent layout.\n- Tools that fit your flow: CLI and lightweight web UI; human/JSON/YAML output; commits locally, pushes if origin exists.\n- Extensible by design: readable YAML/JSON so you can script, automate, and integrate.\n\n## Prefer turnkey? smallFactory Cloud (Fully Managed)\n\nWant everything smallFactory offers without running servers? smallFactory Cloud is our fully managed, multi-tenant hosting—so you can focus on building, not babysitting infrastructure.\n\nGet started: https://www.exploresf.com\n\n## Quickstart\n\nGet up and running with smallFactory inventory management in a few simple steps:\n\n```sh\n# Setup (once)\n# Prereqs: Python 3 and Git installed\n# Clone the smallFactory core repo\n$ git clone https://github.com/yusufm/smallfactory.git smallfactory\n$ cd smallfactory\n\n# Optional: create and activate a virtual environment\n$ python3 -m venv .venv \u0026\u0026 source .venv/bin/activate\n\n# Install CLI dependencies\n$ python3 -m pip install -r requirements.txt\n# Optional: Web UI + MCP dependencies (if you plan to run the web app / MCP endpoint)\n$ python3 -m pip install -r web/requirements.txt\n\n# Initialize by cloning the example datarepo\n# 1. Fork the sample data repository on GitHub by going to this URL (or through the fork button on the sample repo):\nhttps://github.com/yusufm/smallfactory_test_datarepo/fork\n# 2. Clone using YOUR fork of the sample data repo\n$ python3 sf.py init --github-url git@github.com:\u003cYOUR-USERNAME-HERE\u003e/smallfactory_test_datarepo.git\n\n# Start the web server\n$ python3 sf.py web\n\n# Access the web UI\nhttp://127.0.0.1:8080\n\n# Note: All mutating CLI operations automatically create a Git commit (and push if an origin exists).\n# Commit messages include machine-readable tokens like ::sfid::\u003cSFID\u003e.\n```\n\n## Community\n\nJoin the smallFactory Discord:\nhttps://discord.gg/g3QSuVmvBt\n\n## Features at a glance\n\n### Design\n- **Entities** — Organize parts, assemblies, and locations with names, tags, and metadata.\n- **Files workspace** — Upload, organize, and download design files and documents; snapshots captured in revisions.\n- **BOM** — Manage bills of materials with alternates; edit in the app; see structure at a glance.\n\n![Entities list](docs/img/screenshots/entity_view_overview.png)\n![BOM tree](docs/img/screenshots/bom_tree.png)\n\n### Build \u0026 release\n- **Revisions** — One‑click, numbered revisions with clear release tracking.\n- **Build events** — Capture timeline events on builds (`b_*`) with notes, tags, and attachments.\n- **Stickers** — Generate QR stickers for parts and locations; print in batches with chosen fields.\n- **Camera capture** — Snap a photo of an invoice or label to auto‑extract parts data.\n- **Vision‑assisted intake** — Extract parts from invoices and batch‑create with review.\n\n![Batch QR stickers](docs/img/screenshots/stickers_batch.png)\n\n### Operate\n- **Inventory** — Track quantities by location; adjust quickly with mobile QR scanning.\n- **Mobile access** — Optimized for phones with simple, touch‑first flows.\n- **Search \u0026 dashboard** — Find parts fast and see key stats at a glance.\n- **QR‑first workflows** — Label, scan, and act quickly on the floor.\n\n![Inventory list](docs/img/screenshots/inventory_dashboard.png)\n\u003cp\u003e\n  \u003cimg src=\"docs/img/screenshots/mobile_adjust_scan_1.jpeg\" width=\"250\"\u003e\n  \u003cimg src=\"docs/img/screenshots/mobile_adjust_scan_2.jpeg\" width=\"250\"\u003e\n\u003c/p\u003e\n\n### Vision\nUse a camera or upload to extract parts from invoices and batch-create entities.\n\n\u003cp\u003e\n  \u003cimg src=\"docs/img/screenshots/mobile_partscan_1.jpeg\" width=\"250\"\u003e\n  \u003cimg src=\"docs/img/screenshots/mobile_partscan_2.jpeg\" width=\"250\"\u003e\n  \u003cimg src=\"docs/img/screenshots/mobile_partscan_3.jpeg\" width=\"250\"\u003e\n\u003c/p\u003e\n\n### Platform\n- **Git‑native workflow** — Your product data lives in Git. Simple, transparent, and portable.\n- **Collaboration \u0026 history** — Work as a team with reviewable changes and a full history.\n- **Local‑first** — Runs on your machine; you control your data and workflow; automatically updates your remote Git repo when configured.\n- **Web UI** — Fast, clean, responsive interface with search and inline editing.\n- **CLI** — Powerful command‑line for automation; human‑ or machine‑readable output.\n- **Validation** — Built‑in checks to catch mistakes early.\n- **Custom fields \u0026 tags** — Capture the details that matter to your business.\n- **Simple onboarding** — Start in minutes with an example repository.\n\n### AI / MCP\n- **Integrated MCP endpoint** — Run once with `sf.py web`; MCP is served at `/mcp` on the same port.\n- **BYO AI client** — Connect Windsurf, Cursor, Claude Desktop, Codex, and other MCP-compatible clients.\n- **Ask free-form questions** — Ask natural-language questions about your parts, builds, inventory, and repair history.\n- **Read-only analytics tools** — Query entities, inventory, BOM, build events, and aggregated repair trends.\n- **Resource compatibility** — Includes MCP resources for clients/modes that prefer resource reads over tool calls.\n\nExample prompts:\n- `Which repairs are most common across all builds for part p_xyz?`\n- `Create a DigiKey order for low-stock items needed to build 5 units of p_xyz.`\n\nQuick start:\n\n```bash\npython3 -m pip install -r web/requirements.txt\npython3 sf.py web --port 8080\n# MCP endpoint: http://127.0.0.1:8080/mcp\n```\n\nSee full setup + client configs: [MCP integration guide](docs/users/mcp.md)\n\n## GET endpoints are pure (no side effects)\n\n- All HTTP GET routes avoid cache writes and Git mutations.\n- Inventory reads in the web app use the read‑only helper `inventory_onhand_readonly()`.\n- CLI parity: use `sf inventory onhand --readonly` to compute on‑hand without writing caches.\n\n---\n\n## What to read next\n- [The smallFactory Story](docs/meta/the-smallfactory-story.md)\n- [Start Here](docs/START_HERE.md)\n- [Users docs](docs/users/README.md)\n- [MCP integration guide](docs/users/mcp.md)\n- [Build events guide](docs/users/events.md)\n- [Developers docs](docs/developers/README.md)\n- [Web UI docs](web/README.md)\n- [CLI docs](docs/cli/README.md)\n- [Core spec](smallfactory/core/v1/SPECIFICATION.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusufm%2Fsmallfactory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusufm%2Fsmallfactory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusufm%2Fsmallfactory/lists"}