Development of maintainable extensible modular software on demand

I am an experienced freelance developer developing software on demand. My goal is a quality and maintainable code divided into functional units that can be easily used in future projects.


Software development in language C++ for operating systems Windows and Linux.


Development of responsive websites, applications, but also blogs and e-shops.

PHP / Node.js

Server software development in languages PHP and Node.js.


Development of cross-platform applications in JavaScript, mainly for mobile devices. One application for multiple operating systems.


Installation, configuration and commissioning of developed applications, websites and servers.


Customer support including development of new versions and functionalities based on requirements and experience.

Martin Svoboda

IT Freelancer

I am an experienced freelance developer who works as IT contractor, on standalones projects on demand and on open source projects published on GitHub.

My main programming language is C ++, but I also have experience with JavaScript, HTML and PHP. I continuously improving in other programming languages and frameworks.

I cooperate with recruitment agencies as well as on contracts and custom projects for end customers.

On larger projects I cooperate with other freelance developers who are actively involved in software development.

Martin Svoboda



I worked directly for a specific customer on some projects on demand. On other projects I worked as a contractor through recruitment agencies.

Open Source Projects


I often encounter the need to implement similar or the same functionalities. Therefore, I develop my own open source projects implementing basic functionalities such as logging, active and passive configurations, work with threads, DLL management and more. All projects and detailed information about them can be found at my GitHub profile Mars2004.

MarsTech C++ SYS

The MarsTech C++ SYS project integrates most of my other projects into one static library and a dynamic (shared) library.

It implements objects that provide access to the implementation of individual projects through their interface. You can see how much work and time can be saved by using MarsTech C++ SYS at usage example.

Learn More About Project

MarsTech Error

Perhaps every program in any language has to deal with error codes and exceptions. The project defines the type for error codes and individual error codes and implements its own exception including its handling.

Of course, you can use the operating system and the operating system error definition. Unfortunately, most operating systems have their own list of error codes that are not transferable to other operating systems. MarsTech projects are designed to be used with a minimum of effort on different operating systems.

Learn More About Project

MarsTech Logging

Logging is an important part of debugging and troubleshooting. Ideally, when errors do not happen and logs are not needed, but publish a program without good logging is very bold to stupid.

This project does not implement logging itself. There are plenty of quality logging frameworks and there is no need to develop a new one. Unfortunately most of logging frameworks are not ready for unit testing and dependency injection and therefore MarsTech logging is just an envelope over the logging framework spdlog.

Learn More About Project

MarsTech Headers

Smaller project which contains C ++ header files only. Most classes, macros, and functions are generic and do not fit into any other project.

On the other hand, most of these classes, macros, and functions are used by other MarsTech projects.

Learn More About Project

MarsTech Dependency Injection

C++ knihovna pro usnadnění implementace dependency injection v projektech. Jedná se o techniku používanou při implementaci kódu, který lze snadno unit testovat.

Knihovna obsahuje hlavičkové soubory definující makra pro snadnou implementaci dependency injection factories a injectors. Téměř každý unit testovatelný objekt (třída) v C++ má vlastní implementaci faktorky nebo injektoru.

Learn More About Project

MarsTech Threading

C ++ library for threads handling and synchronization. It implements threads, worker threads, events and thread pools.

Although the C ++ standard includes threads and sync objects, they are not yet ready for easy unit testing and require frequent repetitive code. The use of real fibers in unit tests is very complex.

Learn More About Project

MarsTech Configuration

C ++ library implementing active and passive configuration. Passive configuration is a setting that a program/application reads once at a startup, active configuration can be changed by the program. It can also be used to maintain status information.

Most of projects implement their own configuration. For each program/application again and again. This is inefficient in time. Initialize MarsTech configuration by the list of identifiers and their default values ​​(the type is derived from default values) and you have the configuration implemented. No need to develop it again.

Learn More About Project

MarsTech DLL Factory

C ++ library for working with dynamic (shared on Linux) libraries. Just have an instance of MarsTech DLL Factory and you can work with dynamic libraries. DLL factory ensures that the dynamic library is loaded and held.

Working with dynamic (shared) libraries can be complicated and can cause application crash when used incorrectly. DLL Factory solves most of problems related to dynamic libraries and makes work with them easier.

Learn More About Project

MarsTech Module

C ++ library for modular software support. It includes the implementation of Module Manager, which controls the start and stop of plug-ins.

I often see software that tries to be universal and have all the functionality in one place. Unfortunately, such software is difficult to maintain, test (automated testing is almost impossible) and it is difficult to add new functionality to it. Sooner or later such software needs to be re-written. Thanks to modules that implement individual functionalities you can just add new module or change existing one.

Learn More About Project

Contact Me


Your message has been sent to us.
Failed to send your message.