We are looking for a talented and experienced Node.js Developer who thrives in a fast-paced environment and is ready to tackle new challenges.
The project involves the development of a system for working with cryptocurrencies that will partially replace the current structure used in the services. The system will be similar to the tools used by cryptocurrency exchanges for accepting and managing balances, but with specific features for distributing outgoing flows. The integration includes connecting to existing services, such as merchant platforms and systems for handling fiat payments.
Requirements:
4+ years of experience with server-side JS/TS
Solid understanding of TypeScript, JavaScript fundamentals and internals
Experience with Express, NestJS or any other similar framework
Flexible approach in regard to different programming languages/technologies
Proven experience using any other stack (.NET/Go/Java/C++, etc.)
Strong understanding of asynchronous programming, event-driven architecture, and non-blocking I/O
Hands-on experience with Web3.js or Ethers.js for interacting with Ethereum or other EVM-compatible networks
Understanding of smart contracts
Familiarity with popular blockchains like Ethereum, Binance Smart Chain, or Layer 2 solutions
Expertise in data structures, algorithms, and software design patterns
Solid understanding of different software architectural patterns
Experience with different RDBMSes (MySQL/PostgreSQL)
Experience in writing complex SQL queries and their optimization
Experience with different kinds of ORMs
Familiarity with Docker, containerization and orchestration tools
Strong analytical skills with the ability to think critically and solve complex issues
Proficiency in writing unit tests, integration tests, and end-to-end tests
Responsibilities:
Write efficient, maintainable code
Ability to efficiently design and implement separate self-sufficient components
Participate in architectural discussions and technical decision-making
Identify potential technical risks and develop mitigation strategies
Ensure knowledge is effectively shared and maintained within the team
Foster a collaborative and innovative development environment
Perform cross code-review with team members
Properly maintain documentation