Skip to main content

Antimanti / Persian commerce

From checkout to activation.

Antimanti makes it easier to choose and buy antivirus protection in Persian. Behind the storefront, a verified payment starts the work of delivering the right license.

0

Project Overview

RoleFull-Stack Development
Reading Time~2 min read
Duration
Nov 2025Present
PlatformsResponsive Web

Antimanti brings antivirus discovery, checkout, and license delivery into one Persian shopping experience. Shoppers start with their device and compare compatible products. Partners can buy in volume, and operators can manage the stock of individual activation keys.

A digital purchase has two finish lines

The storefront has to help customers choose protection that works on their devices. Once they pay, the system has to allocate an actual activation key from a finite pool.

  • Mixed Persian and Latin product names, local prices, and right-to-left reading order shape the interface.
  • Retail customers and volume buyers share a catalog, while quantity and partner status can change the unit price.
  • Two orders can compete for the same license. Allocation needs to handle that collision without assigning a key twice.

Follow the license

Three decisions connect the visible shopping experience to the systems that price and fulfill an order.

01 / Put compatibility up front

The Persian storefront starts with device and operating system shortcuts. The catalog then gives shoppers filters for operating system, category, device count, and availability.

  • Right-to-left layouts and Persian typography
  • Search and structured filters for the same catalog

02 / Price for the buyer

Products can define quantity bands for partner accounts. The server resolves the applicable tier from the cart quantity so the price can be calculated as part of checkout.

  • Product-level quantity tiers
  • Partner pricing calculated on the server

03 / Verify, then allocate

The payment service verifies the transaction with Zarinpal before starting license delivery. Fulfillment claims keys inside a database transaction and checks that each key is still available at the moment of assignment.

  • Gateway verification precedes delivery
  • Conditional updates guard against concurrent claims

The systems behind the storefront

Next.js serves the store, customer accounts, and admin workspace. Services handle business rules, with Prisma and PostgreSQL storing orders, payments, products, and individual licenses.

  • Phone authentication uses an SMS code and an HTTP-only session cookie.
  • The admin workspace supports bulk license imports alongside order and inventory management.
  • Payment verification and license delivery are separate steps, so a verified payment and a delivery failure can be recorded independently.

The purchase ends at the activation key

Antimanti ties three distinct tasks together. The shopper finds compatible protection, the server verifies payment, and the fulfillment service assigns a key. Keeping those responsibilities distinct makes the system easier to reason about when orders compete for stock or delivery fails.

Key Takeaways

  • Put device compatibility where shoppers make their first decision.
  • Treat each activation key as an inventory item with its own state.
  • Model payment verification and fulfillment as separate outcomes.

Share this case study