$ ullas --run▍

I build thingsthat move theworld forward.

Ullas JS, Senior Software Engineer.

Product builder and systems thinker. Nearly four years shipping production platforms in React, Next.js, TypeScript and Node.js. Today I lead the team behind SAP-integrated warehouse systems, and I run my own SaaS, Teeme.

// I lead 3–5 engineers and set the team’s code review workflow and standards.

// Warehouse platforms wired into SAP S/4HANA and SCALE WMS, live over Socket.IO.

// Teeme: a project management SaaS I designed, built and launched solo.

// 40% more data-entry throughput from rewriting nested legacy queries.

How the parts connect

Frontend

Interfaces people work in all day: boards, dashboards and admin tools that stay fast while the data underneath keeps changing.

React / Next.js / TypeScript / Vue.js / Nuxt.js / TanStack / Pinia / Tailwind CSS

Hard part solved: Cut initial page load by 30% by moving key pages to server-side and static rendering.

Seen in: Teeme, Config-driven ERP

projects.forEach(ship)

Selected work

Five things I built and shipped. Each one is a working demo: scroll to follow the story, or use the controls yourself.

Teeme

Project management SaaS for software teams. Designed, built and launched solo.

Founder and engineer, 2025

Next.js / TypeScript / Node.js / Express on Bun / PostgreSQL / Prisma / Claude API / Zod

teeme.org

teeme.org / boardclick a card to move it
To do 2
In progress 2
Done 2

Sprints, live boards, time tracking and analytics.

  1. 1 / 4

    What it is

    Sprints, live Kanban boards, time tracking and analytics in one place. I owned every part of it: product, design, code and launch.

  2. 2 / 4

    A board that stays live

    Work moves across columns as the team moves it. The board is the product’s centre, so it had to feel instant and never show two people different truths.

  3. 3 / 4

    An assistant that asks first

    Type or say what you want and the AI assistant turns it into board actions. It shows what it is about to do, waits for approval, and can only act within the role of the person asking.

  4. 4 / 4

    How it is built

    A multi-tenant Org, Team and Project permission model sits under everything. Every API is JWT-protected and validates its input with Zod before touching PostgreSQL through Prisma.

Config-driven ERP platform

One codebase that ships as separate, fully branded client products.

Full-stack engineer, 2025

React 19 / TypeScript / TanStack / JWT / RBAC

Live client ERPDemo

one codebaseswitch the config file
FTR SteelAdmin

Job orders

+ New
  1. 1 / 4

    What it is

    It runs a steel fabrication company’s production ERP: job orders, workforce management and inventory, with role-based access.

  2. 2 / 4

    A new client is a new file

    Modules, roles, workflows and theming all come from a single JSON config. A new client instance goes live in about 5 minutes with no code changes.

  3. 3 / 4

    Roles decide what exists

    Access is part of the config, not scattered through the UI. Sign in with a different role and the product itself changes shape.

  4. 4 / 4

    Why build it this way

    Custom ERPs usually mean a fork per client and a maintenance bill that grows with each one. Here every client runs the same codebase, so a fix is written once.

QluePrint

A local-first desktop workspace for every database. No account, no cloud, no telemetry.

Creator, 2026

Tauri / Rust / React / TypeScript / Monaco / sqlx

GitHub

QluePrint / demo.sqlitedemo data
1SELECT name, city, total
2FROM customers
3JOIN orders USING (customer_id)
4ORDER BY total DESC LIMIT 4;
namecitytotal
Asha MenonKochi84,200
Rahul NairBengaluru61,750
Lena FischerBerlin48,900
Omar KhalidDubai37,300
  1. 1 / 4

    What it is

    Connect to PostgreSQL, MySQL, MariaDB, SQL Server and SQLite, write and run SQL with schema-aware autocomplete, and browse the results in a fast virtualized grid.

  2. 2 / 4

    Editing without fear

    Edits to cells and rows are staged, undoable and saved in one transaction. Actions your database login isn’t granted are hidden, not left to fail.

  3. 3 / 4

    A record of everything

    The app keeps a tamper-evident audit log, on your machine, of every statement it ran against your databases.

  4. 4 / 4

    How it is built

    A React and Monaco interface talks to a Rust core through Tauri. The Rust side owns the database drivers, and credentials live in the operating system’s keychain.

NinjaTrade

A personal paper-trading platform for monthly index and crypto investing.

Solo developer, 2026

Python / FastAPI / pandas / React 19 / ECharts / systemd / Caddy / Cloudflare Access

daily jobsimplified rules, paper money
Fetch market pricesAbove 200-day trend?noyesFear gate passes?noyesBuy on paperHold this monthTelegram summary
Change today’s market:
  1. 1 / 4

    What it is

    A daily job fetches market prices, invests a monthly amount on paper using backtested rules, and sends a Telegram summary. Paper money only, by design.

  2. 2 / 4

    Rule one: the trend

    The job checks the long-term trend before it does anything. When the market is below its 200-day trend, the flow takes a different branch.

  3. 3 / 4

    Rule two: the fear gate

    A fear-gauge gate is checked next. Rules like these are easy to state and easy to get subtly wrong, which is why the job only uses rules that were backtested first.

  4. 4 / 4

    How it runs

    A FastAPI and React app shows the portfolio, backtests and live server health. It runs on a hardened VM behind Cloudflare Access and Tailscale.

Blacksite

A tactical top-down shooter prototype, built to learn how game systems fit together.

Solo developer, 2026

Godot 4 / GDScript / Raycasting / State machines / Headless tests

blacksite / visionmove your pointer to lead the operator

Solid blocks stop sight. Dashed blocks are low cover: they stop bullets, not eyes.

  1. 1 / 4

    What it is

    Round-based, Blue against Red, first to five. You only see an enemy while your operator actually can, which makes every corner a decision.

  2. 2 / 4

    Two layers of sight

    Something is visible when it is inside either awareness layer and a ray to it is clear. Peripheral vision is wide and short. Weapon sight is narrow and far, so it changes with the gun.

  3. 3 / 4

    Physics in layers

    Movement, bullets, vision and actors each get their own collision layer. Low cover stops bullets but not sight, simply by leaving the vision layer off.

  4. 4 / 4

    Tested like software

    Gameplay rules run as headless tests that exit with a failure the moment something breaks, the same way I would test a service.

explain(system)

Under the hood

The warehouse platform I lead at Digitrell, simplified. Scroll to assemble it, then open any part.

7 Node.js services

What it does
The business rules of the warehouse, split across seven services.
Built with
Node.js, TypeScript, Azure Container Apps
Why it is built this way
Every deploy is a new revision. A bad release is undone by sending traffic back to the previous one, which is how about 29 releases a week stay safe.
  1. Screens
  2. Front door
  3. Services
  4. Data
  5. Outside systems

git log --career

Experience

  1. HEAD

    Jan 2026 – Present

    Senior Software EngineerDigitrell, Kochi, India

    Promoted from Software Engineer (Apr 2025 – Dec 2025) after 9 months.

    • Lead a team of 3–5 engineers on enterprise client projects; introduced the team’s code review workflow and technical standards.
    • Shipped 230+ fixes and features across 7 services in three weeks using AI-assisted development, with about 90 production deploys on Azure Container Apps.
    • Kept production stable while releasing about 29 times a week, using hotfix branches, revision-based deploys and deploy-pipeline fixes.
    • Integrated a second warehouse with a SCALE WMS: two-way sync of customers, carriers, buildings and appointments, with per-facility access.
    • Architected a high-concurrency warehouse platform integrated with SAP S/4HANA, with real-time Socket.IO dashboards for live operations.
    • Increased data-entry throughput by 40% by rewriting nested legacy queries and redesigning batch processing.
    • Designed a transaction-safe ledger pipeline for automated cashflow posting with a complete audit trail, on Azure with API Management and CI/CD.
  2. HEAD~1

    Jan 2024 – Mar 2025

    Frontend DeveloperFPLE Technologies, Bengaluru, India
    • Improved Core Web Vitals and initial page load by 30% by moving key pages to server-side and static rendering in Nuxt.js.
    • Built a reusable Vue.js component library with centralized Pinia state, speeding up delivery and keeping the UI consistent across products.
  3. HEAD~2

    Jan 2023 – Jan 2024

    MERN Stack DeveloperScipy Technologies, Thiruvananthapuram, India
    • Migrated legacy multi-page workflows to React SPAs and built modular REST APIs in Node.js, TypeScript and MongoDB.
  4. init

    2019 – 2023

    B.Tech, Computer ScienceVidya Academy of Science and Technology, Kerala, India
    • CGPA 8.6 / 10.

if (curious) play()

Throw my stack around

Everything I work with, as rigid bodies. Drag one, throw it, or push through the pile with your pointer.

  • React
  • Next.js
  • TypeScript
  • Node.js
  • Vue.js
  • Nuxt.js
  • TanStack
  • Tailwind
  • Express
  • Bun
  • Socket.IO
  • Zod
  • PostgreSQL
  • Azure SQL
  • MongoDB
  • Prisma
  • Azure
  • Vercel
  • RBAC
  • SAP S/4HANA
  • Claude API
  • Rust
  • Tauri
  • Python

return contact;

Have a challenging problem?Let’s build something remarkable.

Based in Kochi, India. Open to remote roles and to relocating to the UAE, Australia or Germany.