NOTS
All projects
React TailwindCSS Strapi Vitest REST API

NOTS

A fullstack agricultural data platform with a simulation engine for nitrogen and carbon impact modeling.

Role Fullstack Engineer
Timeline November 2024

The Problem

NOTS is a digital platform aimed at making sustainable agriculture quantifiable. The product helps farmers and agronomists model environmental impact — nitrogen footprint calculations, carbon credit tracking, crop yield projections — based on inputs like soil type, climate data, and crop characteristics.

The challenge was building this from scratch on a tight timeline: a full frontend, a backend that handled complex domain logic, and a simulation engine that had to produce scientifically accurate results from an evolving, multi-variable input model.

My Approach

I worked on this project as the sole fullstack developer, making all architectural decisions from day one.

Screaming Architecture for feature isolation. The codebase is organized by domain (soil analysis, nitrogen modeling, carbon credits) rather than by technical layer. Each feature module contains its own components, hooks, services, and types. This made it easy to work on one domain without touching others — and easy for domain experts to understand which code corresponded to their area.

Strapi for the backend, configured to match the domain. Rather than building a custom API from scratch, I used Strapi and configured custom content types and controllers to handle simulation inputs and outputs. This gave us a working API with authentication, validation, and an admin interface in a fraction of the time — while still allowing custom business logic where needed.

Simulation engine as a first-class concern. The hardest part of the project was the simulation engine itself. It had to process dozens of input variables, run multi-step calculations, and return results that domain experts could validate as scientifically correct. I treated it as a separate, heavily tested module — with explicit input contracts, deterministic outputs, and unit tests for every calculation step.

Architecture

React Frontend
  ├── /features
  │     ├── nitrogen-model   → Simulation inputs, results display
  │     ├── carbon-credits   → Carbon tracking, calculations
  │     └── soil-analysis    → Soil data entry, recommendations
  ├── /services              → API communication layer
  └── /components            → Shared UI primitives

Strapi Backend
  ├── Custom content types   → Simulation parameters, user data
  ├── Custom controllers     → Simulation logic, result computation
  └── REST API               → Consumed by React frontend

Testing
  └── Vitest                 → Unit tests for simulation calculations

Impact

The platform is live in production at plataforma.nots.pt. Agricultural technicians can now model environmental impact quantitatively, compare scenarios before making field decisions, and track carbon credit accumulation over time.

The simulation engine — the most technically demanding piece — became the core differentiator of the product. It handles complex, multi-variable inputs and produces results that have been validated by the domain experts who use the platform daily.