Project Overview
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.
Visual Showcase

01 / Start with the device. Operating system shortcuts give shoppers a way into the catalog before they know which antivirus brand they want.

02 / Compare the details that matter. Compatibility, device count, price, and availability help shoppers narrow the catalog and make a choice.
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.


