#    Fullstack Developer

 16 Jul 2026

Warsaw, Poland

 [ Apply for this job ](#)

We provide a platform for managing, planning, supervising, and selling flights for more than **500 aviation operators worldwide**, including several of Europe's largest business aviation operators. We are the world's leading platform dedicated to business aviation and continue to expand our presence in the scheduled and charter airline markets.

 We are a **small company with a flat organizational structure**, focused on developing new features. Around **75% of our team consists of experienced software developers**. We work with a wide range of technologies, including **PHP, JavaScript, TypeScript, Python, Node.js**, and others.

## The successful candidate will join one of our Scrum teams responsible for developing a specific area of the platform.

Most tasks involve implementing new features, extending existing functionality, and integrating with numerous external systems. The work is challenging and requires a solid understanding of the business domain.

---

### Requirements

We are looking for a candidate with:

- Proficiency in **JavaScript (ECMAScript 6)**
- At least **1 year of commercial experience** in a similar role
- Experience with **React.js**
- Knowledge of **object-oriented PHP (version 8)**
- Experience working with **MySQL databases**
- Proficiency in the **Polish language**
- Practical experience using **AI-assisted development tools** (such as **Claude Code, GitHub Copilot, or similar**) with an understanding of effective collaboration with AI models—not just code autocompletion

### Nice to Have

The following will be considered a strong advantage:

- Experience with **TypeScript**
- Knowledge of **Agile methodologies (Scrum)**
- Understanding of **Agentic AI concepts**, including **Model Context Protocol (MCP)**, defining **tools**, and creating **skills** for language models
- Experience building or configuring **AI workflows**, such as multi-step pipelines or autonomous agents
- Understanding the difference between **"vibe coding"** and deliberate **prompt engineering** and **AI agent architecture**

### Why Join Us?

- Stable employment in an innovative company with long-term project stability
- Opportunities to develop your skills across multiple technologies
- A high degree of autonomy and real influence on the features you build
- Work alongside a team of approximately **40 software engineers**
- **100% remote work** or the option to work from our modern office in Warsaw (Ochota district)
- Private healthcare package
- Work on an ambitious product in the aviation industry using modern web technologies
- Be part of a development environment where **AI (Claude Code)** is actively used in day-to-day software development, with the opportunity to shape how AI is integrated into the product
- Internal projects and communication are conducted **in Polish**

 [ Apply for this job ](#)
<div data-id="5" 
	class="eb-inst eb-hide eb-custom eb-5 white-lab-pop"
	data-options='{"trigger":"onClick","trigger_selector":".apply-form","delay":0,"early_trigger":false,"scroll_depth":"percentage","scroll_depth_value":80,"firing_frequency":1,"reverse_scroll_close":true,"threshold":0,"close_out_viewport":false,"exit_timer":1000,"idle_time":10000,"close_on_esc":false,"animation_open":"slideInUp","animation_close":"fadeOutDown","animation_duration":250,"disable_page_scroll":true,"test_mode":false,"debug":false,"ga_tracking":false,"ga_tracking_id":0,"ga_tracking_event_category":"EngageBox","ga_tracking_event_label":"Box #5 - Apply","auto_focus":false}'
	data-type='popup'
	>

	<button type="button" data-ebox-cmd="close" class="eb-close placement-outside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>
	<div class="eb-dialog " role="dialog" aria-modal="true" id="dialog5" aria-label="dialog5">
		
		<button type="button" data-ebox-cmd="close" class="eb-close placement-inside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>	
		<div class="eb-container">
						<div class="eb-content">
				<p><form method="post"  id="userForm" class="form-leon" enctype="multipart/form-data" action="https://www.leonsoftware.com/about-us/careers/fullstack-developer-2026-07.html"><h2> Apply for this job </h2>
<div id="rsform_error_6" style="display: none;"><p class="formRed">Please complete all required fields!</p></div>
<!-- Do not remove this ID, it is used to identify the page so that the pagination script can work correctly -->
<div class="formContainer uk-form-horizontal" id="rsform_6_page_0">
	<div class="uk-grid">
		<div class="uk-width-1-1">
			<div class="uk-margin rsform-block rsform-block-pole-wymagane rsform-type-freetext">
					<small class="uk-text-muted">Fields marked with an asterisk are required.</small>
			</div>
			<div class="uk-margin rsform-block rsform-block-name rsform-type-textbox">
				<label class="uk-form-label formControlLabel" for="name">Contact person<strong class="formRequired">(*)</strong></label>
				<div class="formControls uk-form-controls">
					<input type="text" value="" size="20" name="form[name]" id="name" class="rsform-input-box uk-input" aria-required="true" />
					<span class="formValidation"><span id="component46" class="formNoError">Please enter the name!</span></span>
				</div>
			</div>
			<div class="uk-margin rsform-block rsform-block-phone rsform-type-textbox">
				<label class="uk-form-label formControlLabel" for="phone">Phone</label>
				<div class="formControls uk-form-controls">
					<input type="text" value="" size="20" name="form[phone]" id="phone" class="rsform-input-box uk-input" />
					<span class="formValidation"><span id="component47" class="formNoError">This field is required</span></span>
				</div>
			</div>
			<div class="uk-margin rsform-block rsform-block-email rsform-type-textbox">
				<label class="uk-form-label formControlLabel" for="email">E-mail</label>
				<div class="formControls uk-form-controls">
					<input type="email" value="" size="20" name="form[email]" id="email" class="rsform-input-box uk-input" />
					<span class="formValidation"><span id="component48" class="formNoError">Please provide a valid e-mail!</span></span>
				</div>
			</div>
			<div class="uk-margin rsform-block rsform-block-upload-cv rsform-type-fileupload">
				<label class="uk-form-label formControlLabel" for="upload_cv">Upload CV<strong class="formRequired">(*)</strong></label>
				<div class="formControls uk-form-controls">
					<div uk-form-custom="target: true"><input type="file" name="form[upload_cv]" id="upload_cv" class="rsform-upload-box" aria-required="true" data-rsfp-required="true" /><input class="uk-input uk-form-width-medium" type="text" placeholder="Select file" disabled><button class="uk-button uk-button-default" type="button" tabindex="-1">Select</button></div>
					<span class="formValidation"><span id="component52" class="formNoError">Invalid Input</span></span>
				</div>
			</div>
			<div class="uk-margin rsform-block rsform-block-zgoda rsform-type-checkboxgroup">
				<label class="uk-form-label formControlLabel" id="Zgoda-grouplbl">Accept<strong class="formRequired">(*)</strong></label>
				<div class="formControls uk-form-controls" role="group" aria-labelledby="Zgoda-grouplbl">
					<fieldset class="rsfp-fieldset"><legend class="rsfp-visually-hidden">Accept</legend><label id="Zgoda0-lbl" for="Zgoda0"><input type="checkbox"  name="form[Zgoda][]" value="&lt;span class=&quot;legal-consent-container&quot;&gt;&lt;p&gt;The Controller of your personal data is Leon Software sp. z o.o. with its registered office in Warsaw, Al. Jerozolimskie 151/5U. Your personal data is processed for the purpose of the recruitment process and will be stored until its end. Information on the principles and purposes of personal data processing and your rights under the GDPR, can be found in the &lt;a target=&quot;blank&quot; href=&quot;/privacy-policy&quot;&gt;Privacy Policy&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;" id="Zgoda0" class="rsform-checkbox uk-checkbox" /> <span class="legal-consent-container"><p>The Controller of your personal data is Leon Software sp. z o.o. with its registered office in Warsaw, Al. Jerozolimskie 151/5U. Your personal data is processed for the purpose of the recruitment process and will be stored until its end. Information on the principles and purposes of personal data processing and your rights under the GDPR, can be found in the <a target="blank" href="/privacy-policy">Privacy Policy</a></p></span></label> </fieldset>
					<span class="formValidation"><span id="component50" class="formNoError">You must accept the Terms and Conditions before send message!</span></span>
				</div>
			</div>
		</div>
	</div>
	<div class="uk-grid">
		<div class="uk-width-1-1">
			<div class="uk-margin rsform-block rsform-block-wyslij rsform-type-submitbutton">
				<label class="uk-form-label formControlLabel"></label>
				<div class="formControls uk-form-controls">
					<button type="submit" name="form[wyslij]" id="wyslij" class="rsform-submit-button  uk-button uk-button-primary" >Send</button>
					<span class="formValidation"></span>
				</div>
			</div>
		</div>
	</div>
</div>

					<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response-6" value="">

					<input type="hidden" name="form[position]" id="position" value="" /><input type="hidden" name="form[formId]" value="6"/>
<input type="hidden" name="8b18ce40d0622013722db65ab24a2b45" value="1"></form></p>			</div>
		</div>
	</div>	
</div>
<div data-id="7" 
	class="eb-inst eb-hide eb-iframe eb-7 "
	data-options='{"trigger":"onClick","trigger_selector":".click360, #click360","delay":0,"early_trigger":false,"scroll_depth":"percentage","scroll_depth_value":80,"firing_frequency":1,"reverse_scroll_close":true,"threshold":0,"close_out_viewport":false,"exit_timer":1000,"idle_time":10000,"close_on_esc":false,"animation_open":"slideInUp","animation_close":"fadeOutDown","animation_duration":250,"disable_page_scroll":false,"test_mode":false,"debug":false,"ga_tracking":false,"ga_tracking_id":0,"ga_tracking_event_category":"EngageBox","ga_tracking_event_label":"Box #7 - 360","auto_focus":false}'
	data-type='popup'
	>

	<button type="button" data-ebox-cmd="close" class="eb-close placement-outside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>
	<div class="eb-dialog " role="dialog" aria-modal="true" id="dialog7" aria-label="dialog7">
		
		<button type="button" data-ebox-cmd="close" class="eb-close placement-inside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>	
		<div class="eb-container">
						<div class="eb-content">
				
	<div class="eb-content-header">
			</div>

<div class="eb-content-wrap">
	 
</div>

			</div>
		</div>
	</div>	
</div>
