
Fran Hrženjak
Verified Expert in Engineering
Full-stack Web Developer
Zagreb, Croatia
Toptal member since December 10, 2013
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
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
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.
Lead Developer
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.
Solutions Architect
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).
Senior Django Developer via Toptal
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.
Tech Lead
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.
Freelance Developer
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.
Co-founder
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.
Senior Developer
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.
Developer and Tech Lead
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.
Experience
Astronomical Observatory in Tican
https://changeset.hr/portfolio/astrohrAir Traffic Controller Training System
https://changeset.hr/portfolio/air-traffic-controller-training-systemBefore 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/11504I 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
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
Google Maps in Django Admin
BuraZnanja (gust of knowledge)
Bellaloopa
Real-time Device Management System
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
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-systemThe 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-toolI 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/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-suitePDF Data Extraction for Romanian Timber Auctions
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
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring