Fran Hrženjak, Developer in Zagreb, Croatia
Fran is available for hire
Hire Fran

Fran Hrženjak

Full-stack Web Developer

Zagreb, Croatia

Toptal member since December 10, 2013

Bio

Fran is a full-stack web developer who also occasionally develops for Linux command line, mobile and desktop apps, and hardware devices on the Arduino platform. He enjoys working with the Django web framework and Python in general. He is proficient in PHP and has substantial experience working with WordPress and Magento.

Portfolio

Cognite AS
Python, JavaScript, Plotly, Authentication, Flask, Dash, React, Workflows...
Cognite AS
Python, JavaScript, Plotly, Authentication, Flask, Dash, React, Pandas, Docker...
Croatian Air Traffic Control
Django, Python, Cordova, .NET, REST APIs, iOS...

Experience

  • Python - 13 years
  • Django - 12 years
  • REST APIs - 10 years
  • Git - 10 years
  • Django REST Framework - 10 years
  • Test-driven Development (TDD) - 7 years
  • GitHub Actions - 3 years
  • Dash - 2 years

Preferred Environment

GitFlow, GitHub, Linux, MacOS, Zoom, Claude, Agentic AI, AI Agents, Docker, Amazon Web Services (AWS), Ubuntu, Bash, Sentry, Puppeteer

The most amazing...

...software I've written is code for controlling a 24 ton telescope with high precision. In 2018 the telescope was ranked third worldwide in its niche.

Work Experience

Python Full-stack Developer

2023 - 2024
Cognite AS
  • Led migration of the preprocessor from legacy data models to Cognite's Flexible Data Model, rewriting the data reader layer and function input/output handling.
  • Built integration test infrastructure with approval client mocking, pass-through proxy patterns, and YAML-based test fixtures.
  • Consolidated the preprocessor from a dedicated repository into the monorepo, standardizing function task schemas across all 12 serverless functions.
  • Worked on workflow orchestration with dynamic parallelism, where a dispatcher generates variable-length task lists that scale with configuration, not code.
  • Contributed to the PowerOps Python SDK, focusing on client instantiation patterns, model fixes, and configuration synchronization tooling.
  • Refactored the bid matrix calculation pipeline including alert handling and FDM schema alignment.
  • Contributed to the GraphQL code generation tool, the solver wrapper library, and the FDM schema definitions for the PowerOps domain.
  • Designed error handling for graceful degradation: partial failures create alerts and continue rather than crashing the pipeline.
Technologies: Python, JavaScript, Plotly, Authentication, Flask, Dash, React, Workflows, Engines, Data Extraction, Data Pipelines, Pandas, TypeScript, Docker, Amazon Web Services (AWS), Amazon S3 (AWS S3), Ubuntu, Deployment, Pipelines, API Development, Finance, Development, Pydantic, API Connectors, ETL, Data Engineering, Data Transformation, ETL Tools, Data Scraping, Data Processing Automation, ETL Pipelines

Lead Developer

2020 - 2023
Cognite AS
  • Took over and maintained a 35,000-line enterprise application over four years, authoring around 93% of the final codebase across Django, Plotly Dash, Flask, and Cognite Data Fusion.
  • Designed a configuration-driven UI layer where the entire Dash front end is defined by Django admin models, letting operators add tables, charts, and data sources without code changes.
  • Built a generic table component with dynamic columns, user input validation, real-time formatting, totals, and markdown editing, with around 500 lines of client-side JavaScript for improved performance.
  • Led the migration from Lundin to AkerBP infrastructure, adding multi-tenant support and PostgreSQL while keeping the application running in production.
  • Published cognite-synthetic-tags on PyPI: a declarative expression-tree library for time series data with lazy evaluation, batch optimization, and multi-store support.
  • Built cognite-dash-toolbox, an internal reusable component library for Plotly Dash applications with CDF integration, used across the team's projects.
  • Implemented plan lifecycle management (draft, pending, approved, and archived) with flexible draft storage and permanent time series for approved data.
  • Built internal app templates and a demo application that became the standard deployment pattern for the team's customer-facing Dash applications.
  • Implemented Prometheus monitoring, OAuth 2.0 via Azure AD, multi-stage Docker builds, and CI/CD pipelines across development, testing, and production environments.
Technologies: Python, JavaScript, Plotly, Authentication, Flask, Dash, React, Pandas, Docker, Amazon Web Services (AWS), Amazon S3 (AWS S3), Ubuntu, User Interface (UI), User Experience (UX), Deployment, Pipelines, API Development, Development, Pydantic, Automation Scripting, API Connectors, Data Engineering, Data Transformation, ETL Tools, Data Processing Automation, ETL Pipelines

Solutions Architect

2019 - 2022
Croatian Air Traffic Control
  • Created a cross-platform application from scratch for iPadOS and Windows. The app also works as a web app.
  • Made extensive use of the Django admin with some special features developed to make the configuration easier where standard browser inputs would be awkward to use.
  • Contributed to a clever multiplatform setup schema from the browser, presenting different options depending on the detected OS and device (Setup.exe for Windows, PWA for iPadOS, web app otherwise).
  • Worked on sound effects for time-sensitive events in the application (received messages with timed expiration).
Technologies: Django, Python, Cordova, .NET, REST APIs, iOS, Progressive Web Applications (PWAs), APIs, Back-end, Full-stack, React, PostgreSQL, CI/CD Pipelines, PWA, Docker Compose, Redis, API Architecture, Full-stack Development, API Design, API Integration, Vite, Docker, Amazon Web Services (AWS), Amazon EC2, Amazon S3 (AWS S3), WebSockets, Ubuntu, User Interface (UI), User Experience (UX), Bash, Deployment, API Development, Development, JavaScript, Automation Scripting

Senior Django Developer via Toptal

2016 - 2019
Consumers Unified, LLC
  • Participated in breaking up a monolith codebase into manageable microservices and worked on further development of the product within the microservice approach.
  • Developed the back end and influenced the front end of an interesting wizard-style questionnaire for gathering visitors' needs and recommending a suitable partner.
  • Tracked bugs and maintained a production site in working order using a mix of internal and commercial tools and services.
Technologies: Python, Django, JavaScript, CSS, CoffeeScript, Git, GitHub, Agile Software Development, MySQL, Single Sign-on (SSO), Google Sign-in, Websites, Unit Testing, Back-end, CI/CD Pipelines, Redis, Full-stack Development, API Integration, Google Cloud Platform (GCP), Node.js, Microservices Architecture, Microservices, TypeScript, Amazon S3 (AWS S3), Ubuntu, User Experience (UX), Pipelines, API Development, Development, Web Scraping

Tech Lead

2010 - 2019
Astro.hr
  • Architected and led the development of computerizing a 24-ton telescope using many different technologies.
  • Developed low-level command-line control software and APIs in Python.
  • Led the development of several device drivers for Windows in C#.NET, utilizing the previously developed APIs.
  • Constructed and assembled multiple auxiliary hardware devices for the telescope (e.g., wireless controller for dome doors, focuser, ventilator controller, lights controller, etc.) using Arduino platform and Eagle PCB design software.
  • Updated a Linux device driver written in C for position encoders to work on a newer Linux kernel.
  • Architected and led the ongoing development of a search and retrieval system using PostgreSQL, Django, and Bash. This system facilitates the precovery of asteroids by searching through previously made images of the sky.
Technologies: Electronics, C#.NET, Arduino, C++, Python, APIs, Back-end, API Architecture, API Design, Workflow Automation & System Integration, Automation, Webhooks, Ubuntu, Bash, Automations, Scripting, API Development, Development, JavaScript, Automation Scripting

Freelance Developer

2012 - 2015
Changeset.hr
  • Consulted clients, chose technologies, and established project tech details.
  • Created efficient HTML/CSS/JavaScript front ends from PSD files.
  • Explored the various aspects of WooCommerce, created a payment gateway module, and developed various customizations for several projects.
  • Created a plugin to allow WordPress admins to order users with a drag-and-drop feature.
  • Created a full-layout template system operating on top of Visual Composer in WordPress.
  • Mastered Debian/Linux services and created two custom hardware-interfacing services for position encoders readout.
  • Created a number of WordPress sites with various designs and features, ranging from simple corporate blogs to eCommerce sites with complex layouts and custom data structures.
Technologies: JavaScript, CSS3, HTML5, WooCommerce, WordPress, PHP, Django, Python, Websites, Unit Testing, APIs, Back-end, Full-stack, React, Azure, PostgreSQL, CI/CD Pipelines, Amazon Web Services (AWS), Redis, Full-stack Development, Zapier, Webhooks, Amazon EC2, Amazon S3 (AWS S3), Ubuntu, User Interface (UI), User Experience (UX), Twilio, Twilio API, Deployment, QA Automation, API Development, Development, SQLite, Automation Scripting, Web Scraping

Co-founder

2012 - 2014
Backre.st
  • Created a site for back-end services to allow users to create REST APIs using a web interface.
  • Became very knowledgeable about REST and gained experience building complex RESTful APIs.
  • Used MongoDB and PostgreSQL together for a Django project.
  • Studied the challenges of authenticating secondary API users.
  • Created a custom server-side JavaScript validation system for user-input data.
Technologies: Server-side JavaScript, REST, Django, Websites, Unit Testing, Python, APIs, Back-end, Full-stack, PostgreSQL, Minimum Viable Product (MVP), Full-stack Development, API Integration, Node.js, Microservices Architecture, Microservices, Webhooks, API Development, Development, JavaScript

Senior Developer

2012 - 2012
Kolektiva Web
  • Developed sites and modules for several sites powered by Magento professional edition sharing the same codebase.
  • Fixed bugs specific to the cloud setup, such as mysteriously missing orders, inventory oversells, etc.
  • Migrated large databases, several gigabytes in size, with sensitive data.
  • Worked with various business-enhancement APIs, including affiliate services, smart newsletter services, visitor behavior tracking, etc.
  • Set up Jenkins and Mercurial for continuous code integration in a scrum development team.
Technologies: Private Clouds, JavaScript, Magento, Cloud Computing, Websites, Unit Testing, APIs, Back-end, Full-stack, CI/CD Pipelines, Microservices, User Experience (UX), API Development, Development, Web Scraping, Website Data Scraping

Developer and Tech Lead

2009 - 2012
Hi-Tech
  • Developed many different projects using PHP, mostly with WordPress.
  • Created several Facebook apps with Django and Fandjango apps.
  • Developed front-end skills thanks to my colleagues' help. Built front-end and back-end projects.
  • Took care of the company's product quality level for both the back end and front end.
  • Led the development team, worked with the sales department, and offered support during client meetings.
  • Translated the wishes of the clients into needs and made technology decisions accordingly.
  • Tried several PHP frameworks, CMSs, and shops, including eZ Publish, CodeIgniter, Template Tamer, PrestaShop, and more.
Technologies: Facebook API, Django, WordPress, PHP, Websites, Full-stack, CI/CD Pipelines, User Interface (UI), User Experience (UX), Deployment, Development, JavaScript, SQLite, Web Scraping, Data Scraping, Website Data Scraping

Experience

Astronomical Observatory in Tican

https://changeset.hr/portfolio/astrohr
I worked as a tech lead and main developer on a project to computerize a large, 1-meter (diameter) 24-ton telescope at the astronomical observatory on Tičan, Croatia. This is an ongoing multi-year effort, and a combination of professional and volunteer work. The telescope began operating full-time in 2017, and in 2018, it ranked third worldwide in the number of confirmation and follow-up measurements of newly discovered asteroids.

Air Traffic Controller Training System

https://changeset.hr/portfolio/air-traffic-controller-training-system
This is an in-house solution for an air traffic controller training center. New candidates for air traffic controllers go through extensive simulations, called games, in which instructors put them through various simulated situations in air traffic control that they then have to correctly resolve in real time.

Before this project, the candidates and instructors who set up and ran the games communicated using ad hoc solutions such as WhatsApp or Viber, or sometimes by walking up to each other to share changes to the game. This was very inefficient and often ruined the element of surprise that the instructors were trying to create for candidates. To facilitate better communication between candidates and instructors, the client envisioned a centralized system to which every pilot would connect using their PC, and every instructor would connect via a custom mobile app.

My job was to take the client's specifications and talk with them to understand their problem fully. After this, I assembled all the technologies and techniques needed for the project, i.e., I architected the solution. Finally, I integrated a design and implemented the system.

Django Source Code Contributions

https://github.com/django/django/pull/11504
I was added to the "authors" list for Django, my favorite open-source web framework, for fixing a bug that was sitting for nine years in the admin interface.

I am proud of the achievement, and hope to contribute again in the future.

Original bug report: #15910
I worked from a newer report, but same bug: #29087

Danish State Visits and Urban Danish Solutions

A collection of sites for the Danish Ministry of Foreign Affairs. Each site is dedicated to one official visit of a business and state delegation to another country.

Each site features:
• Public section, with content and structure fully editable via CMS
• Registration and logistical information for participating company representatives
• Elaborate administration interface that aids the organizer team

There are three sites thus far:
https://hr2014.urbandanish.solutions/ (previously https://danishstatevisit.hr/)
https://danishstatevisit.dk/indonesia2015/
https://danishroyalvisit.dk/italy2018/

Developed in Django/Python. The front end was outsourced and is based on Bootstrap.

As of 2019, the project is still public and has been forked/pivoted to another type of events (organized by Danish Embassy in Zagreb). These events are more focused on a single industry at the time, e.g:
https://www.urbandanish.solutions/smartcities2017/
https://www.urbandanish.solutions/smartislands2018/
https://www.urbandanish.solutions/watercroatia2019/

Screenshot are available here: http://changeset.hr/portfolio/danishstatevisit-hr

Front Page Slider for McDonands.hr

A fully customizable front page slider driven by the WordPress admin panel.

Google Maps in Django Admin

A user-friendly (point and click) Google Maps tool for the Django admin panel that was developed for a tourist service.

BuraZnanja (gust of knowledge)

A Croatian e-learning platform for the University of Rijeka that is based on Django. I created the back end, which features multiple courses, user registration, signup for courses, video lessons (YouTube), and quizzes.

Bellaloopa

A fully customizable layout template solution that I created to address inconsistent layouts between content types.

Real-time Device Management System

The project involved interacting with PLC devices, encompassing reading and writing operations. I successfully accomplished the coding task within 48 hours, including an additional sub-task of containerizing the project and publishing it online.

Several key features include:

• Implementation of a dummy PLC reader module designed for testing purposes.
• Utilization of Celery for background tasks
• Incorporation of a graphical representation illustrating the uptime and downtime of each device
• Provision of a feature to download the graph mentioned above as a PDF generated on the server side
• Full containerization of the project through Docker Compose, facilitating swift local deployment

I can provide a concise file containing PLC reader classes upon request. This file illustrates class inheritance, type annotations, and commenting. The class in use, whether FakeReader or PLCReader, is determined by the project settings file, where it is configured as a string value for dynamic import. This approach resembles how Django configures middlewares and other dynamically loaded elements.

RaspberryPi Network Status Board

SysStat is a lightweight monitoring tool I built for Raspberry Pi devices with the PiHut StatusBoard hat. It monitors up to five networked devices using LEDs, which indicate online status with green and offline status with red. Simple as that.

The system periodically pings your devices (servers, workstations, IoT gadgets, etc.) and activates the corresponding LED. No dashboards or logs to check—just glance at the board. Perfect for home labs, small networks, or anywhere you need instant visibility without the complexity of enterprise monitoring.

I built in network configuration so you can set the Pi to use either a static IP or DHCP without manually editing config files. This makes deployment quick, whether you need a fixed address or simply want to drop it into a network and get started.

Everything is managed through a web interface running on the Pi. Configure monitored hosts, adjust network settings, and tweak behavior from any browser on your local network. There's also a CLI for those who prefer the command line.

SysStat is designed for hobbyists, makers, and small-scale administrators who want a low-maintenance way to monitor network devices. Always-on, minimal hardware, gets the job done.

Oil & Gas Production Planning System

https://changeset.hr/portfolio/oil-gas-production-planning-system
I took over the front-end development for an operational planning system for offshore industrial teams. Over three years, I evolved it from an early prototype into a mature, daily-use application and supported it through significant organizational change while keeping production stable.

The application enables teams to create, review, and approve daily plans. A key feature I designed was making the UI and workflows configurable through an admin interface, allowing non-developers to add tables, charts, tabs, and data connections without code changes—shifting routine changes from engineering to self-service for operations.

The system integrates with an enterprise data platform for storage and scheduled synchronization and supports a clear lifecycle from drafts to approved, auditable records. Stack: Django, Plotly Dash, and Flask.

Over time, I added operational hardening (monitoring, audit logging, and multi-environment deployments). I also released two supporting libraries adopted across the team: an open-source Python package for declarative time-series retrieval and a reusable UI component library used across related applications.

Industrial Economic Analysis Tool

https://changeset.hr/portfolio/industrial-economic-analysis-tool
I led the technical development of a web-based economic analysis tool to evaluate project viability in the climate/industrial domain. Engineers and economists use the app to define scenarios with technical and financial inputs and compute a levelized unit-cost metric under discounted cash-flow assumptions.

I built the foundation and the Chrome: Django back end and models, dynamic input forms, Plotly/Dash visualizations, integration with an enterprise data platform, and Kubernetes deployment config. The calculations engine (DCF, NPV/IRR, levelized-cost solving) was built by domain specialists; I designed a clean serialization boundary so both layers could evolve independently.

The input workflow supports dozens of parameters via structured Django forms with validation and a draft/error flow—failed runs still save with actionable feedback so users can fix inputs and retry. Outputs include three views: KPI summary with breakdown charts, an annualized lifetime table, and a sensitivity analysis view.

ManageCommand – Django Management Commands Without SSH

https://managecommand.com/
My own product. A SaaS tool that gives Django teams a web dashboard for running, scheduling, and auditing management commands without SSH access to production servers.

The problem: Django management commands are powerful, but running them in production often requires SSH access, cron jobs with no visibility, or setting up Celery just to run a single command. ManageCommand replaces all of that with a pip install and a single line in settings.

Two parts. The runner is an open-source Python package that you install alongside your Django app. It connects outbound to the ManageCommand dashboard, syncs available commands, and polls for executions. The dashboard is the hosted web app where your team triggers commands, sets up schedules, and reviews execution history.

Security was the primary design constraint. The runner only makes outbound HTTPS connections, so you never open ports. Only explicitly allowlisted commands can run. No remote shell, no arbitrary code execution. Every execution is logged with user, time, arguments, output, and result.

I designed and built the whole thing: the runner package, the dashboard, the landing page, the documentation, the security model, and the go-to-market.

Advanced Django Admin: Nested Drag & Drop, M2M Matrix, AI Test Suite

https://changeset.hr/portfolio/advanced-django-admin-nested-drag-drop-m2m-matrix-ai-test-suite
Custom Django admin interfaces for CareSolace, a mental health care platform. A question and answer tree editor using django-nested-inline with custom cross-level drag and drop on self-referencing hierarchies. A license matrix widget rendering hundreds of M2M relationships as a checkbox grid with check-all, clear-all, and copy tools for rows and columns. A versioned AI configuration system with YAML export/import, license validation, and regression test suites running 200+ cases via Celery with parallel runners and statistical scoring.

PDF Data Extraction for Romanian Timber Auctions

A Python/LLM tool that extracts structured data from scanned and photographed PDF documents published by Romanian forest districts. These are timber auction announcements with tabular data (lot numbers, species, volumes, prices). Still, every district uses its own format, and the PDFs are all photos or scans of physical papers with varying legibility.

The extraction runs as a multi-pass LLM pipeline. Pass 1 corrects page orientation. Pass 2 does raw transcription. Pass 3 extracts table structure. Pass 4 maps to a structured lot schema. Pass 5 re-renders uncertain values at 400 DPI for a targeted high-confidence re-read. Each pass saves intermediate artifacts for auditability.

This multi-pass design evolved because single-pass extraction proved prone to hallucinations. Each step narrows the problem, and cross-referencing between passes catches errors. Integration tests call the actual Claude API and compare against validated outputs, stable enough to work as a reliable regression suite.

Built for fore-sta.ro, a SaaS aggregating Romanian forestry data. Claude API is in production, with similar modules planned for other document types.

Skills

Libraries/APIs

jQuery, API Development, Facebook API, Arduino RTC, Django ORM, Django-reversion, Django-taggit, React, Node.js, Pandas, Playwright, Twilio API, Pydantic, Sage, REST APIs, Puppeteer

Tools

Mercurial, Git, PyCharm, PhpStorm, Docker Compose, Zapier, IntelliJ IDEA, Zoom, Claude, Claude Code, Sentry, GitHub, Adobe Photoshop, Sublime Text, Vim Text Editor, Apache, NGINX, Plotly, Celery

Languages

Python, CSS, HTML, C++, Java, PHP, JavaScript, Bash, ECMAScript (ES6), Bash Script, TypeScript, HTML5, CSS3, C#.NET, C#, C, SQL, CoffeeScript, AppleScript

Frameworks

Django, Django REST Framework, Selenium, Tailwind CSS, Flask, Django Channels, .NET, Vanilla JS, Electron

Paradigms

Object-oriented Programming (OOP), Model View Controller (MVC), REST, Test-driven Development (TDD), Procedural Programming, Unit Testing, API Architecture, Microservices Architecture, Microservices, Automation, ETL, Agile Software Development, Desktop App Development

Platforms

Debian Linux, Raspberry Pi, Django CMS, Docker, Ubuntu, MacOS, WordPress, Linux, Arduino, Raspberry Pi 3 GPIO, AWS Lambda, Amazon Web Services (AWS), Amazon EC2, Twilio, WooCommerce, Magento, iOS, AWS Cloud Computing Services, Azure, Google Cloud Platform (GCP)

Storage

SQLite, PostgreSQL, MySQL, Redis, Amazon S3 (AWS S3), MongoDB, Data Pipelines

Other

APIs, Dash, Websites, Back-end, Full-stack, Minimum Viable Product (MVP), Full-stack Development, API Integration, Webhooks, Deployment, Scripting, Development, Debugging, API Connectors, Web Scraping, Data Processing Automation, Digital Electronics, Embedded Hardware, GitHub Actions, CI/CD Pipelines, PWA, API Design, Workflow Automation & System Integration, Agentic AI, AI Agents, Data Extraction, AI Tools, WebSockets, User Interface (UI), User Experience (UX), Automations, QA Automation, Pipelines, AI Programming, Automation Scripting, Data Engineering, Data Transformation, Data Scraping, Website Data Scraping, ETL Pipelines, Server-side JavaScript, Private Clouds, GitFlow, Electronics, PLC, Cloud Computing, Cordova, Progressive Web Applications (PWAs), SDKs, LDAP, Single Sign-on (SSO), Google Sign-in, Open Source, Architecture, Networking, Vite, Authentication, App UI, App UX, Remote Team Leadership, SaaS, Workflows, Engines, Finance, Entity Relationships, AI Testing, Optical Character Recognition (OCR), Multistage LLM Chains, Large Language Models (LLMs), ETL Tools

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring