Backend Blogs

Android Push Notification Flow using FCM

Android Push Notification Flow using FCM

In the FCM flow, the app gets a token from FCM and sends it to our backend. The backend then asks FCM to deliver the notification to that token.

Write-Ahead Logging (WAL)

Write-Ahead Logging (WAL)

Write-Ahead Logging (WAL) is a database technique where every change is first written to an append-only log before the database files, to keep data safe in a crash.

Composite Index in Database

Composite Index in Database

A Composite Index is an index created using multiple columns of a table. It speeds up queries on those columns, and the order of the columns matters a lot.

Database Normalization vs Denormalization

Database Normalization vs Denormalization

Database normalization focuses on reducing data duplication and keeping data correct, whereas denormalization focuses on making the queries faster.

Evolution of HTTP

Evolution of HTTP

HTTP evolved from HTTP 1.0 to 1.1, 2.0, and 3.0, where each version solved the problem of the previous one, like new TCP connections and HOL blocking.

Internals of RESP - Redis Serialization Protocol

Internals of RESP - Redis Serialization Protocol

RESP (Redis Serialization Protocol) is the text-based language that Redis clients and servers use to talk. The first byte of each message tells the data type.

Configuration with Viper in Go

Configuration with Viper in Go

Viper is a Go package that finds, loads, and unmarshals configuration files. We will use it to load the configuration from an envfile in a Go project.

Test with Testify and Mockery in Go

Test with Testify and Mockery in Go

In Go, we write unit tests with Testify, a toolkit for assertions and mocks, and Mockery, which auto-generates mocks for our interfaces.

Go JWT Authentication Middleware

Go JWT Authentication Middleware

A JWT Authentication Middleware in Go checks the JSON Web Token of every request before it reaches the handler, without any database query to verify it.

Go Backend Clean Architecture

Go Backend Clean Architecture

Clean architecture in a Go backend splits the project into five layers, which are Router, Controller, Usecase, Repository, and Domain. Let's learn it with a project.

What is System Design?

What is System Design?

System Design is the process of defining the components, APIs, and database tables of a system to satisfy the given functional and non-functional requirements.