My Workflow
Tags: programming
Published: 2022-12-04 16:33:09

Hey, guys! Today I will show you how my workflow looks like. This is the latest version, I changed it a few times before. If you read my blog, you know that before I hosted a [lot of things](https://www.maymeow.com/series/selfhosted/) at my home on my server. Gradually I moved things to the cloud and now I'm trying to simplify my workflow. It's nice to manage your stuff yourself, but it takes a lot of time. Let's take a look at how I managed to do it.

I have divided it into the following categories, Programming, Storage and Deployment.

## Programming

Most of my code is written in PHP, JavaScript and HTML. For programming I use [VS Code](https://code.visualstudio.com/) editor, and for more complex things, [PHPStorm](https://www.jetbrains.com/phpstorm/) from JetBrains. 

I also use C# from time to time, mostly with my employer. I create this code on Visual Studio or [Rider](https://www.jetbrains.com/rider/) (again an application from Jetbrains) and if the applications are simpler, VS Code.

From other programming languages I use I would mention Java or GO. For these I use again applications from Jetbrains ([Idea](https://www.jetbrains.com/idea/) or [Goland](https://www.jetbrains.com/go/) depending on the language). (I don't use these that often though).

As far as databases are concerned, my favourite application is [DataGrip](https://www.jetbrains.com/datagrip/), but lately I have been trying [TablePlus](https://tableplus.com/) which has a quite minimalistic design and also a mobile application.

As far as the operating system is concerned, I have recently been using Linux (multiple distributions), which I really like, but since we use Windows at work and some of the applications that I create are designed for Windows in the Desktop version, so I went back to Windows. 

Instead of dual-boot I use WSL v2 where I have several Linux distributions installed (like Ubuntu, Debian or Kali)

Recently I've been using [Codespaces](https://github.com/features/codespaces) from GitHub more and more, thanks to which I can edit source code from anywhere where I have access to the Internet, for example on a tablet or mobile phone if I need to quickly edit a line.

## Storage

I put all the source code I create automatically into GIT, specifically I use GitHub. Besides the GIT repository, it offers you a lot of other options like Codespaces, Docker storage and much more.

I also have the source codes stored on my own server where I host [Gitea](https://gitea.io/en-us/). 

Code testing is also done automatically on [GitHub](https://github.com/) after each push.

Apart from these, I have tried other options such as self-hosted [Gitlab](https://about.gitlab.com/), which has its own CI/CD, or Gitea + [Drone](https://www.drone.io/). I've been using GitLab for the longest time (about 5 years) but as I say I'm trying to simplify things so I can focus on work instead of managing my own server and finding solutions why things don't work.

If we talk about documentation or notes, I write them in Markdown and store them on my GitHub, or I use [OneNote](https://www.microsoft.com/en-us/microsoft-365/onenote/digital-note-taking-app) / [Word](https://www.microsoft.com/en-us/microsoft-365) which autosyncs with the cloud (Microsoft 365), and from there to any of my devices.

## Deployment

Depending on the application, I publish them using Netlify / Vercel or Forge.

If they are static pages, which I create using [Hugo](https://gohugo.io/), I publish them on the Web using [Netlify](https://www.netlify.com/) or [Vercel](https://vercel.com/). This is done automatically after each push to the main branch.

I publish my PHP applications using [Laravel Forge](https://forge.laravel.com/) on my server which I have with [Hetzner](https://www.hetzner.com/). 

As the name of the service says it will work best with [Laravel](https://laravel.com/) but it is not a problem to modify code from other frameworks to make it work the same way. I have several applications created this way in [CakePHP](https://cakephp.org/). I have this set to manual after clicking the deploy button, but if you want you can turn on quick deploy and then it will publish the application after a push to the main branch (or another one, depending on how you set it up)

## In conclusion

Only time will tell how I managed it. But now I have more time to devote to programming and less time to managing the server.

But I haven't given up everything self-hosted, I still have my own Gitea or Mastodon server.

What does your workflow look like? How much time does it take you to manage the server vs programming your applications? 

If you are interested in what else I use, you can see my [uses](https://maymeow.com/uses) page.

Originally posted on [My blog](https://maymeow.com)