Szabó KrisztiánPortfolio

MY WORKSHOP · GENAI · INFRASTRUCTURE

How I build applications

An idea, a few conversations with AI, and an application of my own. My approach to vibe coding has practical infrastructure behind it: GitHub, Linux servers, Docker and a shared internet gateway.

This is my setup: one example of how AI-assisted development and running your own services can work together.

GitHubLinux · ARM / x64DockerWireGuardnginx · TLSiOS · Windows

01 / FROM IDEA TO APPLICATION

AI is part of the development process.

I use GenAI to turn an everyday need into a clear, actionable task. Conversations help me define the goal and refine the behaviour; AI then helps create and evolve the code. Decisions, verification and operations remain my responsibility.

01

Needs and questions

I start with what I want the application to do. AI helps identify missing decisions and explore alternatives.

02

An actionable specification

I define the behaviour, data, constraints and how we will know the solution works.

03

Code, testing and refinement

AI helps write and change the application. I try it, check the important cases and use the results to improve it.

04

GitHub and deployment

The source goes into a version-controlled repository. I run the application in a container and continue improving it through everyday use.

02 / THE TECHNICAL FOUNDATION

A few platforms. Plenty of possibilities.

My family uses iOS phones and Windows desktops. My servers run Linux exclusively. These platforms cover everyday use, development and automation.

01

GitHub

The shared home for my project sources and their history. Version control shows what changed and lets me return to an earlier state.

02

My own x64 mini servers

Compact desktop machines repurposed as Linux servers run my applications and supporting services. They take little space and host several containers.

03

ARM small computers

I also use low-power Linux devices. A different architecture and smaller hardware let me try services in a variety of environments.

04

Rented Linux VPS servers

Remote servers I can provision quickly. One provides a permanent network entry point; others can provide separate environments for projects or experiments.

05

Windows and Linux

Windows on the desktop, Linux distributions on servers and in development environments. Their roles matter more than the exact hardware inventory.

06

iPhone and Shortcuts

I test and use applications in mobile browsers. Shortcuts automations also connect phone events to my own services.

03 / WORTH ITS OWN CHAPTER

Why I like Docker

Python .venv environments have repeatedly brought dependency and management complications that took more effort than the project itself. For me, running each application in its own container environment is simpler.

01

Each project brings its environment

The application and its runtime dependencies live in a defined environment. I do not have to adjust the server’s Python environment for every project.

02

Easy to try and discard

If I drop an idea, I can remove its container and image. Project data is handled separately; other applications’ dependencies do not need to be unwound.

03

More consistent operations

I build, start and update different applications in similar ways. For ARM and x64, I use images built for the appropriate architecture.

04

Experiments and separation

I experiment with virtual machines too. When I want stronger separation from my own infrastructure, I prefer to rent a separate VPS quickly. Dependency isolation in containers and security separation are distinct considerations.

04 / INTERNET AND PRIVATE NETWORK

One gateway to the services.

The bastion is a VPS with a static public IP address. WireGuard connects it to my own servers. Its nginx reverse proxy routes incoming web requests to the appropriate application.

01

WireGuard

An encrypted network connection between the bastion and my machines. It also underpins access to internal services.

02

HTTPS and TLS termination

The browser’s HTTPS connection terminates at the bastion, where I manage certificates. Requests continue to my servers through the VPN.

03

Public websites

Applications and demos intended for sharing are available under my own domains. Visitors do not need a VPN.

04

VPN-only websites

Personal and internal services require a VPN connection. Having a web interface does not mean a service needs to be public.

05

My own domains

Readable addresses for applications, demos and the portfolio. The domain name and the access policy are separate decisions.

How does it fit together?

How does it fit together?GitHub is part of the source-code path; visitor requests reach applications through the bastion. A phone connected to the VPN can also access internal websites.GitHubSource codeMy Linux serversDocker · ARM / x64Bastion VPSStatic IP · TLS · nginxiPhone / WindowsPublic web / VPNWireGuardPrivate VPN accessDeployHTTPS
GitHub is part of the source-code path; visitor requests reach applications through the bastion. A phone connected to the VPN can also access internal websites.

My own setup, a workshop that keeps evolving.

Back to the portfolio ↗