New Year, New Tool: Bulk File Loader v0.1 Released

New Year, New Tool: Bulk File Loader v0.1 Released

Starting 2026 with a fresh release:
https://github.com/patent-dev/bulk-file-loader is now open source.

Bulk File Loader automates downloading patent bulk data from EPO and USPTO. Set it up once, configure your credentials, and let it handle the rest - scheduled syncs, progress tracking, and webhook notifications included.

Features:

  • Automated scheduled downloads from EPO BDDS and USPTO ODP
  • Web UI for configuration and monitoring
  • Multi-database support (SQLite, PostgreSQL, MySQL)
  • Docker and binary releases for all platforms

Quick Start:

docker run -p 8080:8080 -v ./data:/app/data patentdev/bulk-file-loader

Happy New Year - and happy downloading.

https://github.com/patent-dev/bulk-file-loader

https://hub.docker.com/r/patentdev/bulk-file-loader

Tech Stack & Approach

I'm a fan of self-contained deployments. Bulk File Loader ships as a single executable - no runtime dependencies, no separate frontend server, no config files to manage.

The stack:

  • Go backend with the standard library HTTP server - fast, compiled, minimal footprint
  • Vue 3 frontend (with Tailwind, Pinia, Vue Router) embedded directly in the binary using go:embed
  • OpenAPI 3 spec as the source of truth - the server code is generated with oapi-codegen, the TypeScript client with openapi-typescript-codegen
  • SQLite by default, with PostgreSQL/MySQL support if you need it - no database server required out of the box

The OpenAPI spec lives at api/openapi.yaml and drives everything. Change the spec, regenerate, and both backend handlers and frontend client types stay in sync. No drift between API docs and implementation.

Webhooks handle integration with other systems. The loader does one thing: download files. When something happens - download complete, new files available, errors - it fires a webhook. Your pipeline, your notification system, your processing queue picks it up from there. Clean separation of concerns.

For patent office integrations, I extracted the API clients into separate packages (https://github.com/patent-dev/epo-bdds, https://github.com/patent-dev/uspto-odp) - useful if you just need to talk to those APIs without the full loader.

The result: docker run or download a binary, and you're done. No Node.js, no Python, no Java, no database server - just one file that runs anywhere.

Read more