<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Infigini Engineering Blog</title>
<link>https://infigini.com/blog</link>
<description>Notes from the Infigini IT Services engineering team.</description>
<language>en</language>
<atom:link href="https://infigini.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Fri, 16 Oct 2026 09:00:00 GMT</lastBuildDate>
<item><title>Multi-tenant SaaS database design: shared, schema or separate DB</title><link>https://infigini.com/blog/multi-tenant-saas-database-design</link><guid isPermaLink="true">https://infigini.com/blog/multi-tenant-saas-database-design</guid><pubDate>Fri, 16 Oct 2026 09:00:00 GMT</pubDate><category>Data</category><description>Shared tables, schema per tenant or a database per customer: how the three multi-tenant models compare, and how to make the shared model safe with Postgres row-level security.</description></item>
<item><title>Payment gateway integration: webhooks, retries and reconciliation</title><link>https://infigini.com/blog/payment-gateway-integration-guide</link><guid isPermaLink="true">https://infigini.com/blog/payment-gateway-integration-guide</guid><pubDate>Fri, 16 Oct 2026 09:00:00 GMT</pubDate><category>E-commerce</category><description>How to integrate Stripe, Razorpay or any payment gateway so no order is lost: signed webhooks, idempotent processing, safe retries and daily reconciliation.</description></item>
<item><title>SaaS MVP architecture: early decisions that prevent a rewrite</title><link>https://infigini.com/blog/saas-mvp-architecture</link><guid isPermaLink="true">https://infigini.com/blog/saas-mvp-architecture</guid><pubDate>Fri, 16 Oct 2026 09:00:00 GMT</pubDate><category>Engineering</category><description>The few architecture decisions a SaaS MVP must get right on day one, including tenancy, auth, billing and background jobs, and the ones you can safely postpone.</description></item>
<item><title>Clinic appointment scheduling system design: a practical guide</title><link>https://infigini.com/blog/clinic-appointment-scheduling-design</link><guid isPermaLink="true">https://infigini.com/blog/clinic-appointment-scheduling-design</guid><pubDate>Thu, 15 Oct 2026 09:00:00 GMT</pubDate><category>Healthcare</category><description>Schedule templates, visit types, timed slots versus tokens, double-booking prevention in the database, holds for online booking and time zones. How to design clinic scheduling that holds up.</description></item>
<item><title>E-commerce performance checklist: from Core Web Vitals to checkout</title><link>https://infigini.com/blog/ecommerce-performance-checklist</link><guid isPermaLink="true">https://infigini.com/blog/ecommerce-performance-checklist</guid><pubDate>Thu, 15 Oct 2026 09:00:00 GMT</pubDate><category>E-commerce</category><description>What we check, in order, when an online store feels slow: field data, product images, third-party scripts, server caching, catalogue queries and the checkout path.</description></item>
<item><title>Internal tools: build, buy or use a low-code platform?</title><link>https://infigini.com/blog/internal-tools-build-vs-buy</link><guid isPermaLink="true">https://infigini.com/blog/internal-tools-build-vs-buy</guid><pubDate>Thu, 15 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>How we decide between a SaaS product, a low-code builder such as Retool or Appsmith, and custom software for admin panels, approvals and operations tools.</description></item>
<item><title>Protecting patient data in healthcare web apps: a practical guide</title><link>https://infigini.com/blog/protecting-patient-data-in-web-apps</link><guid isPermaLink="true">https://infigini.com/blog/protecting-patient-data-in-web-apps</guid><pubDate>Thu, 15 Oct 2026 09:00:00 GMT</pubDate><category>Healthcare</category><description>The engineering controls that keep patient records safe in a clinic or hospital web app: access checks per record, encryption, clean logs, audit trails and safe test data.</description></item>
<item><title>Online exam portal design: building one that holds up on exam day</title><link>https://infigini.com/blog/online-exam-portal-design</link><guid isPermaLink="true">https://infigini.com/blog/online-exam-portal-design</guid><pubDate>Wed, 14 Oct 2026 09:00:00 GMT</pubDate><category>Education</category><description>How to design an online exam portal that survives exam day: start-time spikes, server-side timers, autosave that copes with bad Wi-Fi and realistic load tests.</description></item>
<item><title>Outsourcing software development to India: a practical 2026 guide</title><link>https://infigini.com/blog/outsourcing-software-development-to-india</link><guid isPermaLink="true">https://infigini.com/blog/outsourcing-software-development-to-india</guid><pubDate>Wed, 14 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>How to outsource software development to India without the usual surprises: picking a partner, working across time zones, contracts and IP, data, payments and a sensible first 90 days.</description></item>
<item><title>Student information system requirements: a checklist for colleges</title><link>https://infigini.com/blog/student-information-system-requirements</link><guid isPermaLink="true">https://infigini.com/blog/student-information-system-requirements</guid><pubDate>Wed, 14 Oct 2026 09:00:00 GMT</pubDate><category>Education</category><description>Student information system requirements for colleges: the lifelong record, academic rules, transcripts, ABC and APAAR links, access and results-day load.</description></item>
<item><title>AngularJS to Angular migration: how to plan it in 2026</title><link>https://infigini.com/blog/angularjs-to-angular-migration-plan</link><guid isPermaLink="true">https://infigini.com/blog/angularjs-to-angular-migration-plan</guid><pubDate>Tue, 13 Oct 2026 09:00:00 GMT</pubDate><category>Frontend</category><description>AngularJS lost support at the end of 2021. How we choose between a hybrid upgrade, a route-by-route split and a rewrite, and how we size and sequence the work.</description></item>
<item><title>Application support retainer: what it covers and how it works</title><link>https://infigini.com/blog/application-support-retainer-explained</link><guid isPermaLink="true">https://infigini.com/blog/application-support-retainer-explained</guid><pubDate>Tue, 13 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>What a monthly application support retainer should include, how hours and severity levels work, what sits outside it, and what to agree before you sign.</description></item>
<item><title>HRMS modules checklist: what a custom HR system needs</title><link>https://infigini.com/blog/hrms-modules-checklist</link><guid isPermaLink="true">https://infigini.com/blog/hrms-modules-checklist</guid><pubDate>Tue, 13 Oct 2026 09:00:00 GMT</pubDate><category>ERP</category><description>The modules a custom HRMS needs, what each one must handle beyond the obvious, and which belong in the first release versus later phases.</description></item>
<item><title>Taking over an inherited codebase: the first 30 days, week by week</title><link>https://infigini.com/blog/taking-over-an-inherited-codebase</link><guid isPermaLink="true">https://infigini.com/blog/taking-over-an-inherited-codebase</guid><pubDate>Tue, 13 Oct 2026 09:00:00 GMT</pubDate><category>Engineering</category><description>A practical plan for the first month after inheriting a codebase: secure access, make it build, map production, add a safety net, then change things.</description></item>
<item><title>Adopting Angular signals in an existing app: a practical order</title><link>https://infigini.com/blog/angular-signals-in-existing-apps</link><guid isPermaLink="true">https://infigini.com/blog/angular-signals-in-existing-apps</guid><pubDate>Mon, 12 Oct 2026 09:00:00 GMT</pubDate><category>Frontend</category><description>How we bring signals into large Angular codebases without a rewrite: which APIs are stable, which migrations to run first, where RxJS stays, and the mistakes to avoid.</description></item>
<item><title>How to choose a tech stack for a business web app in 2026</title><link>https://infigini.com/blog/choosing-a-tech-stack-for-a-business-app</link><guid isPermaLink="true">https://infigini.com/blog/choosing-a-tech-stack-for-a-business-app</guid><pubDate>Mon, 12 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>A practical way to pick the frontend, backend, database and hosting for a business application, based on your team, your data and the next five years, not on trends.</description></item>
<item><title>LLM document processing: a practical extraction pipeline</title><link>https://infigini.com/blog/llm-document-processing-pipelines</link><guid isPermaLink="true">https://infigini.com/blog/llm-document-processing-pipelines</guid><pubDate>Mon, 12 Oct 2026 09:00:00 GMT</pubDate><category>AI</category><description>How to turn invoices, forms and letters into validated structured data with an LLM: ingestion, OCR, schema-bound extraction, checks, human review and measuring accuracy.</description></item>
<item><title>What drives the cost of a custom web application in 2026</title><link>https://infigini.com/blog/web-application-cost-factors</link><guid isPermaLink="true">https://infigini.com/blog/web-application-cost-factors</guid><pubDate>Mon, 12 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>The real cost drivers behind a custom web application, from roles and business rules to integrations, data migration, security and running costs, and how to keep them predictable.</description></item>
<item><title>AI customer support chatbot: what it takes to build one that works</title><link>https://infigini.com/blog/ai-chatbot-for-customer-support</link><guid isPermaLink="true">https://infigini.com/blog/ai-chatbot-for-customer-support</guid><pubDate>Sun, 11 Oct 2026 09:00:00 GMT</pubDate><category>AI</category><description>Scope from real tickets, clean help content, narrow read-only tools, a proper handoff and testing against past conversations. What makes a support bot customers trust.</description></item>
<item><title>How to evaluate a RAG assistant before launch</title><link>https://infigini.com/blog/evaluating-rag-answers</link><guid isPermaLink="true">https://infigini.com/blog/evaluating-rag-answers</guid><pubDate>Sun, 11 Oct 2026 09:00:00 GMT</pubDate><category>AI</category><description>How to evaluate a RAG assistant before launch: build a real question set, score retrieval and answers separately, test refusals and permissions, set thresholds.</description></item>
<item><title>Self-hosting n8n in production: Postgres, queue mode and backups</title><link>https://infigini.com/blog/self-hosting-n8n-production</link><guid isPermaLink="true">https://infigini.com/blog/self-hosting-n8n-production</guid><pubDate>Sun, 11 Oct 2026 09:00:00 GMT</pubDate><category>AI</category><description>How to run n8n reliably on your own server: PostgreSQL, the encryption key, HTTPS and webhooks, queue mode with Redis workers, pruning, upgrades and backups.</description></item>
<item><title>IT infrastructure audit checklist for growing companies (2026)</title><link>https://infigini.com/blog/infrastructure-audit-checklist</link><guid isPermaLink="true">https://infigini.com/blog/infrastructure-audit-checklist</guid><pubDate>Sat, 10 Oct 2026 09:00:00 GMT</pubDate><category>Guides</category><description>How to audit your own servers, cloud accounts and release process: what to check in each area, the commands that gather the evidence, and how to rank what you find.</description></item>
<item><title>MongoDB production checklist: replica sets, indexes and backups</title><link>https://infigini.com/blog/mongodb-production-checklist</link><guid isPermaLink="true">https://infigini.com/blog/mongodb-production-checklist</guid><pubDate>Sat, 10 Oct 2026 09:00:00 GMT</pubDate><category>Data</category><description>What we check before a MongoDB deployment carries real traffic: replica set layout, security settings, indexes that match the queries, the oplog window and backups.</description></item>
<item><title>NGINX performance tuning: the settings that actually matter</title><link>https://infigini.com/blog/nginx-performance-tuning</link><guid isPermaLink="true">https://infigini.com/blog/nginx-performance-tuning</guid><pubDate>Sat, 10 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>NGINX performance tuning that makes a measurable difference: worker and file limits, upstream keepalive, compression, caching, TLS and HTTP/2, and what to skip.</description></item>
<item><title>PostgreSQL VACUUM and table bloat: find it, fix it, prevent it</title><link>https://infigini.com/blog/postgres-vacuum-and-bloat</link><guid isPermaLink="true">https://infigini.com/blog/postgres-vacuum-and-bloat</guid><pubDate>Sat, 10 Oct 2026 09:00:00 GMT</pubDate><category>Data</category><description>Why PostgreSQL tables bloat, how to measure it, what blocks autovacuum, how to tune it per table, and how to reclaim space without locking production.</description></item>
<item><title>How to choose hosting for a business web application in 2026</title><link>https://infigini.com/blog/choosing-hosting-for-a-business-web-app</link><guid isPermaLink="true">https://infigini.com/blog/choosing-hosting-for-a-business-web-app</guid><pubDate>Fri, 09 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>VPS, PaaS, managed containers or Kubernetes? A practical way to match hosting to your app, team and data, with the checks to make before you commit.</description></item>
<item><title>Lift-and-shift vs re-platforming: choosing a cloud migration approach</title><link>https://infigini.com/blog/lift-and-shift-vs-replatform</link><guid isPermaLink="true">https://infigini.com/blog/lift-and-shift-vs-replatform</guid><pubDate>Fri, 09 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>Rehost or replatform? How we decide, workload by workload, what each approach costs in effort and risk, and the small changes worth making during a move.</description></item>
<item><title>Dokploy vs Coolify vs CapRover: picking a self-hosted PaaS in 2026</title><link>https://infigini.com/blog/self-hosted-paas-compared</link><guid isPermaLink="true">https://infigini.com/blog/self-hosted-paas-compared</guid><pubDate>Fri, 09 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>How Dokploy, Coolify and CapRover differ in runtime, proxy, builds, backups and multi-server support, and which one we would choose for different teams.</description></item>
<item><title>Self-hosting internal tools vs SaaS: what it really costs</title><link>https://infigini.com/blog/self-hosting-vs-saas-tools</link><guid isPermaLink="true">https://infigini.com/blog/self-hosting-vs-saas-tools</guid><pubDate>Fri, 09 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>When running your own Git, chat, password manager or analytics beats paying per seat, when it does not, and how to count the hours that never show on an invoice.</description></item>
<item><title>Cloud migration checklist: moving off shared hosting or on-prem</title><link>https://infigini.com/blog/cloud-migration-checklist</link><guid isPermaLink="true">https://infigini.com/blog/cloud-migration-checklist</guid><pubDate>Thu, 08 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>A step-by-step checklist for moving a website, app or office server to the cloud: inventory, target design, data sync, DNS cutover, rollback and the first two weeks after.</description></item>
<item><title>Database migrations in CI/CD: how to run them safely</title><link>https://infigini.com/blog/database-migrations-in-ci-cd</link><guid isPermaLink="true">https://infigini.com/blog/database-migrations-in-ci-cd</guid><pubDate>Thu, 08 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we run schema migrations in CI/CD pipelines without downtime: a separate migration step, expand and contract, lock timeouts, real-database tests and rolling forward.</description></item>
<item><title>Zero-downtime deploys without Kubernetes, step by step</title><link>https://infigini.com/blog/zero-downtime-deploys-without-kubernetes</link><guid isPermaLink="true">https://infigini.com/blog/zero-downtime-deploys-without-kubernetes</guid><pubDate>Thu, 08 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How to ship during working hours on one or two servers: blue-green with NGINX, real health checks, graceful shutdown and migrations that old code survives.</description></item>
<item><title>Containerising a legacy Django app: a step-by-step guide</title><link>https://infigini.com/blog/containerising-a-legacy-django-app</link><guid isPermaLink="true">https://infigini.com/blog/containerising-a-legacy-django-app</guid><pubDate>Wed, 07 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we containerise a legacy Django app: freeze dependencies, move settings to env vars, build a multi-stage image, handle static and media, then cut over.</description></item>
<item><title>Deploy to a VPS with GitHub Actions over SSH: a safe 2026 setup</title><link>https://infigini.com/blog/github-actions-deploy-to-vps</link><guid isPermaLink="true">https://infigini.com/blog/github-actions-deploy-to-vps</guid><pubDate>Wed, 07 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>A working GitHub Actions workflow that deploys to a Linux VPS over SSH: a restricted deploy user, pinned host keys, atomic release folders, health checks and rollback.</description></item>
<item><title>Kubernetes requests and limits: setting CPU and memory right</title><link>https://infigini.com/blog/kubernetes-requests-and-limits</link><guid isPermaLink="true">https://infigini.com/blog/kubernetes-requests-and-limits</guid><pubDate>Wed, 07 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>What requests and limits really do, why CPU limits throttle and memory limits kill, and a measured way to size pods, with real examples and commands.</description></item>
<item><title>Smaller, safer Docker images: multi-stage builds and scanning</title><link>https://infigini.com/blog/smaller-safer-docker-images</link><guid isPermaLink="true">https://infigini.com/blog/smaller-safer-docker-images</guid><pubDate>Wed, 07 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we cut Docker image size and attack surface: multi-stage builds, slim and distroless bases, non-root users, and CI scanning with Trivy or Grype.</description></item>
<item><title>Azure App Service or containers on a VM? How to choose in 2026</title><link>https://infigini.com/blog/azure-app-service-vs-containers</link><guid isPermaLink="true">https://infigini.com/blog/azure-app-service-vs-containers</guid><pubDate>Tue, 06 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>When App Service's managed platform is the better home for your app, when Docker on an Azure VM wins, the limits that decide it, and where Container Apps fits.</description></item>
<item><title>Azure DevOps pipelines for web apps: a practical YAML setup</title><link>https://infigini.com/blog/azure-devops-pipelines-guide</link><guid isPermaLink="true">https://infigini.com/blog/azure-devops-pipelines-guide</guid><pubDate>Tue, 06 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we set up Azure DevOps pipelines for web apps: YAML stages, secret-free service connections, environment approvals, Key Vault secrets and slot swaps.</description></item>
<item><title>k3s for small production clusters: when it fits and how to run it</title><link>https://infigini.com/blog/k3s-for-small-production-clusters</link><guid isPermaLink="true">https://infigini.com/blog/k3s-for-small-production-clusters</guid><pubDate>Tue, 06 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>When k3s is the right Kubernetes for a small production cluster, the HA layouts that work, install and backup config, and the cases where we pick something else.</description></item>
<item><title>How to reduce cloud costs without breaking production: a checklist</title><link>https://infigini.com/blog/reduce-cloud-bill-checklist</link><guid isPermaLink="true">https://infigini.com/blog/reduce-cloud-bill-checklist</guid><pubDate>Tue, 06 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>The order we work in when cutting an AWS or Azure bill: find the spend, delete what nobody uses, rightsize, fix data transfer, then commit. With commands and the safety checks between each step.</description></item>
<item><title>AWS account setup checklist for a new product (2026)</title><link>https://infigini.com/blog/aws-account-setup-checklist</link><guid isPermaLink="true">https://infigini.com/blog/aws-account-setup-checklist</guid><pubDate>Mon, 05 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>The first-week setup we use for new AWS accounts: root user lockdown, Organizations, Identity Center, keyless CI/CD, guardrails and billing alerts.</description></item>
<item><title>AWS hidden costs: NAT gateways, data transfer and idle resources</title><link>https://infigini.com/blog/aws-hidden-costs</link><guid isPermaLink="true">https://infigini.com/blog/aws-hidden-costs</guid><pubDate>Mon, 05 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>Where AWS bills quietly grow: NAT gateway processing, egress and cross-zone transfer, public IPv4 charges and forgotten resources, with commands to find each one.</description></item>
<item><title>AWS vs Azure for a growing product team: how to choose in 2026</title><link>https://infigini.com/blog/aws-vs-azure-for-growing-teams</link><guid isPermaLink="true">https://infigini.com/blog/aws-vs-azure-for-growing-teams</guid><pubDate>Mon, 05 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>How to choose between AWS and Azure for a product team of five to fifty: identity, managed services, AI, pricing levers, skills, and what actually decides it.</description></item>
<item><title>Disaster recovery plan: setting RPO and RTO, and what to test</title><link>https://infigini.com/blog/disaster-recovery-plan-rpo-rto</link><guid isPermaLink="true">https://infigini.com/blog/disaster-recovery-plan-rpo-rto</guid><pubDate>Sun, 04 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>How to write a disaster recovery plan a small team can actually follow: setting RPO and RTO per system, writing the runbook, and the tests that prove the numbers.</description></item>
<item><title>Managed cloud services: what to expect from a provider in 2026</title><link>https://infigini.com/blog/managed-cloud-what-to-expect</link><guid isPermaLink="true">https://infigini.com/blog/managed-cloud-what-to-expect</guid><pubDate>Sun, 04 Oct 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>What managed cloud services should cover in your AWS or Azure account: access, security, patching, backups, cost control, reporting and a clean exit.</description></item>
<item><title>PostgreSQL backup strategies: pg_dump, pg_basebackup and PITR</title><link>https://infigini.com/blog/postgres-backup-strategies</link><guid isPermaLink="true">https://infigini.com/blog/postgres-backup-strategies</guid><pubDate>Sun, 04 Oct 2026 09:00:00 GMT</pubDate><category>Data</category><description>When pg_dump is enough, when you need base backups and WAL archiving, and how we run point-in-time recovery with pgBackRest on real PostgreSQL servers.</description></item>
<item><title>How to write incident runbooks your team will actually use</title><link>https://infigini.com/blog/writing-incident-runbooks</link><guid isPermaLink="true">https://infigini.com/blog/writing-incident-runbooks</guid><pubDate>Sun, 04 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>A practical way to write incident runbooks: start from your alerts, use one fixed structure, make every command copy-pasteable, and test each page with someone who did not write it.</description></item>
<item><title>Uptime alerts without alert fatigue: what to page on and how</title><link>https://infigini.com/blog/alerting-without-alert-fatigue</link><guid isPermaLink="true">https://infigini.com/blog/alerting-without-alert-fatigue</guid><pubDate>Sat, 03 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we design uptime and server alerts that people still act on: multi-location checks, symptom-based rules, page versus ticket, Alertmanager grouping and regular pruning.</description></item>
<item><title>Let's Encrypt auto-renewal: automating TLS certificates in 2026</title><link>https://infigini.com/blog/lets-encrypt-certificate-automation</link><guid isPermaLink="true">https://infigini.com/blog/lets-encrypt-certificate-automation</guid><pubDate>Sat, 03 Oct 2026 09:00:00 GMT</pubDate><category>Security</category><description>Certificate lifetimes are getting shorter and Let's Encrypt no longer emails you before expiry. How we set up issuance, renewal, reloads and monitoring so nobody has to remember.</description></item>
<item><title>Prometheus and Grafana monitoring for small teams: a practical setup</title><link>https://infigini.com/blog/prometheus-grafana-for-small-teams</link><guid isPermaLink="true">https://infigini.com/blog/prometheus-grafana-for-small-teams</guid><pubDate>Sat, 03 Oct 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>A small, self-hosted Prometheus, Grafana and Alertmanager stack for a handful of servers: what to collect, the few alerts worth having, and how to keep it running.</description></item>
<item><title>UFW and Fail2ban on Ubuntu: a setup that won't lock you out</title><link>https://infigini.com/blog/ufw-and-fail2ban-setup</link><guid isPermaLink="true">https://infigini.com/blog/ufw-and-fail2ban-setup</guid><pubDate>Sat, 03 Oct 2026 09:00:00 GMT</pubDate><category>Security</category><description>How we set up UFW and Fail2ban on Ubuntu servers: safe rule order, the Docker port caveat, a jail.local that works, and how to prove bans are happening.</description></item>
<item><title>Linux server disk full: how to find and free space safely</title><link>https://infigini.com/blog/linux-disk-full-troubleshooting</link><guid isPermaLink="true">https://infigini.com/blog/linux-disk-full-troubleshooting</guid><pubDate>Fri, 02 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>A step-by-step routine for a full disk on a Linux server: confirm what is full, find the space, clear the usual suspects safely and stop it happening again.</description></item>
<item><title>Running apps as systemd services: a production unit file guide</title><link>https://infigini.com/blog/running-apps-with-systemd</link><guid isPermaLink="true">https://infigini.com/blog/running-apps-with-systemd</guid><pubDate>Fri, 02 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>How we run Node, Python and Go apps under systemd: a dedicated user, restart limits, secrets, hardening, resource limits and logs that do not fill the disk.</description></item>
<item><title>SSH hardening checklist for Linux production servers (2026)</title><link>https://infigini.com/blog/ssh-hardening-checklist</link><guid isPermaLink="true">https://infigini.com/blog/ssh-hardening-checklist</guid><pubDate>Fri, 02 Oct 2026 09:00:00 GMT</pubDate><category>Security</category><description>The sshd settings, key practices and network controls we apply to every production Linux server, with a config you can test before you lock yourself out.</description></item>
<item><title>Managed vs unmanaged VPS: which one does your business need?</title><link>https://infigini.com/blog/managed-vs-unmanaged-vps</link><guid isPermaLink="true">https://infigini.com/blog/managed-vs-unmanaged-vps</guid><pubDate>Thu, 01 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>Managed vs unmanaged VPS: what a managed plan actually covers, what you take on with an unmanaged server, the real cost of each and how to decide.</description></item>
<item><title>Monthly server maintenance checklist for Linux servers</title><link>https://infigini.com/blog/monthly-server-maintenance-checklist</link><guid isPermaLink="true">https://infigini.com/blog/monthly-server-maintenance-checklist</guid><pubDate>Thu, 01 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>Our monthly server maintenance checklist for Ubuntu and Debian: patches and reboots, disk and logs, certificates, access review, backups and failed services.</description></item>
<item><title>Ubuntu server initial setup: the first hour, step by step</title><link>https://infigini.com/blog/ubuntu-server-first-hour-setup</link><guid isPermaLink="true">https://infigini.com/blog/ubuntu-server-first-hour-setup</guid><pubDate>Thu, 01 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>What we do in the first hour on every new Ubuntu 24.04 or 26.04 server: updates, a sudo user, SSH lockdown, UFW, automatic updates, swap and log limits.</description></item>
<item><title>What server management services include, and what they should not</title><link>https://infigini.com/blog/what-server-management-includes</link><guid isPermaLink="true">https://infigini.com/blog/what-server-management-includes</guid><pubDate>Thu, 01 Oct 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>The routine work a server management service should cover in 2026, where its boundaries sit, and the contract warning signs to check before you sign.</description></item>
<item><title>DevOps checklist for small teams without an ops engineer</title><link>https://infigini.com/blog/devops-for-small-teams-checklist</link><guid isPermaLink="true">https://infigini.com/blog/devops-for-small-teams-checklist</guid><pubDate>Wed, 30 Sep 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>The ten things a small team without an ops engineer should have in place: account ownership, CI deploys and rollback, secrets, alerts, backups and runbooks.</description></item>
<item><title>DevOps outsourcing vs in-house hiring: an honest comparison</title><link>https://infigini.com/blog/devops-outsourcing-vs-in-house</link><guid isPermaLink="true">https://infigini.com/blog/devops-outsourcing-vs-in-house</guid><pubDate>Wed, 30 Sep 2026 09:00:00 GMT</pubDate><category>Guides</category><description>When an outside DevOps engineer or team makes sense, when a permanent hire is the better call, and how to set up either so you keep control of your infrastructure.</description></item>
<item><title>Hiring a DevOps engineer: skills to look for and questions to ask</title><link>https://infigini.com/blog/hiring-a-devops-engineer-what-to-look-for</link><guid isPermaLink="true">https://infigini.com/blog/hiring-a-devops-engineer-what-to-look-for</guid><pubDate>Wed, 30 Sep 2026 09:00:00 GMT</pubDate><category>Guides</category><description>What to look for when hiring a DevOps engineer in 2026: the skills that matter, interview questions that reveal real experience, a practical exercise and red flags.</description></item>
<item><title>What DevOps management includes, and what it doesn't</title><link>https://infigini.com/blog/what-devops-management-includes</link><guid isPermaLink="true">https://infigini.com/blog/what-devops-management-includes</guid><pubDate>Wed, 30 Sep 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>The work a DevOps management service should cover each month, the deliverables you should own at the end, and the gaps to settle before you sign.</description></item>
<item><title>Modernising a legacy system without a big-bang rewrite</title><link>https://infigini.com/blog/legacy-system-modernisation</link><guid isPermaLink="true">https://infigini.com/blog/legacy-system-modernisation</guid><pubDate>Tue, 29 Sep 2026 09:00:00 GMT</pubDate><category>Guides</category><description>Why full rewrites of business systems so often stall, and how replacing a legacy system one piece at a time keeps the organisation running throughout.</description></item>
<item><title>Publishing an Angular library to npm</title><link>https://infigini.com/blog/publishing-angular-library-npm</link><guid isPermaLink="true">https://infigini.com/blog/publishing-angular-library-npm</guid><pubDate>Wed, 23 Sep 2026 09:00:00 GMT</pubDate><category>Open Source</category><description>What we learned publishing pp-seo and pp-editor: workspace setup, ng-packagr, the public API, peer dependencies, entry points and versioning.</description></item>
<item><title>Building a private cloud on one workstation</title><link>https://infigini.com/blog/private-cloud-on-one-workstation</link><guid isPermaLink="true">https://infigini.com/blog/private-cloud-on-one-workstation</guid><pubDate>Fri, 18 Sep 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>How we combined Multipass, WSL2, Tailscale and a private DNS zone into a development cloud that provisions in minutes.</description></item>
<item><title>Moving off the public cloud: when self-hosting makes sense</title><link>https://infigini.com/blog/cloud-repatriation-when-it-makes-sense</link><guid isPermaLink="true">https://infigini.com/blog/cloud-repatriation-when-it-makes-sense</guid><pubDate>Fri, 11 Sep 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>A balanced look at moving workloads off the public cloud: when self-hosting pays off, when it does not, and what to check before you decide.</description></item>
<item><title>Migrating an Angular app to standalone components</title><link>https://infigini.com/blog/angular-standalone-migration</link><guid isPermaLink="true">https://infigini.com/blog/angular-standalone-migration</guid><pubDate>Mon, 07 Sep 2026 09:00:00 GMT</pubDate><category>Frontend</category><description>How we moved NgModule-based Angular apps to standalone components in stages, using the official schematic, lazy routes and functional providers.</description></item>
<item><title>Building content pipelines with n8n and LLMs</title><link>https://infigini.com/blog/n8n-content-pipelines</link><guid isPermaLink="true">https://infigini.com/blog/n8n-content-pipelines</guid><pubDate>Wed, 02 Sep 2026 09:00:00 GMT</pubDate><category>AI</category><description>How we ingest, summarise, deduplicate and review tool listings for TechLogHub with n8n, an LLM step and MongoDB, without losing editorial control.</description></item>
<item><title>RAG on Azure OpenAI: notes from two knowledge assistants</title><link>https://infigini.com/blog/rag-on-azure-openai</link><guid isPermaLink="true">https://infigini.com/blog/rag-on-azure-openai</guid><pubDate>Thu, 27 Aug 2026 09:00:00 GMT</pubDate><category>AI</category><description>Chunking, search tuning and the Azure services we ended up relying on while building two retrieval-augmented knowledge assistants.</description></item>
<item><title>What software maintenance after launch really involves</title><link>https://infigini.com/blog/software-maintenance-after-launch</link><guid isPermaLink="true">https://infigini.com/blog/software-maintenance-after-launch</guid><pubDate>Sat, 22 Aug 2026 09:00:00 GMT</pubDate><category>Guides</category><description>Launch is the start of the bill, not the end. What ongoing maintenance covers, what drives its cost, and how to plan for it before you sign off.</description></item>
<item><title>When we don't recommend Kubernetes</title><link>https://infigini.com/blog/kubernetes-when-not-to</link><guid isPermaLink="true">https://infigini.com/blog/kubernetes-when-not-to</guid><pubDate>Tue, 18 Aug 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>We use Kubernetes, but often advise against it. Here is when Docker Compose on a well-run server is the better choice, and the signs you have outgrown it.</description></item>
<item><title>HRMS: when to build and when to buy</title><link>https://infigini.com/blog/hrms-build-vs-buy</link><guid isPermaLink="true">https://infigini.com/blog/hrms-build-vs-buy</guid><pubDate>Thu, 13 Aug 2026 09:00:00 GMT</pubDate><category>ERP</category><description>A practical guide to deciding between an off-the-shelf HRMS and a custom build: where each fits, what drives cost, and the hybrid option.</description></item>
<item><title>Backups that actually restore: Postgres and MongoDB</title><link>https://infigini.com/blog/backups-that-actually-restore</link><guid isPermaLink="true">https://infigini.com/blog/backups-that-actually-restore</guid><pubDate>Sat, 08 Aug 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>Our routine for PostgreSQL and MongoDB backups that we know will restore: logical dumps, off-server copies and a scheduled restore test.</description></item>
<item><title>Self-hosted object storage with MinIO</title><link>https://infigini.com/blog/minio-self-hosted-object-storage</link><guid isPermaLink="true">https://infigini.com/blog/minio-self-hosted-object-storage</guid><pubDate>Tue, 04 Aug 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>How we run MinIO on our own servers for uploads and documents: Docker setup, NGINX in front, per-app credentials, presigned URLs and backups.</description></item>
<item><title>Generating SQL from JSON: the design behind ETF</title><link>https://infigini.com/blog/sql-from-json</link><guid isPermaLink="true">https://infigini.com/blog/sql-from-json</guid><pubDate>Thu, 30 Jul 2026 09:00:00 GMT</pubDate><category>Open Source</category><description>Why we built ETF, an open-source tool that turns JSON table and relation definitions into SQL and an Express API, and the design choices behind it.</description></item>
<item><title>AI-assisted healthcare report workflows: keeping doctors in control</title><link>https://infigini.com/blog/ai-report-automation-in-healthcare</link><guid isPermaLink="true">https://infigini.com/blog/ai-report-automation-in-healthcare</guid><pubDate>Mon, 27 Jul 2026 09:00:00 GMT</pubDate><category>Healthcare</category><description>How to plan an AI report-drafting workflow for a clinic or hospital where every report is approved by a doctor, logged, and handled with care.</description></item>
<item><title>Qdrant or Azure AI Search for retrieval?</title><link>https://infigini.com/blog/qdrant-vs-azure-ai-search</link><guid isPermaLink="true">https://infigini.com/blog/qdrant-vs-azure-ai-search</guid><pubDate>Wed, 22 Jul 2026 09:00:00 GMT</pubDate><category>AI</category><description>How we choose between Qdrant and Azure AI Search for RAG systems, comparing retrieval quality, hybrid search, operations, security and cost.</description></item>
<item><title>AWS Lightsail or EC2? A practical guide for small teams</title><link>https://infigini.com/blog/lightsail-vs-ec2</link><guid isPermaLink="true">https://infigini.com/blog/lightsail-vs-ec2</guid><pubDate>Fri, 17 Jul 2026 09:00:00 GMT</pubDate><category>Cloud</category><description>When Lightsail's fixed bundles are the right call, when you need EC2, what drives the cost of each, and how to keep moving between them easy.</description></item>
<item><title>Caching in the Next.js App Router, explained with real pages</title><link>https://infigini.com/blog/nextjs-app-router-caching</link><guid isPermaLink="true">https://infigini.com/blog/nextjs-app-router-caching</guid><pubDate>Mon, 13 Jul 2026 09:00:00 GMT</pubDate><category>Frontend</category><description>How we choose between time-based revalidation, on-demand tags, dynamic rendering and static params for listing, article and dashboard pages.</description></item>
<item><title>Using local LLMs with LM Studio during development</title><link>https://infigini.com/blog/local-llms-with-lm-studio</link><guid isPermaLink="true">https://infigini.com/blog/local-llms-with-lm-studio</guid><pubDate>Wed, 08 Jul 2026 09:00:00 GMT</pubDate><category>AI</category><description>How we use LM Studio's OpenAI-compatible server in development, swap base_url per environment, and know when a local model is good enough.</description></item>
<item><title>Questions to ask before hiring a software development company</title><link>https://infigini.com/blog/questions-before-hiring-a-software-agency</link><guid isPermaLink="true">https://infigini.com/blog/questions-before-hiring-a-software-agency</guid><pubDate>Fri, 03 Jul 2026 09:00:00 GMT</pubDate><category>Guides</category><description>The questions about people, process, ownership, cost and support that reveal how a software company really works before you sign.</description></item>
<item><title>Moving CI from Jenkins to GitHub Actions without a freeze</title><link>https://infigini.com/blog/jenkins-to-github-actions</link><guid isPermaLink="true">https://infigini.com/blog/jenkins-to-github-actions</guid><pubDate>Mon, 29 Jun 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we moved build, test and deploy pipelines from Jenkins to GitHub Actions one at a time, with both systems running side by side.</description></item>
<item><title>One NGINX server, twenty subdomains</title><link>https://infigini.com/blog/one-nginx-many-subdomains</link><guid isPermaLink="true">https://infigini.com/blog/one-nginx-many-subdomains</guid><pubDate>Wed, 24 Jun 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>Wildcard SSL, IP-restricted databases and routing that stays readable: how we run around twenty subdomains from one NGINX server.</description></item>
<item><title>Hostel management software: requirements colleges forget</title><link>https://infigini.com/blog/hostel-management-system-requirements</link><guid isPermaLink="true">https://infigini.com/blog/hostel-management-system-requirements</guid><pubDate>Fri, 19 Jun 2026 09:00:00 GMT</pubDate><category>ERP</category><description>Room changes, mess rebates, gate passes and fee reconciliation: the hostel software requirements colleges miss until after go-live.</description></item>
<item><title>MongoDB schema design for product catalogues</title><link>https://infigini.com/blog/mongodb-schema-design-catalogs</link><guid isPermaLink="true">https://infigini.com/blog/mongodb-schema-design-catalogs</guid><pubDate>Mon, 15 Jun 2026 09:00:00 GMT</pubDate><category>Data</category><description>Patterns we use for catalogues in MongoDB: shaping documents around reads, the attribute pattern, variants, Decimal128 prices and faceted listings.</description></item>
<item><title>Scoping a company knowledge-base chatbot: what drives the cost</title><link>https://infigini.com/blog/rag-chatbot-cost-and-scope</link><guid isPermaLink="true">https://infigini.com/blog/rag-chatbot-cost-and-scope</guid><pubDate>Wed, 10 Jun 2026 09:00:00 GMT</pubDate><category>AI</category><description>The chatbot is rarely the costly part. What actually drives the cost and scope of a company knowledge assistant, and how to phase it sensibly.</description></item>
<item><title>Self-hosting production apps with Dokploy</title><link>https://infigini.com/blog/self-hosting-with-dokploy</link><guid isPermaLink="true">https://infigini.com/blog/self-hosting-with-dokploy</guid><pubDate>Fri, 05 Jun 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>How we run apps on a VPS with Dokploy: Traefik routing, Let's Encrypt, Dockerfile builds, autodeploy, and the gotchas that caught us out.</description></item>
<item><title>Chunking documents for RAG: what worked on real knowledge bases</title><link>https://infigini.com/blog/rag-chunking-strategies</link><guid isPermaLink="true">https://infigini.com/blog/rag-chunking-strategies</guid><pubDate>Mon, 01 Jun 2026 09:00:00 GMT</pubDate><category>AI</category><description>Fixed-size chunks broke our knowledge assistants. Here is how structure-aware splitting, chunk context and metadata filters fixed retrieval.</description></item>
<item><title>The modules a university ERP needs, and the order to build them</title><link>https://infigini.com/blog/university-erp-modules-checklist</link><guid isPermaLink="true">https://infigini.com/blog/university-erp-modules-checklist</guid><pubDate>Tue, 26 May 2026 09:00:00 GMT</pubDate><category>ERP</category><description>A practical checklist of university ERP modules, grouped into phases, with the order we would build them in and what drives effort at each stage.</description></item>
<item><title>Writing a rich-text editor without dependencies</title><link>https://infigini.com/blog/editor-without-dependencies</link><guid isPermaLink="true">https://infigini.com/blog/editor-without-dependencies</guid><pubDate>Thu, 21 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><description>What we learned building esc-editor, a dependency-free React editor: contentEditable, selections, execCommand, safe paste, tables and undo.</description></item>
<item><title>Redis caching patterns for API backends</title><link>https://infigini.com/blog/redis-caching-patterns</link><guid isPermaLink="true">https://infigini.com/blog/redis-caching-patterns</guid><pubDate>Fri, 15 May 2026 09:00:00 GMT</pubDate><category>Backend</category><description>Cache-aside, key design, invalidation, stampede protection and eviction settings: the Redis caching patterns we use in production API backends.</description></item>
<item><title>Fixed-price project or dedicated team: choosing an engagement model</title><link>https://infigini.com/blog/fixed-price-vs-dedicated-team</link><guid isPermaLink="true">https://infigini.com/blog/fixed-price-vs-dedicated-team</guid><pubDate>Mon, 11 May 2026 09:00:00 GMT</pubDate><category>Guides</category><description>How fixed-price projects and dedicated teams differ in risk, cost and control, and how to pick the one that suits the software you need built.</description></item>
<item><title>Reaching private services with Tailscale subnet routing</title><link>https://infigini.com/blog/tailscale-subnet-routing</link><guid isPermaLink="true">https://infigini.com/blog/tailscale-subnet-routing</guid><pubDate>Wed, 06 May 2026 09:00:00 GMT</pubDate><category>Infrastructure</category><description>How we use a Tailscale subnet router to reach private VMs, databases and internal DNS without installing an agent on every machine.</description></item>
<item><title>Postgres indexing mistakes we keep finding in production</title><link>https://infigini.com/blog/postgres-indexing-mistakes</link><guid isPermaLink="true">https://infigini.com/blog/postgres-indexing-mistakes</guid><pubDate>Fri, 01 May 2026 09:00:00 GMT</pubDate><category>Data</category><description>Missing foreign key indexes, wrong column order, functions on columns and indexes nobody uses: the Postgres problems we fix most often, and how.</description></item>
<item><title>What a clinic CRM actually needs (and what it doesn't)</title><link>https://infigini.com/blog/clinic-crm-features-that-matter</link><guid isPermaLink="true">https://infigini.com/blog/clinic-crm-features-that-matter</guid><pubDate>Mon, 27 Apr 2026 09:00:00 GMT</pubDate><category>Healthcare</category><description>Which clinic CRM features matter day to day (appointments, reminders, patient records, access control) and which ones mostly add cost and clutter.</description></item>
<item><title>Structuring a FastAPI service for production</title><link>https://infigini.com/blog/fastapi-project-structure</link><guid isPermaLink="true">https://infigini.com/blog/fastapi-project-structure</guid><pubDate>Wed, 22 Apr 2026 09:00:00 GMT</pubDate><category>Backend</category><description>The FastAPI layout we use for production services: routers by domain, a service layer, typed settings, lifespan resources and testable dependencies.</description></item>
<item><title>Moving Angular 8 applications forward without a rewrite</title><link>https://infigini.com/blog/angular-8-to-modern</link><guid isPermaLink="true">https://infigini.com/blog/angular-8-to-modern</guid><pubDate>Thu, 16 Apr 2026 09:00:00 GMT</pubDate><category>Frontend</category><description>The incremental path we use to upgrade Angular 8 apps: one ng update per major version, View Engine to Ivy, RxJS 7, ESLint, then standalone.</description></item>
<item><title>How to scope a software project before you ask for quotes</title><link>https://infigini.com/blog/how-to-scope-a-software-project</link><guid isPermaLink="true">https://infigini.com/blog/how-to-scope-a-software-project</guid><pubDate>Mon, 13 Apr 2026 09:00:00 GMT</pubDate><category>Guides</category><description>How to write a short, useful scope for a software project so the quotes you get back are comparable, realistic and based on the same assumptions.</description></item>
<item><title>Docker Compose in production: the checklist we use</title><link>https://infigini.com/blog/docker-compose-production-checklist</link><guid isPermaLink="true">https://infigini.com/blog/docker-compose-production-checklist</guid><pubDate>Wed, 08 Apr 2026 09:00:00 GMT</pubDate><category>DevOps</category><description>The Docker Compose checklist we run before a single-server deployment goes live: images, health checks, secrets, logs, resource limits and backups.</description></item>
<item><title>Custom ERP or off-the-shelf? How colleges should decide</title><link>https://infigini.com/blog/custom-erp-vs-off-the-shelf-for-colleges</link><guid isPermaLink="true">https://infigini.com/blog/custom-erp-vs-off-the-shelf-for-colleges</guid><pubDate>Fri, 03 Apr 2026 09:00:00 GMT</pubDate><category>ERP</category><description>A practical way for colleges to choose between a packaged ERP and a custom build, based on processes, data, budget and who will run it afterwards.</description></item>
</channel>
</rss>
