Full Stack Engineer
13 days ago
View the Porter GitHub repoThe Role:
We're looking for a full stack engineer who is fluent in React/Typescript but comfortable working across the entire stack. This includes building on top of our Go backend as well as working directly with the Kubernetes and Helm APIs. Since Porter is a PaaS that abstracts the complexity of Kubernetes, deeply considered design/architectural decisions are the lifeblood of our platform. The best implementation is not always the most obvious one, so an appetite for rigorously evaluating the tradeoffs of different options is essential.
You will be expected to push critical code on a daily basis while also working on larger features that constantly expand the capabilities of the platform.You will:
- Build and maintain new features on the Porter dashboard
- Develop our Go API to accommodate additional k8s/Helm behaviors
- Create applets and add-ons for popular technologies like MySQL, Redis, Kafka, RabbitMQ, etc.
- Improve the UI and organization of the dashboard (strong UI/UX background is a nice to have)
- Raise the standard for code quality and our engineering culture
We value rate of learning above all else. Full stack experience and fluency with React/TypeScript is expected, but less familiarity with Go/Kubernetes is fine if you're a voracious and self-directed learner. Infrastructure management isn't rocket science, but it does involve thinking and working across multiple levels of abstraction at once. If the idea of wrangling that complexity is exciting and not daunting to you, we'd love to talk. As is the case with most early-stage startups, you should be comfortable with regularly shifting priorities and iterating at a very high (daily) velocity.Some of the technical challenges we face:
- Abstracting Kubernetes - any PaaS spans a variety of use cases, so building a consistent and useful layer of abstraction requires constant awareness of the needs of many user profiles.
- Auto-Generated Frontend - each of our app/add-on templates uses a form.yaml file that programmatically generates a settings UI on the dashboard using a library of our own input primitives. Expanding and testing the functionality of these templates is non-trivial.
- Cloud Agnosticism - one of Porter's main benefits is that you get the same interface for managing services regardless of where you host. Our job is to reduce multi-cloud infrastructure complexity to a unified interface.
- Many Integrations - our philosophy is to never reinvent the wheel, so we leverage tools like GitHub Actions, existing container registries, and the APIs of various cloud providers. An issue with any one of these integrations interrupts functionality, so properly handling interactions with numerous services is crucial.
- Build a dashboard that gives an infra-level overview of machines being managed by Porter and their current resource utilization
- Implement live email/Slack alerts for successful or failed deployments
- Develop a deployment pipeline builder that lets users seamlessly promote services across multiple clusters and environments (ex: dev -> staging -> prod)
- Create one-click deployable applets for popular technologies (e.g. RabbitMQ, Kafka, Cassandra, etc.)
- Web: React (styled-components), TypeScript
- Backend: Go, Kubernetes + Helm APIs, Postgres, Redis
- Infrastructure: AWS, GCP
Porter is open source. You can view our entire codebase here.
Our team is currently based in NYC, but we are open to remote hiring for those who can guarantee overlap with our core working hours (Monday through Friday, 9am-5pm ET). If you're in New York City, we're happy to discuss specific working arrangements.
Interested? Email your resume to jobs at getporter.dev and let us know why you would be a great fit for this role.