Logo

I’m a senior full-stack developer who helps founders and CTOs turn ambitious ideas into robust, scalable web applications.

Tired of juggling complex requirements, managing infrastructure, and trying to build a product all at once? I handle the entire development lifecycle—from backend architecture to a polished front-end—so you can focus on growing your business.

Contact Me


More Than a Coder—A Product Partner

Since 2018, I’ve specialized in building end-to-end applications for startups. My passion is transforming inefficient manual processes into streamlined digital solutions that save time and eliminate errors.

My core expertise is in taking a business problem and delivering a complete technical solution.

My Technology Stack:


Case Study: Automating International Trade Compliance

The Challenge: A client needed to help businesses navigate the complex rules of USMCA trade agreements. Their users were bogged down by manual data entry across multiple spreadsheets, a process that was slow, error-prone, and required specialized knowledge.

My Solution: I architected and built a complete, end-to-end USMCA qualification tool from the ground up. The solution involved a serverless Python backend on AWS Lambda, a DynamoDB database to manage complex product data, and a clean React front-end.

The Result: I transformed a convoluted, multi-step research process into a simple, guided form. The tool I built allows businesses to verify if their products qualify for USMCA in under a minute, removing the need for deep regulatory understanding and drastically reducing the risk of costly errors.

See Kendrick Trade.


I Don’t Just Build for Clients—I Build for Myself

To stay sharp and solve problems I’m passionate about, I built a complete SaaS product (ClaroHQ) from scratch. It’s a time-blocking and invoicing tool for freelancers, powered by Django, HTMX, and AlpineJS. This project demonstrates my ability to own the entire product lifecycle, from initial concept to deployment and maintenance.

See it here

Ready to build?

Let’s talk about your project. The easiest way to get started is by sending me an email with introductory information. If I can help you out, we can schedule a 15-minute call to talk more about your goals and see if we’re a good fit. No pressure, no obligation.

Email me at: hello@joshkaramuth.com

A while ago, I wrote about how I [deploy Django apps without a container registry](/blog/django-deployment). I liked the technique, but I wasn't satisfied because the process was too slow and it required specialized knowledge due to the custom scripts and workflow I designed. After doing some research, I discovered [Uncloud](https://uncloud.run), which is a simple tool that can deploy a container to any server while also allowing you to do common tasks like restarting services and viewing logs without having to manually SSH into your server. In this post, I'll walk you through my new process of deploying and managing web apps. ## Sample Project I'll use my [Simple Django](https://github.com/confuzeus/simple-django) project to illustrate the process. It's a Django app that uses SQLite for data storage. Go ahead and clone the project now to follow along. ## Acquiring and Configuring a Server First, you need to buy a server and configure it. I recommend [Hetzner](https://hetzner.com). You should set up your SSH key so that you can access your server without a password. I usually add the server to my SSH config as follows: ```bash Host myserver HostName 1.1.1.1 User root IdentitiesOnly yes ``` You can now SSH into your server with `ssh myserver`. You should add your SSH key to the agent so that Uncloud can use it: `ssh-add ~/.ssh/id_ed25519`. Next, initialize Uncloud: `uc machine init myserver --name myserver` Now, you can run the Ansible playbook to fully configure the server. Be sure to read the [README](https://github.com/confuzeus/simple-django/blob/master/ansible/README.md) to understand what the playbook does. The playbook is designed to prevent `root` from SSHing into the server. Therefore, you should update your SSH config to use the non-root user: ```bash Host myserver HostName 1.1.1.1 User non_root IdentitiesOnly yes ``` ## Update Docker Compose The `compose.yml` file in the project root is designed to be used by Uncloud. First, you should create an `appconfig.prod.env` file in the project root so that Docker Compose can use it to load the environment variables necessary for the various services defined. Then, update the `x-ports` dictionary with the domain name where your app will be hosted. Uncloud will automatically set up a reverse proxy and SSL certificate at this domain for you. Then, update the `x-machine` value to the name of the machine you initialized earlier. After that, run `just deploy` and Uncloud will deploy your app. That's it! ## Managing the App You can manage the services and view logs using the `uc` command. For example, to view the logs for the `web` service, run `uc logs web`. ## Conclusion I hope you found this post helpful. Uncloud is a powerful tool for managing web apps. I'm excited to see what you build with it! If you have any questions, feel free to [email me](mailto:hello@joshkaramuth.com).