<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Slimaeus</title><description>Blog</description><link>https://slimaeus.github.io/</link><language>en</language><item><title>React and CRXJS Extension quick start</title><link>https://slimaeus.github.io/posts/react-crxjs-extension-quick-start/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/react-crxjs-extension-quick-start/</guid><description>How I setup React and CRXJS Extension</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/en&quot;&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Node.js package manager (npm, yarn, pnpm)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Go to the folder you want to create and run command&lt;pre&gt;&lt;code&gt;npx create-cxjs
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Enter your project name
&lt;img src=&quot;enter-project-name.png&quot; alt=&quot;Enter project name&quot; /&gt;
:::note
Change &lt;code&gt;your-project-name&lt;/code&gt; with your project name
:::&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;React&lt;/code&gt;
&lt;img src=&quot;select-framework.png&quot; alt=&quot;Select framework&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Typescript&lt;/code&gt;
&lt;img src=&quot;select-variant.png&quot; alt=&quot;Select variant&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Done
&lt;img src=&quot;done.png&quot; alt=&quot;Done&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://crxjs.dev/guide/installation/create-crxjs&quot;&gt;How to install CRXJS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Melon Loader setup</title><link>https://slimaeus.github.io/posts/melon-loader-setup/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/melon-loader-setup/</guid><description>How I setup Melon Loader</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://visualstudio.microsoft.com&quot;&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Download MelonLoader to your game and run it once before continuing.&lt;/li&gt;
&lt;li&gt;Download the &lt;a href=&quot;https://github.com/TrevTV/MelonLoader.VSWizard/releases&quot;&gt;VSIX&lt;/a&gt; from the GitHub repo.&lt;/li&gt;
&lt;li&gt;Close all instances of Visual Studio and run the VSIX installer (double-clicking it should open it).&lt;/li&gt;
&lt;li&gt;Open Visual Studio and create a new project.&lt;/li&gt;
&lt;li&gt;Search for MelonLoader and click on either Mod or Plugin.&lt;/li&gt;
&lt;li&gt;Enter the project info and press Create.&lt;/li&gt;
&lt;li&gt;Select the EXE of the game you are modding and press Open.&lt;/li&gt;
&lt;li&gt;Wait for the project creation and it should open a Visual Studio window with a working project.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://melonwiki.xyz/#/modders/quickstart&quot;&gt;Melon Loader Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/TrevTV/MelonLoader.VSWizard/releases&quot;&gt;Melon Loader VSIX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Google Kubernetes Engine quick start</title><link>https://slimaeus.github.io/posts/google-kubernetes-engine-quick-start/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/google-kubernetes-engine-quick-start/</guid><description>How I setup Google Kubernetes Engine</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cloud.google.com/?hl=en&quot;&gt;Google Cloud Account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.docker.com/compose/install&quot;&gt;Docker Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kubernetes.io&quot;&gt;Kubernetes Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a&gt;Setup Cloud Shell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Set a default compute zone
&lt;ul&gt;
&lt;li&gt;Set the default compute region&lt;pre&gt;&lt;code&gt;gcloud config set compute/region &quot;REGION&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Set the default compute zone&lt;pre&gt;&lt;code&gt;gcloud config set compute/zone &quot;ZONE&quot;
&lt;/code&gt;&lt;/pre&gt;
:::note
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;REGION&lt;/code&gt;: &lt;a href=&quot;https://cloud.google.com/compute/docs/regions-zones/#available&quot;&gt;available region&lt;/a&gt;. Ex: &lt;code&gt;us-central1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ZONE&lt;/code&gt;: &lt;a href=&quot;https://cloud.google.com/compute/docs/regions-zones/#available&quot;&gt;available zone&lt;/a&gt;. Ex: &lt;code&gt;us-central1-a&lt;/code&gt; is a zone in the &lt;code&gt;us-central1&lt;/code&gt; region.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a GKE cluster
&lt;ul&gt;
&lt;li&gt;Create a cluster&lt;pre&gt;&lt;code&gt;gcloud container clusters create --machine-type=machine-type --zone=ZONE cluster-name
&lt;/code&gt;&lt;/pre&gt;
:::note
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;machine-type&lt;/code&gt;: &lt;a href=&quot;https://cloud.google.com/compute/docs/general-purpose-machines#e2_machine_types&quot;&gt;available machine type&lt;/a&gt;. Ex: &lt;code&gt;e2-medium&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cluster-name&lt;/code&gt;: cluster name.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Get authentication credentials for the cluster
&lt;ul&gt;
&lt;li&gt;Authenticate with the cluster&lt;pre&gt;&lt;code&gt;gcloud container clusters get-credentials cluster-name
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deploy an application to the cluster
&lt;ol&gt;
&lt;li&gt;Create new deployment from a image&lt;pre&gt;&lt;code&gt;kubectl create deployment deployment-name --image=image-name:image-tag
&lt;/code&gt;&lt;/pre&gt;
:::note
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deployment-name&lt;/code&gt;: deployment name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image-name&lt;/code&gt;: image name. Ex: &lt;code&gt;gcr.io/google-samples/hello-app&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image-tag&lt;/code&gt;: image tag. Ex: &lt;code&gt;1.0&lt;/code&gt;.
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Expose application&lt;pre&gt;&lt;code&gt;kubectl expose deployment deployment-name --type=LoadBalancer --port your-port
&lt;/code&gt;&lt;/pre&gt;
:::note
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;your-port&lt;/code&gt;: exposed port. Ex: &lt;code&gt;8080&lt;/code&gt;
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Inspect service&lt;pre&gt;&lt;code&gt;kubectl get service
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Delete the cluster
&lt;ol&gt;
&lt;li&gt;Run following command&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcloud container clusters delete cluster-name
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Type &lt;code&gt;Y&lt;/code&gt; and &lt;strong&gt;Enter&lt;/strong&gt; to confirm&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cloudskillsboost.google&quot;&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Angular with Bootstrap setup</title><link>https://slimaeus.github.io/posts/angular-with-bootstrap-setup/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/angular-with-bootstrap-setup/</guid><description>How I create Angular project with Bootstrap</description><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/en&quot;&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Node.js package manager (npm, yarn, pnpm)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com/download&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://angular.dev/installation#install-angular-cli&quot;&gt;Angular CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Go to the folder you want to create and run command&lt;pre&gt;&lt;code&gt;ng new project-name
&lt;/code&gt;&lt;/pre&gt;
:::note
Change &lt;code&gt;project-name&lt;/code&gt; with your project name
:::&lt;/li&gt;
&lt;li&gt;Select configurations&lt;/li&gt;
&lt;li&gt;Run command&lt;pre&gt;&lt;code&gt;cd project-name &amp;amp; code .
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Open terminal (&lt;code&gt;Ctrl + J&lt;/code&gt; - Visual Studio Code shortcut) and install &lt;code&gt;bootstrap&lt;/code&gt;&lt;pre&gt;&lt;code&gt;ng add @ng-bootstrap/ng-bootstrap
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;popper.js&lt;/code&gt;&lt;pre&gt;&lt;code&gt;npm i @popperjs/core
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Update config in &lt;code&gt;angular.json&lt;/code&gt;&lt;pre&gt;&lt;code&gt;{
    // ...
    &quot;projects&quot;: {
        &quot;project-name&quot;: {
            //...
            &quot;architect&quot;: {
                // ...
                &quot;options&quot;: {
                    &quot;scripts&quot;: [
                        &quot;node_modules/@popperjs/core/dist/umd/popper.min.js&quot;,
                        &quot;node_modules/bootstrap/dist/js/bootstrap.bundle.js&quot;
                    ]
                },
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Start the project&lt;pre&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ng-bootstrap.github.io/#/getting-started&quot;&gt;Angular Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@popperjs/core&quot;&gt;Popper.js package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Free Apis</title><link>https://slimaeus.github.io/posts/free-api/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/free-api/</guid><description>Here are some free APIs I found</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flagpedia.net/download/api&quot;&gt;Flag Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://restcountries.com&quot;&gt;Countries Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://randomuser.me&quot;&gt;Random User Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://goqr.me/api&quot;&gt;QR Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cheatsnake/emojihub&quot;&gt;Emoji Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://foodish-api.com&quot;&gt;Food Images Api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://yesno.wtf/api&quot;&gt;Yes/No with Gif Api&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Add portfolio to &quot;developer-portfolios&quot; repository</title><link>https://slimaeus.github.io/posts/add-to-developer-portfolios-repo/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/add-to-developer-portfolios-repo/</guid><description>How I add my portfolio to &quot;developer-portfolios&quot; repository</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&quot;https://github.com/emmabostian/developer-portfolios&quot;&gt;developer-portfolios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click to the fork button on the repository
&lt;img src=&quot;fork.png&quot; alt=&quot;Fork&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Create the fork
&lt;img src=&quot;create-fork.png&quot; alt=&quot;Create fork&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Create a new branch (i.e &lt;code&gt;add/your-name&lt;/code&gt;)
&lt;img src=&quot;create-new-branch.png&quot; alt=&quot;Create new branch&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Switch to your new branch
&lt;img src=&quot;switch-branch.png&quot; alt=&quot;Switch to new branch&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;README.md&lt;/code&gt;
&lt;img src=&quot;go-to-readme.png&quot; alt=&quot;Go to README.md&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Click edit button
&lt;img src=&quot;go-to-edit.png&quot; alt=&quot;Edit&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Add your new site. Remember to add alphabetically to the list.
&lt;img src=&quot;add-site.png&quot; alt=&quot;Add site&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Commit changes
&lt;img src=&quot;click-commit.png&quot; alt=&quot;Click commit&quot; /&gt;
&lt;img src=&quot;commit-change.png&quot; alt=&quot;Commit changes&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Go to your repository&apos;s &lt;code&gt;Pull requests&lt;/code&gt; tab and create a new pull request
&lt;img src=&quot;go-to-pull-request.png&quot; alt=&quot;Go to pull request&quot; /&gt;
You can choose &lt;code&gt;Compare &amp;amp; pull request&lt;/code&gt; or &lt;code&gt;New pull request&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;If you choose &lt;code&gt;New pull request&lt;/code&gt;: Change the compare to your new branch and click &lt;code&gt;Create pull request&lt;/code&gt;
&lt;img src=&quot;change-compare.png&quot; alt=&quot;Change compare&quot; /&gt;
&lt;img src=&quot;click-create-pull-request.png&quot; alt=&quot;Click create pull request&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Update the message and create the pull request
&lt;img src=&quot;create-pull-request.png&quot; alt=&quot;Create pull request&quot; /&gt;
:::note
Here&apos;s my message:&lt;pre&gt;&lt;code&gt;Added my portfolio site under the &quot;S&quot; section in alphabetical order: [Slimaeus](https://slimaeus.github.io/about) [.NET Developer]
Hope you you take a look. Thank you.
&lt;/code&gt;&lt;/pre&gt;
:::&lt;/li&gt;
&lt;li&gt;Waiting for the author&apos;s approval&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/emmabostian/developer-portfolios/blob/master/CONTRIBUTING.md&quot;&gt;Official Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Install n8n</title><link>https://slimaeus.github.io/posts/intall-n8n/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/intall-n8n/</guid><description>How I install n8n with Docker Compose</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.docker.com/engine/install&quot;&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.docker.com/compose/install&quot;&gt;Docker Compose&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Prepare docker-compose.yml
&lt;ul&gt;
&lt;li&gt;Start with db&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;services:
n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: always # Added to ensure n8n restarts if it crashes
    ports:
    - &quot;5678:5678&quot;
    environment:
    - DB_TYPE=postgresdb
    - DB_POSTGRESDB_DATABASE=n8n_database
    - DB_POSTGRESDB_HOST=postgres # Hostname of the postgres service
    - DB_POSTGRESDB_PORT=5432
    - DB_POSTGRESDB_USER=n8n_user # Changed to a specific user for n8n
    - DB_POSTGRESDB_PASSWORD=&amp;lt;Your Database Password&amp;gt; # Use a strong password!
    # If you&apos;re using a self-signed SSL certificate for your Postgres, uncomment and set the following:
    # - NODE_TLS_REJECT_UNAUTHORIZED=0
    volumes:
    - n8n_data:/home/node/.n8n
    depends_on:
    - postgres # n8n depends on postgres being up
    networks:
    - n8n_network # Assign to a custom network

postgres:
    image: postgres
    container_name: n8n_postgres
    restart: always
    environment:
    POSTGRES_DB: n8n_database
    POSTGRES_USER: n8n_user # Should match DB_POSTGRESDB_USER in n8n service
    POSTGRES_PASSWORD: &amp;lt;Your Database Password&amp;gt; # Should match DB_POSTGRESDB_PASSWORD in n8n service
    PGDATA: /var/lib/postgresql/data/pgdata # Optional: Specify a sub-directory for data
    volumes:
    - postgres_data:/var/lib/postgresql/data # Persist PostgreSQL data
    networks:
    - n8n_network # Assign to the same custom network as n8n

volumes:
n8n_data:
postgres_data: # Define the volume for PostgreSQL data

networks:
n8n_network: # Define a custom bridge network
    driver: bridge
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Start without database (already have one)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;services:
n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    ports:
    - &quot;5678:5678&quot;
    environment:
    - DB_TYPE=postgresdb
    - DB_POSTGRESDB_DATABASE=n8n_database
    - DB_POSTGRESDB_HOST=localhost
    - DB_POSTGRESDB_PORT=5432
    - DB_POSTGRESDB_USER=postgres
    - DB_POSTGRESDB_PASSWORD=&amp;lt;Your Database Password&amp;gt;
    # If you&apos;re using a self-signed SSL certificate for your Postgres, uncomment and set the following:
    # - NODE_TLS_REJECT_UNAUTHORIZED=0
    volumes:
    - n8n_data:/home/node/.n8n
    network_mode: host

volumes:
n8n_data:
    # You can specify a driver here if needed, e.g., for network storage:
    # driver: local
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Start services&lt;pre&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;:::caution
You shouldn&apos;t put secrets in the file, as I did. It&apos;s just for example.
:::&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.n8n.io/hosting/installation/server-setups/docker-compose/#1-install-docker-and-docker-compose&quot;&gt;Official n8n Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Install Strapi</title><link>https://slimaeus.github.io/posts/strapi-installation/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/strapi-installation/</guid><description>How I install Strapi</description><pubDate>Thu, 03 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/en&quot;&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Node.js package manager (npm, yarn, pnpm)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com/download&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open the terminal in the folder you want to create new project&lt;/li&gt;
&lt;li&gt;Initialize &lt;code&gt;Strapi&lt;/code&gt; project by run this command&lt;pre&gt;&lt;code&gt;npx create-strapi@latest my-strapi-project
&lt;/code&gt;&lt;/pre&gt;
:::note
Change &lt;code&gt;my-strapi-project&lt;/code&gt; to your project name
:::&lt;/li&gt;
&lt;li&gt;You can select &lt;code&gt;Login/Sign up&lt;/code&gt; to try the &lt;code&gt;Growth&lt;/code&gt; plan of &lt;code&gt;Strapi&lt;/code&gt; or skip it&lt;/li&gt;
&lt;li&gt;You can press &lt;code&gt;Enter&lt;/code&gt; to accept default answers
&lt;img src=&quot;https://docs.strapi.io/assets/images/qsg-questions-answers-terminal-c55811739139a388f378b5d0ddfec035.png&quot; alt=&quot;Default answers&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Run this command to access the project and open with Visual Code&lt;pre&gt;&lt;code&gt;cd my-strapi-project &amp;amp; code .
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Run this command to start the project and your browser automatically opens a new tab.&lt;pre&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;
:::note
Change &lt;code&gt;npm&lt;/code&gt; to your Node.js package manager
:::&lt;/li&gt;
&lt;li&gt;You need to create your account and now you can access to the admin panel.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.strapi.io/cms/quick-start&quot;&gt;Strapi Quick Start Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Configure Refit</title><link>https://slimaeus.github.io/posts/refit-configuration/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/refit-configuration/</guid><description>How I configure Refit</description><pubDate>Mon, 23 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;Refit&lt;/code&gt;&lt;pre&gt;&lt;code&gt;dotnet add package Refit
dotnet add package Refit.HttpClientFactory
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Create interface&lt;pre&gt;&lt;code&gt;public interface IGithubApi
{
    [Get(&quot;/users/{userName}&quot;)]
    Task&amp;lt;User?&amp;gt; GetUserAsync(string username, CancellationToken cancellationToken = default);
}
public class User
{
    [JsonPropertyName(&quot;id&quot;)]
    public long Id { get; set; }
    [JsonPropertyName(&quot;login&quot;)]
    public string Login { get; set; } = string.Empty;
    [JsonPropertyName(&quot;avatar_url&quot;)]
    public string AvatarUrl { get; set; } = string.Empty;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Configure refit client&lt;pre&gt;&lt;code&gt;builder.Services
    .AddRefitClient&amp;lt;IGithubApi&amp;gt;()
    .ConfigureHttpClient(c =&amp;gt;
    {
        c.BaseAddress = new Uri(&quot;https://api.github.com&quot;);
        c.DefaultRequestHeaders.UserAgent.TryParseAdd(&quot;request&quot;);
    });
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Map endpoint&lt;pre&gt;&lt;code&gt;app.MapGet(&quot;github/{userName}&quot;, async (
    IGithubApi githubApi,
    [FromRoute] string userName,
    CancellationToken cancellationToken) =&amp;gt;
{
    var response = await githubApi.GetUserAsync(userName, cancellationToken);
    return Results.Ok(response);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nuget.org/packages/Refit/&quot;&gt;Refit nuget package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Configure multiple AI providers</title><link>https://slimaeus.github.io/posts/multiple-ai-provider-configuration/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/multiple-ai-provider-configuration/</guid><description>How I configure  multiple AI providers (Gemini, Mistral, Ollama...)</description><pubDate>Sat, 21 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Define providers in &lt;code&gt;appsettings.json&lt;/code&gt;/&lt;code&gt;appsettings.*.json&lt;/code&gt;&lt;pre&gt;&lt;code&gt;{
  &quot;ProviderSettings&quot;: {
    &quot;Gemini&quot;: {
      &quot;Endpoint&quot;: &quot;https://generativelanguage.googleapis.com/v1beta&quot;,
      &quot;ApiKey&quot;: &quot;&quot;,
      &quot;DefaultModel&quot;: &quot;gemini-2.0-flash-exp&quot;
    },
    &quot;Mistral&quot;: {
      &quot;Endpoint&quot;: &quot;https://api.mistral.ai/v1&quot;,
      &quot;ApiKey&quot;: &quot;&quot;,
      &quot;DefaultModel&quot;: &quot;mistral-large-2407&quot;
    },
    &quot;OpenRouter&quot;: {
      &quot;Endpoint&quot;: &quot;https://openrouter.ai/api/v1&quot;,
      &quot;ApiKey&quot;: &quot;&quot;,
      &quot;DefaultModel&quot;: &quot;google/gemini-2.0-pro-exp-02-05:free&quot;
    },
    &quot;Ollama&quot;: {
      &quot;Endpoint&quot;: &quot;http://127.0.0.1:11434/v1&quot;,
      &quot;ApiKey&quot;: &quot;&quot;,
      &quot;DefaultModel&quot;: &quot;command-r7b&quot;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Create config classes&lt;pre&gt;&lt;code&gt;public class ProviderConfiguration
{
    public string Endpoint { get; set; } = string.Empty;
    public string ApiKey { get; set; } = string.Empty;
    public string DefaultModel { get; set; } = string.Empty;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;public class ProviderSettings
{
    public ProviderConfiguration Gemini { get; set; } = default!;
    public ProviderConfiguration Mistral { get; set; } = default!;
    public ProviderConfiguration OpenRouter { get; set; } = default!;
    public ProviderConfiguration Ollama { get; set; } = default!;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Register config in &lt;code&gt;Program.cs&lt;/code&gt;&lt;pre&gt;&lt;code&gt;builder.Services.Configure&amp;lt;ProviderSettings&amp;gt;(
    builder.Configuration.GetSection(nameof(ProviderSettings)));
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;OpenAI&lt;/code&gt; package&lt;pre&gt;&lt;code&gt;dotnet add package OpenAI
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Use in endpoint&lt;pre&gt;&lt;code&gt;app.MapGet(&quot;&quot;, async (
    IOptions&amp;lt;ProviderSettings&amp;gt; options,
    string prompt,
    CancellationToken cancellationToken) =&amp;gt;
{
    var provider = options.Value.Gemini;

    var client = new ChatClient(
        provider.DefaultModel,
        new ApiKeyCredential(provider.ApiKey),
        new OpenAIClientOptions { Endpoint = new Uri(provider.Endpoint) }
    );

    var result = await client.CompleteChatAsync([prompt], cancellationToken);
    return Results.Ok(result.Value.Content);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;:::note
You can switch to other providers like &lt;code&gt;options.Value.Mistral&lt;/code&gt;, &lt;code&gt;options.Value.Ollama&lt;/code&gt;, etc.
:::&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nuget.org/packages/OpenAI/&quot;&gt;OpenAI nuget package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>My top Visual Studio shortcuts</title><link>https://slimaeus.github.io/posts/top-visual-studio-shortcuts/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/top-visual-studio-shortcuts/</guid><description>Improve your productivity</description><pubDate>Fri, 20 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;📝 Code editing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alt + 🔼/🔽&lt;/code&gt; ➡️ Move line up/down&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🧭 Navigation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl + T&lt;/code&gt; ➡️ Code Search&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + F12&lt;/code&gt; ➡️ Go to implementation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🐞 Debugging&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;F5&lt;/code&gt; ➡️ Start/continue debugging&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + F5&lt;/code&gt; ➡️ Start without debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🔲 Multi caret and selection&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Shift + Alt + .&lt;/code&gt; ➡️ Insert next matching caret&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Shift + Alt + ;&lt;/code&gt; ➡️ Insert all matching carets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📚 Projects and solutions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Shift + B&lt;/code&gt; ➡️ Build solution&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/visualstudio/ide/default-keyboard-shortcuts-in-visual-studio?view=vs-2022&quot;&gt;Keyboard shortcuts in Visual Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Deploy this pages</title><link>https://slimaeus.github.io/posts/guide/</link><guid isPermaLink="true">https://slimaeus.github.io/posts/guide/</guid><description>How to use this blog template</description><pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
I already have &lt;a href=&quot;https://nodejs.org/en/download&quot;&gt;npm&lt;/a&gt; installed on my machine and have set up &lt;a href=&quot;https://docs.github.com/en/pages/quickstart&quot;&gt;GitHub Pages&lt;/a&gt;.
:::&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create blog repository:
&lt;ul&gt;
&lt;li&gt;Generate a new repository from &lt;a href=&quot;https://github.com/saicaca/fuwari/generate&quot;&gt;this template&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npm install -g pnpm&lt;/code&gt; to install &lt;a href=&quot;https://pnpm.io&quot;&gt;pnpm&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;pnpm install&lt;/code&gt; to install dependencies.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;deploy.yml&lt;/code&gt; file to &lt;code&gt;.github/workflows&lt;/code&gt; folder.&lt;pre&gt;&lt;code&gt;name: Deploy to GitHub Pages
on:
    push:
        branches: [ main ]
    workflow_dispatch:
permissions:
    contents: read
    pages: write
    id-token: write
jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - name: Checkout your repository using git
            uses: actions/checkout@v4
        - name: Install, build, and upload your site
            uses: withastro/action@v3
    deploy:
        needs: build
        runs-on: ubuntu-latest
        environment:
        name: github-pages
        url: ${{ steps.deployment.outputs.page_url }}
        steps:
        - name: Deploy to GitHub Pages
            id: deployment
            uses: actions/deploy-pages@v4
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Edit the config file &lt;code&gt;src/config.ts&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;export const siteConfig: SiteConfig = {
    title: &quot;Slimaeus&quot;,
    subtitle: &quot;My profile&quot;,
    //...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Edit the file &lt;code&gt;astro.config.ts&lt;/code&gt;.&lt;pre&gt;&lt;code&gt;export default defineConfig({
    site: &quot;https://slimaeus.github.io/&quot;,
    //...
})
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Create &lt;code&gt;.nojekyll&lt;/code&gt; empty file to the root folder.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;pnpm run format&lt;/code&gt; and &lt;code&gt;pnpm run lint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Commit and push.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/installation#using-npm&quot;&gt;Install pnpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.astro.build/en/guides/deploy/github&quot;&gt;Deploy Astro with Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content:encoded></item></channel></rss>