Salvador, Brazil · teams in Brazil and Europe

Victor Costa Senior Full Stack Developer & Tech Lead

I build and evolve web systems with Ruby on Rails and React. I combine hands-on development with architectural decisions, software quality and clear communication throughout delivery.

Experience
9+ years
Technologies
Ruby · Rails · JavaScript · TypeScript · React · Python · Rust · SQL · NoSQL · REST · GraphQL
Strengths
Technical leadership · International experience · Original libraries · AI harnesses
From context to outcomesBusiness goals, user needs, systems and integrations, deadlines and constraints inform the decision. Alternatives and risks are evaluated against security and performance criteria. The intended outcomes are delivered value, sustainable evolution, predictable delivery, reliable operations and a more autonomous team. Learning feeds back into context.
From database to interface, with technical decisions, communication and follow-through in production.

Technical ownership, in context

  1. Production systems since 2017

    At Oxeanbits since June 2017, responsible for the architecture, development, evolution and technical leadership of web systems.

  2. Client projects in four countries

    Technical leadership for teams on projects for clients in Norway, the Netherlands, Germany and Brazil, including direct client contact.

  3. From foundation to product evolution

    On Digitalize, I designed the foundation and wrote most of the backend. Once the platform was in production, I became the team’s technical lead, guiding architecture decisions, code review and product evolution.

  4. From C++ to the browser

    I independently developed parsec-web, the WebAssembly version of a C++ equation-evaluation library.

Problems I took on, from understanding to production

Three cases with the problem, my part and the outcome. Most of this work was done in teams through Oxeanbits; each page states clearly what was mine.

C++ · WebAssembly · Compilers

Parsec: one formula language shared across platforms

Library development; individual WebAssembly version

Problem
When each platform interprets the same formulas on its own, the same calculation can produce different results.
My part
Development of the C++ library and sole authorship of the WebAssembly version, parsec-web.
Outcome
One formula language, with the same interpretation also available in the browser.

Rails · MongoDB · GraphQL

Digitalize: from backend foundation to technical leadership

Foundation design and technical lead

Problem
Different organizations needed to move internal processes out of manual steps without a new system for every case.
My part
Designed the foundation and wrote most of the backend; later led the team technically.
Outcome
One foundation serving different organizations, still evolving with the team.

Rails 8 · React · TypeScript · ClickHouse

Status Survey: hierarchical surveys, from form to data lake

Leading full-stack contributor on a three-person team

Problem
A multi-level organization needed to distribute surveys, control access and consolidate data in more than one language.
My part
Leading full-stack contributor on a three-person team, from architecture to delivery.
Outcome
A complete platform delivered by a small team, from dynamic forms to the data lake.

See all work

Public code to assess my work

Ruby libraries I authored or coauthored and a Rust tool. Each project shows a concrete problem, the implementation and my role.

Tools in service of the problem

My deepest experience is in Rails, with React and TypeScript in production. Python, Shell, data, automation and Rust tooling broaden the problems I can solve. The cases and public code show that work.

Building

Backend & APIs
  • Ruby on Rails
  • Ruby
  • REST
  • GraphQL
  • Flask
Where most of my work lives: backend architecture, business rules and APIs. In the cases: Digitalize, Status Survey, DPMS, Published Ruby gems.
Frontend
  • React
  • TypeScript
  • JavaScript
  • Flutter
  • Dart
Production React interfaces, legacy screen modernization and contributions to Flutter/Dart applications. In the cases: Status Survey, React modernization.
Scripting & automation
  • Python
  • Shell
  • Bash
  • Ruby
Routine automation, API integration and file processing with Python, Ruby and Shell.
Low-level programming
  • C
  • C++
  • Rust
C, C++ and Rust. Parsec shows the C++ work; Wisetree shows Rust tooling. In the cases: Parsec and parsec-web, Wisetree in Rust.

Data and integration

SQL databases
  • MySQL
  • SQLite
  • PostgreSQL
  • MariaDB
Relational modeling, such as MySQL on DPMS and PostgreSQL on Status Survey. In the cases: DPMS, Status Survey.
NoSQL databases
  • Redis
  • MongoDB
  • Apache Cassandra
Document, key-value and wide-column storage. Digitalize runs on MongoDB. In the cases: Digitalize.
Analytical data
  • ClickHouse
ClickHouse, synchronized with PostgreSQL and published to a data lake on Status Survey. In the cases: Status Survey.
Pipelines & orchestration
  • Apache Airflow
Apache Airflow for task and data workflow orchestration, alongside jobs and synchronization between systems.
AI integration
  • Python
  • RAG
  • MCP
  • LangChain
  • LangGraph
  • Qdrant
Contributions to document retrieval workflows (RAG), tools through MCP and vector storage.
Messaging
  • Apache Kafka
  • Amazon SQS
  • Amazon SNS
Asynchronous communication between systems through queues, topics and events.

Operations

Cloud & containers
  • Amazon SQS
  • Amazon SNS
  • Amazon ECS
  • Amazon S3
  • Docker
AWS services and containerization with Docker. In the cases: Status Survey.
Observability
  • New Relic
  • Elastic
Following how applications behave in production.
Error tracking
  • Sentry
Real-time tracking of application errors and issues.

Engineering practice

Quality & testing
  • Playwright
  • Selenium
  • Puppeteer
  • Capybara
  • Minitest
  • Vitest
  • RSpec
  • Jest
  • React Testing Library
  • BDD
  • Code review
Business-rule tests and browser journeys to protect changes and investigate regressions. In the cases: DPMS.
Delivery
  • Shell
  • CI/CD
  • Technical documentation
Continuous integration and delivery pipelines, reproducible environments, backups and documentation. In the cases: Status Survey.
Authentication & access
  • Keycloak
  • JWT
  • Role-based access control
Centralized identity and role-based permissions. In the cases: Status Survey.
Developer tooling
  • Git worktrees
  • Ratatui
  • RubyGems
CLIs, terminal interfaces and environment automation to organize branch work and reduce manual setup. In the cases: Wisetree in Rust, Published Ruby gems.
AI-assisted engineering
  • Jev (TypeSafe AI)
  • Harness development
  • Agent instructions and skills
  • Verification and human review
Harnesses, skills, context selection and Jev for model and reasoning selection, with human verification. In the cases: AI harness, Context for AI.

From business rules to production investigation, I choose tools to fit the constraints of the system.

Two ways to work together

Development

Hands-on Senior Full Stack Developer and/or Tech Lead

For products that need someone to own features from the database to the interface, make architecture decisions and keep quality up while shipping.

  • Build the foundation of a new Rails system
  • Evolve a Rails and React application in production
  • Integrate systems through REST or GraphQL APIs
  • Automate routines with Python, Ruby and Shell
  • Lead a team technically without leaving the code
See how development works

Technical consulting

Diagnosis and direction in areas I have worked in

For teams that need a technical second opinion, a plan to reduce technical debt or clear criteria for decisions on architecture, testing and AI use.

  • Review the architecture of a Rails application
  • Plan the modernization of a legacy frontend
  • Protect critical journeys with testing and Playwright
  • Investigate failures with Elastic, New Relic and Sentry
  • Set up an AI-assisted development workflow
See consulting topics

Criteria I bring to every project

Seniority shows in decisions: what to simplify, what to test, how to explain a trade-off. Each principle below links to a case.

A cycle, not a conveyor beltA cycle with four stages: Understand, Decide, Build and Verify, returning to the start. A dashed line connects Verify to Decide: Verification can send work back to understanding or to the decision.
A cycle, not a conveyor belt. Verification can send work back to understanding or to the decision.
  1. Architecture starts with the problem

    I choose the simplest solution that supports how the product will evolve. Flexibility has a cost and has to be justified by real use.

    Seen in Digitalize

  2. Code is read more than it is written

    Intention-revealing names and explicit flows reduce the cognitive load for whoever maintains the system after me.

    Seen in React modernization

  3. Tests describe behavior

    Tests protect business rules while things change. With BDD, they stay readable even for people who did not write the code.

    Seen in DPMS

  4. Trade-offs explained before deciding

    I would rather persuade with arguments than impose a choice. That is how a team adopted a shared repository for frontend and backend.

    Seen in Context for AI

  5. AI with verification

    I use AI to move faster, with instructions, selected context and verification. Responsibility for the result stays with me.

    Seen in AI harness

The phrase I use to sum up my practice with AI

In AI-assisted development process: Context is King.

This is how I sum up the practice: in AI-assisted development, the quality of the outcome depends on the relevant context available. I do not claim to have coined "Context is King"; the phrase captures how I apply the idea.

Context for AI

Teaching is part of the job

I gave two talks at the Federal University of Bahia (UFBA) representing Oxeanbits. They led to a Clean Code repository that now also shapes how I evaluate AI-generated code.

Talks

  1. 2021: Why Clean Code and BDD matter in automated tests

    Original title A importância do Clean Code e BDD nos Testes Automáticos

    Computing Week (SEMCOMP), UFBA · representing Oxeanbits

    Why BDD matters in automated testing, with practical examples of tests that describe behavior.

  2. 2024: How to clean your code: Clean Code principles

    Original title Como varrer seu código: Princípios do Clean Code

    Computing Week (SEMCOMP), UFBA · representing Oxeanbits

    Clean Code principles presented through code examples.

Repositories I created

A track record built in production

Computer Science at UFBA, a year of exchange studies in the United States and, since 2017, web systems for clients in Brazil and abroad.

I work in Portuguese and English with international teams and clients.

  1. 2011 to 2017

    Computer Science, UFBA

    Bachelor's degree at the Federal University of Bahia. Final project on an interpretability index for fuzzy systems, graded with the maximum score.

  2. Jun 2015 to May 2016

    Exchange year at SUNY Plattsburgh

    A year at the State University of New York at Plattsburgh, in the United States, through the Science without Borders program, with a CAPES scholarship.

  3. Since Jun 2017

    Oxeanbits

    Working as a contractor in the role of Backend Tech Lead and Senior Full Stack Developer: DPMS, Digitalize, Status Survey and Parsec, with teams on projects for clients in Norway, the Netherlands, Germany and Brazil.

  4. 2021

    Talk on Clean Code and BDD

    SEMCOMP at UFBA, representing Oxeanbits.

  5. 2024

    Talk on Clean Code

    SEMCOMP at UFBA, representing Oxeanbits.

Tell me about the problem you need to solve

Hiring for your team or solving a product problem? Share the context and the outcome you need. We can discuss a Senior Full Stack Developer or Tech Lead role, project development or technical consulting.

WhatsApp

+55 71 99705-3401

Opens WhatsApp with a starter message you can edit. Nothing is sent automatically.

You can also find me on GitHub and LinkedIn.