
I still consider myself a Swift beginner.
There are plenty of Swift developers who know far more about macOS, SwiftUI, system architecture, and Apple's frameworks than I do.
A year ago, I wasn't trying to build a serious developer tool.
I just wanted to learn Swift by building something useful.
That "something useful" slowly turned into a project called KTStack.
Today, KTStack manages:
- Local
.testdomains - HTTPS certificates
- Nginx
- PHP-FPM
- MySQL
- PostgreSQL
- Redis
- MongoDB
- Mailpit
- Language runtimes
- Cloudflare Tunnel sharing
Looking at that list now feels a little ridiculous because I definitely didn't know how most of those things worked when I started.
It Started With Curiosity
I use PHP and Laravel regularly.
Like many developers, I spent years installing and configuring different pieces of local infrastructure:
- web servers
- databases
- certificates
- DNS
- runtime versions
I kept thinking:
I know how to use these tools, but do I actually understand how they work?
So instead of reading another tutorial, I started building.
Not because I believed I could build something better.
Mostly because I wanted to understand what was happening underneath.
The Funny Part
Every time I solved one problem, I discovered three new ones.
I wanted local domains.
Then I needed DNS.
Once DNS worked, I wanted HTTPS.
Then I needed certificates.
Then Nginx.
Then PHP-FPM.
Then service management.
Then database support.
Then log viewing.
Then Cloudflare Tunnel integration.
The project kept growing faster than my Swift knowledge.
Most Of The Time I Had No Idea What I Was Doing
I spent an embarrassing amount of time reading documentation.
Apple documentation.
Nginx documentation.
Cloudflare documentation.
Random GitHub issues.
Blog posts written ten years ago.
Sometimes a feature took days.
Sometimes weeks.
Sometimes I rewrote the same thing three times because I finally understood a better approach.
Looking back, most of my progress came from making mistakes.
What KTStack Does Today
KTStack is a native macOS menu-bar application that provides a complete local development environment.
Some of the features include:
- Automatic
.testdomains - Local HTTPS
- Nginx management
- PHP runtime management
- MySQL, PostgreSQL, Redis, and MongoDB support
- Mailpit integration
- Log viewer
- Cloudflare Tunnel sharing
- On-demand runtime installation
The goal is to let developers work locally without having to manually configure every moving part.
The Biggest Lesson
Building KTStack didn't make me feel like an expert.
If anything, it showed me how much I still don't know.
But it taught me something valuable:
You don't need to be an expert before starting a difficult project.
Sometimes the project itself is how you learn.
That's exactly what happened to me.
Open Source
KTStack is completely open source.
I'm still learning, still refactoring, and still discovering better ways to solve problems.
If you're interested in SwiftUI, macOS development, local infrastructure, or developer tools, I'd love to hear your feedback.
GitHub:
https://github.com/nguyenkhoi489/kd-warm
And if you're a beginner wondering whether you're "good enough" to start a big project:
you probably are.












