Full Stack Engineer
Tenexti is an emerging software development company based in Lviv. We specialize in creating innovative solutions, delivering high-quality results, and helping our clients turn their ideas into reality. With a passion for technology and a commitment to excellence, we strive to build lasting partnerships and drive meaningful impact through our work.
We are looking for a Full-stack Engineer to join our team.
🧑💻 What we expect from the ideal candidate:
- You have 2–3 years of professional experience building production applications with Node.js and React.
- You are comfortable working across the entire stack. You can take a feature from an initial business requirement through backend implementation, API design, frontend development, testing, and production delivery.
- You have strong TypeScript proficiency. You can use TypeScript effectively on both the frontend and backend and understand how to design clear, maintainable types, contracts, and abstractions.
- You have solid Node.js backend skills. You understand API design, service architecture, asynchronous processing, data modeling, error handling, performance, and application reliability. Experience with NestJS is highly desirable.
- You have strong React proficiency. You understand component architecture, state management, data fetching, routing, forms, API integration, performance, and modern frontend best practices.
- You are a good engineer. You do not write code only to the point where it starts working. You go the extra mile to make your solutions elegant, simple, robust, and easy to maintain.
- You can make sensible architectural decisions. You think about boundaries, responsibilities, data flow, failure scenarios, scalability, and the long-term cost of the solutions you introduce.
- You have good UX taste. You care not only about how the code works, but also about how the product feels. You notice rough edges, think about users, and want to build interfaces that are clear, fast, and pleasant to use.
- You think beyond just coding. Building great software is not about closing tickets—it is about making the product and codebase better every time you touch them. You ask questions, care about the “why,” and think about the real business impact of your work.
- You are open-minded and eager to learn. You are interested in modern tools, patterns, and engineering approaches and are excited to apply them in real production systems.
- You are a good team player. You treat the people around you well and have strong communication skills that allow you to explain technical decisions clearly.
- You do not need constant supervision. You are self-driven, can solve problems independently, and take initiative when you see opportunities for improvement.
💡 What you will do:
- Implement features across both the backend and frontend. You will take ownership of complete business features rather than working exclusively within one technical layer.
- Work on two main products of the company. One product is already built with React, while the second currently has a legacy Vue.js frontend that will be rewritten using a modern React stack.
- Develop and improve Node.js backend services. You will implement business logic, design APIs, work with databases and integrations, and ensure that services remain reliable, maintainable, and performant.
- Maintain and improve the existing React product. You will add new features, build new pages, improve existing flows, and continuously make the user experience better.
- Rewrite a legacy frontend from Vue.js to React. This is an opportunity to build a modern frontend using current best practices, clean architecture, and a thoughtful developer experience.
- Play a key role in defining how features should be implemented. You will help translate business requirements into technical solutions and make architectural decisions across the frontend and backend.
- Create high-quality user interfaces. You will work not only on functionality, but also on usability, clarity, performance, validation, and the overall experience of using the product.
- Improve the architecture across the stack. You will help shape service boundaries, APIs, data models, component structure, data-fetching patterns, routing, forms, error handling, reusable abstractions, and overall maintainability.
- Work with complex production workflows. You will build functionality related to data synchronization, pricing, integrations, rate limits, asynchronous processing, and other business-critical operations.
- Investigate and resolve production issues. You will be able to follow problems across frontend, backend, databases, queues, logs, and metrics instead of being limited to a single part of the system.
- Perform code reviews. We treat code reviews seriously. You will review pull requests, suggest cleaner and simpler approaches, and receive thoughtful reviews from your peers.
- Suggest technical improvements. You will help us improve developer experience, system stability, observability, performance, APIs, and the overall simplicity of the codebase.
Team and Customer
We are a team of engineers based in Lviv working for a US-based customer. All engineers and architectural decisions are here locally—no late calls with the US and no overseas knowledge holders blocking you.
Our customer is not backed by venture capital but by reliable business revenue. We are self-funded and do not experience pressure to cut roles in Ukraine due to “country risks,” which has unfortunately become quite common lately.
We are hiring because of business growth. By leveraging technology and working with smart people, we empower the business to grow further.
Product
We work on a high-stakes data synchronization system that handles hundreds of thousands of records in real time. The product ensures data consistency between multiple systems while operating under strict rate limits and performance constraints.
This is a fascinating technical challenge—not a simple CRUD application, but a complex, performance-sensitive system where every optimization matters, stability is non-negotiable, and creative problem-solving is part of the daily routine.
🚀 Our technology stack
Frontend
- React 19
- TypeScript
- Tailwind CSS
- Ant Design
- TanStack Query
- TanStack Router
- Vite
- GraphQL
- Vue.js legacy frontend—to be rewritten in React
- Modern frontend tooling and best practices
Backend
- TypeScript, Node.js, and NestJS
- Java 21 and Kotlin, with an active migration toward Kotlin
- Spring Boot
- Prisma
- MongoDB
- PostgreSQL
- Redis
- RabbitMQ
- Hasura and GraphQL
- GoRules for complex business logic
Infrastructure and DevOps
- Kubernetes
- ArgoCD and GitHub Actions
- OpenSearch for logs
- Prometheus and Grafana for metrics and traces
Why choose this project and team?
- Stable project that has been running successfully for more than eight years, with consistent revenue growth.
- Entire R&D team located in Ukraine, with all architectural decisions made locally.
- Mission-critical production system where your decisions directly affect business outcomes.
- Real engineering challenges, including performance optimization, rate limiting, data consistency, distributed workflows, and large-scale refactoring.
- End-to-end feature ownership, with the opportunity to work across both frontend and backend systems.
- Opportunity to work on a high-load production system consisting of both a monolith and microservices and to influence how it is designed and shaped.
Perks and Benefits
🏋️♂️ Gym compensation
🏝 18 days of paid vacation, public holidays, and paid sick leave
💻 Modern technical equipment: an Apple silicon MacBook with 32 GB of RAM
🇬🇧 English lessons
⏱️ Flexible working hours and no time trackers
✈️ Possible trips to the USA when the war ends. Before the war, we flew there twice, and we loved it :)
If you have read this far, please start your message with “Glory to Ukraine!” Thank you!
Відгукнутись на вакансію