Saeed Ghofrani
For RecruitersArchitectureCase StudiesProjectsExperienceSkillsBlogContact
Discuss a role
For RecruitersArchitectureCase StudiesProjectsExperienceSkillsBlogContact
  1. Home
  2. /Architecture

Hiring for backend ownership?

The recruiter brief has my role fit, strongest production results, resume, and direct contact details.

Open recruiter briefEmail me

Saeed Ghofrani Ivari

I build backend systems, lead delivery, and stay close to production.

Focus

NestJS, data-heavy services, real-time products, and Linux operations.

Contact

sa.ghofraniivari@gmail.comTelegram
GitHubLinkedInStack OverflowDev.toRecruiter briefPlayground

Architecture

How I make backend decisions when a system already has users.

I start with what must stay true

Before choosing a database or queue, I write down the behavior we cannot accidentally change: who may see the data, how long a request may take, what happens after a retry, and how we recover a bad deploy. That list usually matters more than the diagram.

1. Bound the API contract, response shape, and pagination behavior before optimizing.

2. Choose persistence based on access patterns: relational, document, graph, cache, search, or stream.

3. Move slow work to queues only when retry, idempotency, and user expectations are clear.

4. Make failure modes visible through logs, health checks, metrics, and production-safe smoke checks.

Portfolio Platform

A small full-stack production platform with public pages, admin content, API, database, and deploy automation.

Layer 1

Next.js Web
Admin UI
Contact Form

Layer 2

NestJS API
Prisma
Auth Guard

Layer 3

PostgreSQL
Docker Compose
GitHub Actions

Layer 4

Nginx
Linux VPS
Health Checks

Before implementation

Four questions I want answered before adding infrastructure.

Data

Shape before storage

I model read/write paths, ownership, indexes, and retention rules before picking PostgreSQL, MongoDB, Neo4j, Redis, or Elasticsearch.

Runtime

Separate request and async work

User-facing requests stay bounded; expensive jobs move behind queues only when retry and observability behavior is defined.

Delivery

Deployable systems

Docker, Nginx, CI/CD, health checks, environment boundaries, and rollback notes are part of the architecture, not afterthoughts.

Team

Architecture humans can change

Module boundaries, PR standards, docs, and ownership rules keep a backend team productive after the first implementation is done.

Decision notes

What usually pushes me toward one tool or runtime shape.

Concern

Decision rule

Typical tools

Transactional data

Use when correctness, relations, constraints, and predictable querying matter.

PostgreSQL, Prisma, TypeORM

Realtime delivery

Separate durable state from transport events and define what can be dropped.

Socket.IO, WebRTC, RabbitMQ

High-cost work

Move out of request path when the user can wait and retries are safe.

RabbitMQ, workers, Redis

Search and graph data

Use specialized stores when relational queries become the wrong model.

Elasticsearch, Neo4j, MongoDB

Production operations

Plan for deployment, monitoring, logs, backups, and rollback before release.

Docker, Nginx, Linux VPS, GitHub Actions

System maps

Redacted maps from private systems I worked on.

Crypto Exchange KYC and Persistence

Financial backend systems with KYC/AML, exchange integrations, blockchain nodes, and polyglot persistence.

Enabled compliant onboarding and scalable backend features for financial workflows.

Open case study

Exchange Backend and KYC Flow

Compliance-sensitive onboarding and exchange workflows backed by relational, document, graph, cache, and search stores.

Layer 1

Client Apps
KYC Upload
Trading UI

Layer 2

NestJS Services
Document Validation
Exchange Adapter

Layer 3

PostgreSQL
MongoDB
Neo4j
Redis

Layer 4

Elasticsearch
Binance API
Blockchain Nodes

License Market Backend Architecture

Scaling a production NestJS backend with PostgreSQL, Redis, RabbitMQ, Prisma, and disciplined team delivery.

Maintained 99.9% uptime, reduced API latency by 40%, and supported consistent delivery with a backend team of 8 engineers.

Open case study

Operator Platform Runtime

Support, automation, and real-time workflows coordinated through bounded NestJS modules and async processing.

Layer 1

Admin UI
Ticketing
AI Chat

Layer 2

NestJS API
Prisma Repositories
Auth and RBAC

Layer 3

PostgreSQL
Redis Cache
RabbitMQ Jobs

Layer 4

Puppeteer Integrations
Nginx
Linux VPS

GBT Market Trading and Payment Systems

Gold and crypto trading backend systems with live pricing, chart history, wallets, payments, and provider/admin operations.

Shipped trading and payment backend capability for gold and crypto market flows, including live pricing, chart history, wallet transactions, gateway integrations, and production operations.

Open case study

Trading and Payment Runtime

Gold and crypto trading flows coordinated through pricing, charting, wallet, gateway, and operations services.

Layer 1

Trading UI
Admin Panel
Provider Workflows

Layer 2

NestJS API
Socket.IO Gateway
Payment Gateway

Layer 3

MongoDB Charts
Redis
Scheduled Jobs

Layer 4

TRON/BSC
External APIs
Docker/PM2

Mobasher Real-Time Consulting Platform

A consulting platform with chat, VoIP, video, learning modules, and backend microservices.

Supported 500+ concurrent users with real-time communication flows and faster SQL retrieval paths.

Open case study

Real-Time Consulting Platform

Communication state, session orchestration, SQL persistence, and media flows kept in separate runtime concerns.

Layer 1

Angular Client
Consultant App
Learning UI

Layer 2

NestJS Gateway
Session Service
Call Orchestration

Layer 3

RabbitMQ
SQL Persistence
Socket.IO

Layer 4

WebRTC Media
Notifications
Reporting