Work

Go library and CLI

depman

A Go library and CLI that checks, installs and verifies the system-level tools your application needs, from one YAML file.

Status
v1.0 on GitHub
Stack
Go · YAML
Links

What it is

Depman manages the things your code needs that no package manager covers: Node.js, Python, a database server. You list them once in a YAML file, with the version you require and how to install and verify each one on Windows, Linux and macOS. Depman then checks what's on the machine, installs what's missing, and confirms it worked.

I built it at work as internal tooling, then open-sourced it.

Why I built it

A service that depends on a runtime fails in confusing ways when that runtime is missing or the wrong version. I wanted the application to find out at start-up, say so clearly, and fix it when it could.

  • 3operating systems: Windows, Linux, macOS
  • 13Go files, about 2,200 lines
  • check, ensurethe two commands you actually use

Use it

version: "1.0"
name: "My Application"
dependencies:
  - name: "nodejs"
    version:
      required: "16.15.1"
      constraint: "^16.0.0"
manager, err := depman.NewManager("")
results, err := manager.EnsureDependencies()

Versions use semantic-version constraints, installers and commands are configured per platform, and each dependency can set environment variables.

How it's built

A public pkg/depman package holds the API and config loading. Internal packages handle downloading, environment variables and the manager. The command line is built with Cobra, and the unit tests cover config discovery, platform selection and version compatibility.

What I'd change

The test suite is thin where it touches real installers, because those need a clean machine. I'd run the install paths in throwaway containers in CI.

Need someone who owns a feature from the first call to the last deploy?

I'm open to senior software, full-stack and forward deployed roles, in India or abroad. A 15-minute call is the quickest way to see if we fit.

Open to roles

The 30-second version

Email
Looking for
Senior Software Engineer · Senior Full-Stack Engineer · Senior Forward Deployed Engineer · Client Solutions Engineer
Experience
5 years 2 months, all in freight-tech SaaS with US customers
Core stack
TypeScriptReact / Next.jsNode.jsPython / FastAPIGoPostgreSQLRedisGCP
Notice period
30 days from resignation (not serving notice today)
Work
Full-time. Remote, or on-site and hybrid in the morning shift only. I work US hours today, so overlap with US teams is already comfortable.
Relocation
Open to relocate to the UAE, Saudi Arabia, Singapore, Malaysia, the US, the UK and Canada
Visa
Visa Sponsorship Required. I'm an Indian citizen and already hold a passport.

What I'm good at

  1. I close the gap between the ask and the buildI'm the one on the customer call and the one writing the code, so nothing gets lost in a handoff. The spec is agreed before I build, and what ships is what they asked for.
  2. I make things that fail safelyI design for retries, races and bad input first, then prove it with tests built to break the thing. A payment webhook replayed 50 times in parallel still makes exactly one order.
  3. I leave work the next person can pick upSpecs, decision records, handoff notes and small pull requests, so a teammate never starts cold. My latest side project has 23 written design decisions behind it.

Cal.com

More ways to meet

Menu