Back to jobs

(1533) SENIOR FULLSTACK ENGINEER (REACT, NODE.JS & C#)

nortal
senior

Job description

<p><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Join</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Nortal</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">for your next big adventure. We are</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">seeking</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">a</span></span><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span><span data-ccp-charstyle="normaltextrun">Senior </span><span data-ccp-charstyle="normaltextrun">Fullstack</span><span data-ccp-charstyle="normaltextrun"> Engineer (React, Node.JS &amp; C#)</span><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">to join our team, grow with us, and teach us a few things along the way.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Why join</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Nortal</span></span></strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="36" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Say Goodbye to Micromanagement:</span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">We</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">champion</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">autonomy, open communication, and respect for diversity as our core values.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="36" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Outcomes Over Hours:</span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">We believe in a work model focused on impact, providing you with the flexibility to balance your professional success with your personal well-being.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="36" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="3" data-aria-level="1"><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Vibrant Community:</span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Join our close-knit LATAM remote team and connect through tech talks, virtual coffee breaks, and team-building activities.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="36" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="4" data-aria-level="1"><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Support from Day One:</span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Our People Care team is here to support you throughout your journey, from wellness check-ins to professional growth.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Our benefits</span></span></strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">✨</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Competitive USD salary.</span></span></strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">100% remote work:</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">While you can work from anywhere, you’re always welcome to connect with teammates and grow your network at our coworking spaces across LATAM.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="3" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Paid</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">off</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">&amp;</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">national</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">holidays:</span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Take</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">the</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">time</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">you</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">need</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">according</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">to</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">your</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">country’s</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">regulations</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">while</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">receiving</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">your</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">full</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">salary.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="4" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Sick leave:</span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Focus on your health without</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">stress. Take the necessary time to recover and feel better.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="5" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Annual</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">credit:</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Spend</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">it</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">on</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">the</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">perks</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">you</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">love</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">to</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">enhance</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">your</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">work-life</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">balance.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="6" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Team-building activities:</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Join us for coffee breaks, tech talks, and after-work gatherings to bond with your</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Nortal</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">family and feel part of our vibrant community.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="35" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="7" data-aria-level="1"><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Birthday off:</span></span></strong><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Enjoy an extra day off during your birthday week to celebrate in style with friends and family.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">About the project</span></span></strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <p><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">As a </span></span><strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">Senior </span><span data-ccp-charstyle="normaltextrun">Fullstack</span><span data-ccp-charstyle="normaltextrun"> Engineer (React, Node.JS &amp; C#)</span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">, you </span><span data-ccp-charstyle="normaltextrun">will join the Tax Provision 2.0 (TP2.0) product team to build and maintain a modern, cloud-native platform supporting complex corporate tax calculations across a polyglot, multi-repo ecosystem spanning React </span><span data-ccp-charstyle="normaltextrun">microfrontends</span><span data-ccp-charstyle="normaltextrun">, TypeScript serverless APIs, C# shared libraries, and AWS infrastructure, actively leveraging AI coding assistants to accelerate delivery and engineering productivity</span><span data-ccp-charstyle="normaltextrun">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559739":0,"335559740":240}"> </span></p> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">What</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">you’ll</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">do</span></span></strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Build and </span><span data-ccp-parastyle="Normal (Web)">maintain</span><span data-ccp-parastyle="Normal (Web)"> features across the TP2.0 platform — from React </span><span data-ccp-parastyle="Normal (Web)">microfrontend</span><span data-ccp-parastyle="Normal (Web)"> screens to TypeScript serverless Lambdas and </span><span data-ccp-parastyle="Normal (Web)">Fastify</span><span data-ccp-parastyle="Normal (Web)"> services</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Contribute to the shared @btas/btas-tax-provision-business-rules TypeScript library consumed by both frontend and backend, including its C# code-generation pipeline</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Write and </span><span data-ccp-parastyle="Normal (Web)">maintain</span><span data-ccp-parastyle="Normal (Web)"> unit, integration, and E2E tests using Jest, Playwright, and K6</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Develop and deploy infrastructure changes using Terraform targeting AWS (Lambda, ECS, API Gateway, RDS/PostgreSQL, DynamoDB, S3, CloudFront, Secrets Manager)</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Participate in GitLab CI/CD pipeline development and maintenance, including security scanning and Terraform deployment pipelines</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Collaborate with architects and product teams to evolve async job patterns (imports, report generation), calculation service APIs, and data layer abstractions</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Use AI coding assistants effectively — writing precise prompts, reviewing AI-generated code critically, and applying outputs productively within a large existing codebase</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="33" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="Normal (Web)">Maintain and improve the </span><span data-ccp-parastyle="Normal (Web)">legacy</span><span data-ccp-parastyle="Normal (Web)"> ASP.NET Framework 4.7.2 application as needed during migration</span><span data-ccp-parastyle="Normal (Web)">.</span></span><span data-ccp-props="{"134233117":true,"134233118":true,"201341983":0,"335559740":240}"> </span></li> </ul> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">What makes you a great fit</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">🎯</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Bachelor's Degree in Computer Science</span><span data-ccp-charstyle="normaltextrun">, Engineering, or</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">a related</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">field.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Experience working with </span><span data-ccp-charstyle="normaltextrun">Strong TypeScript/JavaScript (Node 18</span><span data-ccp-charstyle="normaltextrun">)</span><span data-ccp-charstyle="normaltextrun">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Proficiency</span><span data-ccp-charstyle="normaltextrun"> with React 18 and modern React patterns (hooks, context, query management)</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Working knowledge of C# / .NET (ideally both modern .NET 10 and legacy .NET Framework 4.7.2)</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Experience working with </span><span data-ccp-charstyle="normaltextrun">AWS Lambda </span><span data-ccp-charstyle="normaltextrun">and</span><span data-ccp-charstyle="normaltextrun"> API Gateway (serverless handlers via AWS SAM / CloudFormation)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Experience working with </span><span data-ccp-charstyle="normaltextrun">Fastify</span><span data-ccp-charstyle="normaltextrun"> (v5)</span><span data-ccp-charstyle="normaltextrun">. B</span><span data-ccp-charstyle="normaltextrun">uilding RESTful APIs with </span><span data-ccp-charstyle="normaltextrun">TypeBox</span><span data-ccp-charstyle="normaltextrun"> schema validation and Swagger documentation</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Strong experience working with </span><span data-ccp-charstyle="normaltextrun">PostgreSQL </span><span data-ccp-charstyle="normaltextrun">(</span><span data-ccp-charstyle="normaltextrun">schema management, query optimization, </span><span data-ccp-charstyle="normaltextrun">TypeORM</span><span data-ccp-charstyle="normaltextrun"> migrations</span><span data-ccp-charstyle="normaltextrun">)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Microfrontend</span><span data-ccp-parastyle="paragraph"> architecture</span><span data-ccp-parastyle="paragraph">. E</span><span data-ccp-parastyle="paragraph">xperience with single-spa or similar composition patterns</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="9" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Experience with </span><span data-ccp-parastyle="paragraph">MobX</span><span data-ccp-parastyle="paragraph"> / </span><span data-ccp-parastyle="paragraph">MobX</span><span data-ccp-parastyle="paragraph">-State-Tree and </span><span data-ccp-parastyle="paragraph">TanStack</span><span data-ccp-parastyle="paragraph"> React Query for state and server state management</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="10" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Experience working with </span><span data-ccp-parastyle="paragraph">Terraform </span><span data-ccp-parastyle="paragraph">(</span><span data-ccp-parastyle="paragraph">writing and </span><span data-ccp-parastyle="paragraph">maintaining</span><span data-ccp-parastyle="paragraph"> AWS infrastructure modules</span><span data-ccp-parastyle="paragraph">)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="11" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Experience working with </span><span data-ccp-parastyle="paragraph">Docker / Docker Compose </span><span data-ccp-parastyle="paragraph">(</span><span data-ccp-parastyle="paragraph">local development stacks</span><span data-ccp-parastyle="paragraph">)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="12" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Familiarity working with </span><span data-ccp-parastyle="paragraph">GitLab CI/CD </span><span data-ccp-parastyle="paragraph">(</span><span data-ccp-parastyle="paragraph">pipeline authoring, shared templates, environment management</span><span data-ccp-parastyle="paragraph">)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Experience working with </span><span data-ccp-parastyle="paragraph">Jest (unit + integration), Playwright (E2E), K6 (load/performance)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="14" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Hands-on experience with one or more AI coding tools: Cursor, GitHub, Copilot, Claude Code, or equivalent</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <ul> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="paragraph">Ability to use AI assistants effectively within a large, multi-repo codebase </span><span data-ccp-parastyle="paragraph">(</span><span data-ccp-parastyle="paragraph">including context management, prompt engineering, and critically evaluating generated output</span><span data-ccp-parastyle="paragraph">)</span><span data-ccp-parastyle="paragraph">.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> <li data-leveltext="" data-font="Symbol" data-listid="34" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="16" data-aria-level="1"><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Advanced English Level is</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">required</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">for this role,</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">as you will work with US clients. Effective communication in English is essential to deliver the best solutions to our clients and expand your horizons.</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></li> </ul> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Global Impact, Local Culture</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">🌍</span></span></strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <p><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">For over 25 years,</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">we’ve</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">been shaping digital transformation, delivering complex solutions for global enterprises and public sector organizations. Today, we are at the forefront of an </span><span data-ccp-charstyle="normaltextrun">AI-driven transformation era, helping organizations turn data into</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">real business</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">value. By combining deep domain</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">expertise</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">with data and AI, we design solutions that create immediate impact while scaling for the future.</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="eop" data-ccp-charstyle-defn="{"ObjectId":"920dbcde-2834-5e15-a5fa-062170b236ba|1","ClassId":1073872969,"Properties":[201342446,"1",201342447,"5",201342448,"1",201342449,"1",469777841,"Aptos",469777842,"",469777843,"Aptos",469777844,"Aptos",201341986,"1",469769226,"Aptos",268442635,"24",469775450,"eop",201340122,"1",134233614,"true",469778129,"eop",335572020,"1",469778324,"Default Paragraph Font"]}"> </span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <p><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">We believe complexity</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">doesn’t</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">have to mean complicated, and that the best solutions are those that work in the real world, not just on paper.</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">That’s</span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">why our clients trust us with their most ambitious, business-critical initiatives.</span></span><span data-contrast="auto"><span data-ccp-charstyle="eop"> </span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p> <p><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">Apply now and</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">let’s</span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun"> </span></span></strong><strong><span data-contrast="auto"><span data-ccp-charstyle="normaltextrun">shape the future of technology together!</span></span></strong><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"> </span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">🧑</span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun"></span></span><span data-contrast="none"><span data-ccp-charstyle="normaltextrun">💻</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335559738":0,"335559739":0,"335559740":240}"> </span></p><div class="content-conclusion"><p><span data-teams="true">By applying to this position, you authorize Nortal to collect, store, transfer, and process your personal data in accordance with our Privacy Policy. For more information, please review our <a href="https://nortal.com/recruitment-and-hiring-privacy-statement/" target="_blank">Privacy Policy.</a></span></p></div>

Skills

ReactNode.jsC#TypeScriptAWS LambdaAPI GatewayFastifyPostgreSQLTypeORMMicrofrontendssingle-spaMobXMobX-State-TreeTanStack React QueryTerraformDockerDocker ComposeGitLab CI/CDJestPlaywrightK6CursorGitHub CopilotClaude CodeAI coding assistants