How to translate dynamic strings in AdminForth API
When you are using AdminForth i18n plugin for external Apps translation you might face a case when you need to translate some data stored in your database which potentially can be changed in future.
When you are using AdminForth i18n plugin for external Apps translation you might face a case when you need to translate some data stored in your database which potentially can be changed in future.
Keycloak is an open-source identity and access management solution that provides authentication and authorization services. It can be used to secure applications and services by managing user identities, roles, and permissions.
In this guide, we will walk you through the process of setting up AdminForth authorization via Keycloak. Most important we will show you how to set up Keycloak in a Docker container and configure it to work with AdminForth.
This guide shows how to deploy own Docker apps (with AdminForth as example) to Amazon EC2 instance with Docker and Terraform involving Docker self-hosted registry.
Needed resources:
0.008$
per minute.t3a.small
instance (2 vCPUs, 2GB RAM) which costs ~14$
per month in us-east-1
region (cheapest region). Also it will take $2
per month for EBS gp2 storage (20GB) for EC2 instanceThis is it, registry will be auto-spawned on EC2 instance, so no extra costs for it. Also GitHub storage is not used, so no extra costs for it.
The setup has next features:
Our framework has a CI pipeline that runs npm run build
, publishes the package to NPM (npm publish
), and creates a new release on GitHub. It also sends a notification about the release to a Slack webhook for our team.
Secrets for these services were stored in our CI’s built-in Vault (we are running a self-hosted Woodpecker CI).
Recently, while moving plugins to separate repositories, I decided to try Infisical for centralized secrets management instead of the internal CI Vault. Infisical provides a self-hosted open-source solution, has a well-organized UI, and offers better access control than our CI Vault. It was important to me that I could reuse secrets across different repositories without copying them every time I created a new plugin.
Here’s what I did:
I have a feeling that after first ~600 versions of Adminforth we faced all possible issues with manual versioning and release notes.
Manual versioning and CHANGELOG.md is unreliable as human beings are. It is pretty easy to forget it with relevant information, forget to include some changes, forget to push it to GitHub, push it at wrong time, and many more things.
That is why we decided to move the idea of generating versions, and GitHub releases from git commit messages using great tool called semantic-release.
In this post I will explain why we did a transition from manual releases to automatic, what profits we got from it, and also will show you simple example how to do it in your project!
Every reliable system requires a backup strategy.
If you have no own backup infrastructure, here can suggest a small docker container that will help you to backup your database to AWS Glacier.
Here is more advanced snippet to deploy AdminForth to Terraform.
Here Terraform state will be stored in the cloud, so you can run this deployment from any machine including stateless CI/CD.
We will use GitHub Actions as CI/CD, but you can use any other CI/CD, for example self-hosted free WoodpeckerCI.
Here is a row snippet to deploy AdminForth to Terraform.
Many developers today are using copilots to write code faster and relax their minds from a routine tasks.
But what about writing plain text? For example blogs and micro-blogs: sometimes you want to share your progress but you are lazy for typing. Then you can give a try to AI-assisted blogging. Our Open-Source AdminForth framework has couple of new AI-capable plugins to write text and generate images.
Couple of days ago we released a plugin which allows you to co-write texts and strings with the AI.
Today LLM is already a must tool to speed-up writing, brainstorming, or generating ideas.
Here is how it looks in action: