Open to Full Stack, Frontend, Backend, AI and QA Engineer roles

Josip Tadić, Full Stack Engineer

I write TypeScript from the browser to the API to the database, and I own what happens between them.

5+ years of TypeScript, React and Node.js on products people use every day, plus LLM pipelines running in production.

  • Remote or hybrid, EU & worldwide
  • EU citizen, no sponsorship needed in the EU
  • Based in Čakovec/Varaždin, Croatia
Full stack, layer by layer

Frontend

  1. Design system
    • CSS
    • Sass/SCSS
    • Tailwind CSS
  2. UI
    • React
    • Next.js
  3. State
    • Redux Toolkit
    • Context API

Backend

  1. API
    • Node.js
    • Express
  2. Database
    • PostgreSQL
    • MongoDB

AI

  1. AI integration
    • LLMs
    • RAG
    • Agents
All skills
Latest role
Full Stack DeveloperChanalyze, 2022 to 2026
Career
7+ years in software5+ as a developer, after QA
Domains
Pharma, ERP/CRM, Web3Tourism SaaS at Uniline
Based in
Čakovec/Varaždin, CroatiaCentral European Time
Education
Master’s in ITUniversity of Pula, 2021
Languages
Croatian, EnglishNative, C1

How I work

On my last platform there were two core developers, so every layer was ours to get right. These habits come from that, and from starting out in QA.

  • I own features end to end

    Schema, API, state and UI, plus the client conversation before them. On a two-person core team there was no one to hand a layer to.

  • I fix the data model first

    When the same bug keeps surfacing in the UI, the cause is often in how the data is stored. Changing that is usually cheaper than rewriting the code around it.

  • I think like QA

    Two years of testing came before my first developer job: 100+ defects logged and verified across every major browser engine. That’s where I learned how edge cases and API contracts fail.

  • I talk to the people using it

    At Chanalyze I met enterprise client stakeholders every week to work through technical and UX questions with them directly.

  • I write it down

    Developer documentation and company-wide guides for the design system I maintained, plus three published articles and papers.

  • I work with AI agents, and review them

    Coding agents are part of my daily workflow, from test harnesses to a first pass of code review. How I use AI

Experience

Four roles since March 2019, newest first. It started in QA, which is where I learned how software actually breaks.

August 2022 to June 2026 Full Stack Developer Chanalyze d.o.o. / Tria d.o.o. Čakovec / Remote, Croatia

One of two core developers on an enterprise analytics platform for medical research. I owned the database architecture, the backend APIs and the client-side state, and met enterprise client stakeholders every week to advise on technical and UX questions.

Technologies

  • TypeScript
  • JavaScript
  • React
  • Next.js
  • Redux Toolkit
  • Context API
  • Node.js
  • Express.js
  • PostgreSQL
  • MongoDB
  • Azure OpenAI
  • n8n
  • Docker
  • AnyChart
  • Tailwind CSS
  • Fixed a 4-year-old bug where one user’s dashboard filters overwrote everyone else’s, by adding a user-scoped overlay table instead of rewriting the app. Case 01
  • Merged 10+ enterprise client configurations into one deployment with group-based tenant isolation in PostgreSQL and MongoDB, which cut hosting costs. Case 02
  • Maintained the company’s 30+ component TypeScript and React design system as its main maintainer. New ERP and CRM projects started in half the time. Case 03
  • Built medical data extraction pipelines with Azure OpenAI GPT, featuring dynamic prompt construction, automated retries, token/spending tracking and JSON schema validation. Case 04
  • Built workflow automation integrations with n8n and Docker for internal platform services.
  • Built filterable analytics dashboards with AnyChart, React, Redux Toolkit and Context API for dense research data: stacked and grouped bar charts, line and area time series, heat maps, Sankey diagrams, treemaps, scatter and bubble plots, box plots, Venn diagrams and network graphs.
  • Designed, shipped and maintained features end to end in TypeScript, Node.js, Express, React, PostgreSQL and MongoDB.
January 2022 to July 2022 Frontend Developer (Web3 & Interactive 3D) Valere Margins Zagreb / Remote, Croatia

Frontend work for Web3 platforms, NFT minting and browser games, with real-time state management throughout.

Technologies

  • React
  • TypeScript
  • Three.js
  • Ethers.js
  • WebSockets
  • HTML5
  • CSS3/Tailwind
  • Node.js
  • Express.js
  • Built the complete frontend for Ethereum smart contract calls and NFT minting with Ethers.js. Case 05
  • Made a Three.js scene render 50% faster by cutting draw calls, optimizing geometry and lazy-loading assets.
  • Synced live game state and transaction feeds from the Solana blockchain over WebSockets, with optimistic UI updates.
  • Built cross-browser React and TypeScript interfaces with strict API contracts and real-time data flow.
July 2021 to October 2021 Junior Software Developer Uniline d.o.o. Pula / Remote, Croatia

Enterprise tourism management platforms: backend REST APIs and dense data-grid interfaces.

Technologies

  • C#
  • .NET Core
  • Angular
  • TypeScript
  • DevExtreme
  • MariaDB
  • MySQL
  • REST APIs
  • Swagger
  • Wrote REST endpoints in .NET Core (C#) to OpenAPI/Swagger standards, with versioning and strongly typed DTOs at the boundaries.
  • Built enterprise data grids in Angular and TypeScript with DevExtreme, including server-side paging, sorting, filtering and grouping.
  • Helped model MySQL and MariaDB schemas and optimize queries for high-volume reads.
March 2019 to July 2021 QA Engineer / Technical Support Specialist Uniline d.o.o. Pula / Remote, Croatia

Led quality assurance and partner integration support for the company’s core ERP system, with a focus on reliability, API contracts and edge cases.

Technologies

  • Selenium IDE
  • Postman
  • JIRA
  • Redmine
  • .NET Core
  • C#
  • Browser DevTools
  • Logged, triaged and verified 100+ reproducible defects in JIRA and Redmine, found with manual and Selenium IDE test suites I wrote and ran.
  • Tested systematically across all major desktop and mobile browser engines and devices.
  • Debugged partner API integrations in Postman, down to HTTP payloads and authentication headers, and wrote the technical documentation for them.
  • Shipped C#/.NET Core fixes straight into releases when production issues were critical.

AI, in production and every day

I’ve shipped LLM pipelines to production, built my own RAG system, and work alongside coding agents every day.

In production, at Chanalyze

LLM extraction pipelines

A production Azure OpenAI pipeline that pulls and filters relevant research documents, builds dynamic prompts, monitors token counts and spendings, handles retries, and validates all structured outputs against JSON schemas.

  • Dynamic prompt & context construction
  • Token count & API spend tracking
  • Database lifecycle audit & retries
  • Structured output validation
Case 04

Every day

Coding with agents

Claude Code, OpenCode and Google Antigravity are part of how I build. I set up the agent environment for each project and review what the agents produce.

  • Code generation
  • Test harnesses and edge cases
  • Bug detection before code review
  • Documentation drafts
  • Azure OpenAI GPT
  • OpenAI API
  • Claude API
  • Prompt engineering
  • Docker
  • pgvector
  • Embeddings
  • Claude Code
  • OpenCode
  • Google Antigravity

Built on my own time

What I have been working on since leaving Chanalyze: two client websites taken from concept to launch, and a RAG system built to learn vector search hands-on.

Client work, 2026 · live

Einfach Stickerei website

Design and UI architecture for a textile embroidery and garment printing company in Stuttgart (einfach-stickerei.de). Clean, conversion-focused layout showcasing corporate fashion, custom embroidery services, and quote inquiry flows.

  • Structured service catalog and customer inquiry journey
  • Mobile-first responsive layout, modern branding and performance-tuned design
  • UI/UX Design
  • HTML5
  • CSS3
  • Responsive Web
einfach-stickerei.de (opens in a new tab)

Client work, 2026 · live

Spinalis Fizio centar website

A landing and services site for a physiotherapy centre in Labin. I did all of it: client discovery, UI design, the build, and deployment on Vercel with a custom domain.

  • Mobile-first layout that holds up on every screen size
  • Tuned for Core Web Vitals (LCP, INP, CLS) and local search
  • HTML5
  • CSS3
  • JavaScript
  • Vercel
spinalis-fiziocentar.hr (opens in a new tab)

Self-directed, since June 2026

A personal RAG system

Retrieval-augmented generation on PostgreSQL with pgvector, built to learn vector search hands-on, end to end.

  • Document chunking strategies
  • Embeddings and similarity search
  • Hybrid retrieval for question answering
  • PostgreSQL
  • pgvector
  • Embeddings

Skills

Grouped the way most job specs ask for them.

Filled: used in my latest role (Chanalyze, 2022 to 2026) or every day now.

Languages
  • TypeScript, current
  • JavaScript (ES2024+), current
  • SQL, current
  • HTML5, current
  • CSS3, current
  • Sass/SCSS, current
  • C#
Frontend
  • React, current
  • Next.js (App Router), current
  • Tailwind CSS, current
  • Redux Toolkit, current
  • Context API, current
  • Design systems, current
  • Angular
  • DevExtreme
Data visualization
  • AnyChart, current
  • Interactive dashboards, current
  • Bar and time series charts, current
  • Heat maps, current
  • Sankey diagrams, current
  • Treemaps, current
  • Scatter and bubble plots, current
  • Box plots, current
  • Network graphs, current
Backend & APIs
  • Node.js, current
  • Express.js, current
  • n8n workflow automation, current
  • RESTful APIs
  • GraphQL
  • WebSockets
  • OpenAPI/Swagger
  • .NET Core
Databases & data modeling
  • PostgreSQL, current
  • MongoDB, current
  • Multi-tenant architecture, current
  • Schema design, current
  • Index tuning
  • MariaDB
  • MySQL
  • pgvector
AI & LLMs
  • Azure OpenAI GPT, current
  • System prompt architecture, current
  • Few-shot prompting, current
  • Structured output validation, current
  • Token & cost tracking, current
  • OpenAI API
  • Claude API
  • RAG
  • Embeddings
  • Semantic search
AI-assisted development
  • Claude Code, current
  • OpenCode, current
  • Google Antigravity, current
  • Agentic workflows, current
  • AI test authoring, current
  • Pre-review bug detection, current
3D & Web3
  • Three.js (draw-call optimization)
  • Ethers.js
  • Web3 wallet integration
Testing & QA
  • Jest
  • React Testing Library
  • Selenium IDE
  • Postman
  • Cross-browser testing
  • JIRA
  • Redmine
DevOps & tooling
  • Docker, current
  • Vite, current
  • npm, current
  • Git
  • GitHub Actions
  • CI/CD
  • Webpack
  • Vercel
  • Netlify
Architecture & performance
  • Multi-tenancy, current
  • User-scoped delta overlays, current
  • Component libraries, current
  • Mobile-first
  • Core Web Vitals
  • Clean Architecture

Publications & technical writing

  1. 2024

    “Mobile First Approach: Why Start Small”

    Tria d.o.o.

    Focus Responsive web architecture, performance-first mobile design, Core Web Vitals, and search visibility.

  2. 2023

    “Implementing Dark Theme in React Applications”

    Tria d.o.o.

    Focus State persistence, a CSS variables architecture, accessibility (WCAG), and transitions between themes without a flash.

    This page’s theme switch is built the same way.

  3. 2020

    “Geoinformation Systems and Cloud Computing”

    PRINTING & DESIGN 2020 Conference, peer-reviewed, co-author

    Focus GIS data processing, cloud infrastructure scalability, and spatial information systems.

Education & languages

  • Master of Information Technologies

    Faculty of Informatics, Juraj Dobrila University of Pula

    September 2019 to September 2021 · Pula, Croatia

  • Bachelor of Information Technologies

    Faculty of Informatics, Juraj Dobrila University of Pula

    September 2015 to June 2019 · Pula, Croatia

Languages

Croatian
Native
English
C1, professional working proficiency

Case 01 · Healthcare analytics, interactive dashboards

Fixing a 4-year-old bug without a rewrite

When User A filtered a shared dashboard, User B’s screen refreshed with User A’s filters. I fixed it in days by changing where filters are stored.

  • PostgreSQL
  • Node.js
  • React
  • Context API
  • Redux Toolkit

Context

An enterprise analytics platform let teams share interactive dashboards. Every filter change wrote straight to the shared report entity in the database, so anyone else looking at that report got someone else's filters. That cross-user bleed had been open for 4 years and was blocking several roadmap deliverables. Senior leadership had already assessed a full-stack decoupling refactor and judged it high-risk and too costly for a system in active use.

Decision

I left most of the application code alone and solved it in the data model, with a User-Scoped Configuration Overlay.

  1. A lightweight secondary table, user_report_configs, stores each user's filter adjustments strictly as state deltas.
  2. On every report load, an automated backend fallback layer checks whether that user has an active delta.
  3. If a delta exists, it overlays onto the base template. If not, the user gets the default global template, with no side effects.

Simulation, sample data

Break it, then fix it

Pick a period filter as User A or User B. With a shared report entity, the other screen changes too. Switch to the overlay and each filter lands in user_report_configs instead.

Storage model

User A

Shared row

User B

Shared row

Database

reports
idfilters
shared_report{"period":"All"}
user_report_configs not used by this model
user_idreport_iddelta
0 rows

Both users are looking at the same shared report.

Result

  • Zero regressions. The multi-month refactor never had to happen.
  • The roadmap features that had stalled behind the bug were unblocked.

Architectural lesson

Changing the data model is often safer and faster than refactoring the code around it.

More case studies

Multi-tenancy, a design system, an LLM pipeline, and real-time Web3 and 3D. Each one lists the stack, the decision and what changed.

Case 02 · Medical research platform, enterprise SaaS

  • PostgreSQL
  • MongoDB
  • Node.js
  • Docker

10+ clients, one deployment

Multi-tenant isolation in PostgreSQL and MongoDB, so competing clients share a platform but never each other’s data.

10+ dedicated instances became one deployment, with tenant groups isolated in PostgreSQL and in MongoDB.

Context

The platform served over 10 enterprise clients, each on its own dedicated configuration and instance. Infrastructure overhead was heavy, hosting bills were high, and every deployment was complex and easy to get wrong.

Decision

I designed group-based tenant isolation for both the relational and the document database, then moved every client environment into one scalable deployment.

Result

  • 10+ isolated configurations consolidated into one production deployment.
  • Duplicate cloud hosting and DevOps work cut sharply.
  • New enterprise onboarding moved from manual, multi-day provisioning to config-driven deployment.

Case 03 · Enterprise ERP, CRM and custom client apps

  • React
  • TypeScript
  • CSS
  • Sass/SCSS
  • Tailwind CSS
  • npm private packages
  • Vite

New projects set up in half the time

A shared React and TypeScript design system of 30+ components, maintained independently.

30+ components sharing one theme contract. Flip it and every tile switches at once, the way consuming apps did.

Context

Teams building ERP and CRM client modules kept duplicating code, the UI drifted from product to product, and each new project began with slow setup.

Decision

I was the main maintainer of the internal component library, published as private npm packages, and built strongly typed, accessible, reusable components with strict props contracts. Theme switching, dark mode and layout standards became shared by every app that used it.

Result

  • Consistent, accessible UI across client-facing enterprise tools.
  • Developer documentation and company-wide best-practice guides, written alongside the library.

Case 04 · Biotech, medical research data extraction

  • Azure OpenAI GPT
  • Node.js
  • TypeScript
  • Docker
  • PostgreSQL
  • React
  • AnyChart

Research analysis cut from days to minutes

A production LLM pipeline with dynamic prompt assembly, token tracking, request retries and schema-valid output.

  1. Document retrievalfiltered & sorted clinical records
  2. Prompt builderdynamic context & prompt construction
  3. Azure OpenAI GPTfew-shot extraction & retries
  4. JSON schemastrict output validation
  5. PostgreSQLstep audit, tokens & spend tracking
  6. React + AnyChartinteractive analytics dashboards
Every model request tracks tokens, spend, retries and schema validation before reaching SQL and the dashboards.

Context

Researchers spent hundreds of manual hours reviewing dense, non-standardized medical research documents and pulling structured parameters out by hand.

Decision

I built a dedicated Azure OpenAI integration in Node.js and TypeScript. The backend pulls, filters and sorts relevant research documents, constructs dynamic few-shot prompts, and manages requests with automated retries. Every step is tracked through PostgreSQL, auditing the pipeline lifecycle, token counts and API spendings, while strict JSON schema validation ensures only clean, structured data reaches the database and surfaces in interactive React and AnyChart dashboards.

Result

  • Manual document processing stopped being the bottleneck.
  • Full observability: request retries, token usage and spend tracked per execution.
  • High extraction accuracy with schema validation preventing corrupt data from reaching SQL.

Case 05 · Web3 gaming and asset minting

  • React
  • TypeScript
  • Three.js
  • Ethers.js
  • WebSockets
  • Solana
  • Ethereum

NFT minting, a live RPG and a 3D scene made 50% faster

Three separate pieces of frontend work at Valere Margins, each with its own hard constraint.

Minting frontend

The complete presentation and transaction layer for an Ethereum asset system: MetaMask wallet sign-in, Ethers.js contract calls and backend transaction tracking.

Live RPG

Real-time, two-way state sync over WebSockets for a web RPG that reads Solana blockchain state, with optimistic UI updates to keep it responsive.

3D performance

I profiled a Three.js scene, then cut draw calls, optimized geometry and lazy-loaded assets. Frame rates and page performance improved by 50%.

Send me the role.

Email is quickest. Tell me about the team, the stack and the system that needs to change.

I’m in Čakovec/Varaždin, Croatia, on Central European Time, and open to remote or hybrid roles in the EU and worldwide. As an EU citizen, I don’t need sponsorship to work anywhere in the EU.