Role Overview
As a Software Engineer, you will be responsible for designing, developing, and maintaining scalable backend systems that support our core products and services. You will play a key role in building robust APIs, data-driven services, and event-based systems, working closely with product, frontend, and infrastructure teams. This role requires strong backend fundamentals, experience with Node.js (NestJS), and a solid understanding of modern architectural patterns to deliver reliable and maintainable software at scale.
Responsibilities
Design, develop, and maintain backend services using Node.js and NestJS.
Build and optimize data models and queries using PostgreSQL, ensuring performance and data integrity.
Apply Hexagonal (Ports & Adapters) architecture principles to create clean, testable, and maintainable codebases.
Develop and maintain services within a modular monolith architecture, with a clear path toward scalability.
Implement asynchronous and event-driven communication using RabbitMQ.
Use Redis for caching, performance optimization, and distributed coordination where needed.
Collaborate closely with frontend, product, and DevOps teams to deliver end-to-end features.
Write clean, well-tested, and well-documented code following best practices.
Participate in code reviews, architectural discussions, and technical decision-making.
Identify performance bottlenecks and proactively improve system reliability and scalability.
Requirements
- More than 2 years of experience in backend development.
- Strong hands-on experience with Node.js and NestJS.
- Solid experience working with PostgreSQL in production environments.
- Experience working with or designing modular monolith architectures.
- Experience using Redis for caching or other backend use cases.
- Experience using Docker and building containerized applications.
- Ability to write unit and integration tests and an understanding of testing best practices.
- Good understanding of RESTful APIs and backend fundamentals.
- Strong problem-solving skills and attention to detail.
- Ability to work independently as well as collaboratively within a team.
- Good communication skills and a proactive mindset.
Nice to Have
Familiarity with Hexagonal architecture and its core principles.
Hands-on experience with RabbitMQ for messaging and event-driven systems.
Familiarity with Kubernetes and container orchestration concepts.