Position: Server Engineer - Node.js
Company: XLNT Spaces
Experience required: 5y
English level: upper

As of today, there is no classic back-end with API and database. Instead, there are a few Node processes, web workers, and the product can be run in a browser or as an Electron app. We are on a mission to allow users to work with it without any download or local installation while getting the full capacity of features on a browser.

We’re building a new team in Lviv and we’re looking for strong, experienced developers who will take a significant part in shaping this new team and setting its core building blocks.

**You are:**
A passionate, experienced engineer with proven production experience using server-side technologies in a web environment. You have 5+ years of experience and expert knowledge in Node.js, and an excellent understanding of the principles of client-server interactions (i.e. protocols, authentication/authorization mechanisms, asynchronous tasks, etc). You're great at designing and testing APIs and have an excellent understanding of database systems, relational and otherwise. You can reason and communicate your opinions, as well as accept others’ approaches. You’re proactive, never taking the present state for granted, and always striving to understand why things are done the way they are.

You’re a clean coder with readable, beautiful, and maintainable code. You recognize bad code and continuously search for better solutions. You’re deeply familiar with the tools, libraries, and frameworks you’ve worked with. You’re also able to debug and investigate production issues.

**Bonus points if you have experience with:**
- Test-driven development (Jest, Mocha, Puppeteer)
- Build tools and pre-processors such as Webpack, Rollup, PostCSS
gRPC
- Continuous Integration/Continuous Delivery

**As a Node.js Server Engineer, you will:**
- Create a resilient and scalable API built with Typescript / Node.js
- Cope with known challenges of making a feature-complete online version of a product: implement distributed server architecture for compilation, file system, storage, handle integration with 3rd-party systems, e.g. Git, etc.
- Handle all aspects of software development: architecture, design, development, build, deployment, and - after the public release - monitoring, and operations