Skip to content
Ali Moradi
Contact

Projects15 live

Projects

Complete products, designed and built end to end. Each one runs on its own subdomain, so you can open it and use it. Filter by type or technology.

Dashboard2026

AML Monitor

Transactions are checked against detection rules; suspicious ones become alerts, analysts review them and serious ones become cases. Large data grids, charts, an account network graph, a case workflow designer, reports with Excel export, scheduled jobs and an import wizard. Every request is limited by role, region and clearance, and the whole app is in five languages, two of them right to left.

Sign in with one click as an analyst, a supervisor, a compliance manager or an admin. The data resets every night.

  • Next.js
  • TanStack Query
  • TanStack Table
  • Highcharts
  • React Flow
  • Sigma.js
  • Express
  • PostgreSQL
  • Socket.IO
  • RBAC
  • RTL
  • i18n

Open live: AML Monitor (new tab)Source code: AML Monitor (new tab)

Dashboard2026

Dashboard builder

Pick a dataset or drop in your own CSV, describe the query with drag and drop (measures, group-bys, filters) and show it as one of 11 widgets on a grid. Queries run in DuckDB-WASM inside a Web Worker, so no data leaves the browser. Undo and redo for every edit, autosave, JSON export and import, English and Persian.

  • React
  • Vite
  • DuckDB-WASM
  • ECharts
  • TanStack Router
  • Zustand
  • dnd-kit
  • React Hook Form
  • Zod
  • No server
  • RTL

Open live: Dashboard builder (new tab)Source code: Dashboard builder (new tab)

Web app2026

formcanvas

Forms are JSON documents checked with Zod and run by a framework-free engine (values, rules, validation). The builder edits them visually; the app serves them through a REST API and collects, charts and exports the responses. The engine and its React renderer are published on npm, and the Arvand Partners contact form sends its messages here.

Choose “Try the demo account” on the sign-in page. Its forms reset every night.

  • Next.js
  • React Hook Form
  • Zod
  • Zustand
  • Recharts
  • Drizzle
  • PostgreSQL
  • Better Auth
  • npm package
  • Monorepo

Open live: formcanvas (new tab)Source code: formcanvas (new tab)npm: formcanvas package (new tab)

Dashboard2026

Live crypto dashboard

The exchange sends dozens of messages per second. They are buffered and applied once per animation frame, so a price change re-renders only its own row and the chart streams without React renders. Reconnect with backoff, a stale-data warning, price alerts, and English, Turkish and Persian.

  • React
  • Vite
  • Redux Toolkit
  • WebSocket
  • Radix UI
  • Real-time
  • RTL

Open live: Live crypto dashboard (new tab)Source code: Live crypto dashboard (new tab)

Web app2026

Team chat

Public and private channels, direct messages, threads, mentions, reactions, pinned messages, file uploads with thumbnails and full-text search. Messages are sent optimistically and confirmed by the server, typing and read receipts update live, and the client resyncs after a reconnect. Accounts use JWT access and refresh tokens.

One-click demo accounts and a bot that answers. The data resets every night.

  • React
  • Vite
  • TanStack Query
  • Node.js
  • Express
  • Socket.IO
  • MongoDB
  • Real-time
  • JWT
  • RTL

Open live: Team chat (new tab)Source code: Team chat (new tab)

E-commerce2026

Bay Book Company

200 books with search by title, author, genre and ISBN, a “look inside” preview, cart, discount codes, a simulated payment page, accounts, a reading list and a small admin. One of three shops on the same domain built with three databases and three rendering strategies.

  • Next.js
  • Tailwind CSS
  • Express
  • Prisma
  • PostgreSQL
  • PPR
  • SEO

Open live: Bay Book Company (new tab)Source code: Bay Book Company (new tab)

E-commerce2026

Welt & Grain

480 products with collection, size, width, leather and color filters, a mega menu, a cart drawer that merges at sign-in, discount codes, a simulated card payment, reviews and a small admin. The API is a modular monolith on Express and Mongoose.

  • Next.js
  • Tailwind CSS
  • Express
  • MongoDB
  • PPR
  • SEO

Open live: Welt & Grain (new tab)Source code: Welt & Grain (new tab)

E-commerce2026

Tool shop

500 tools, each category with its own technical specs. Filter by ranges in Nm or in·lb, mm or inches (kept in the URL), compare up to four products with the best value in each row marked, and see the stock of every warehouse. Server-side rendering with a CSP nonce per request, on MySQL.

  • Next.js
  • Tailwind CSS
  • Express
  • Prisma
  • MySQL
  • SSR
  • SEO

Open live: Tool shop (new tab)Source code: Tool shop (new tab)

Web app2026

Pulsefit

Every PWA strategy in one app: precached shell, cache first, stale-while-revalidate and network first, an IndexedDB outbox with Background Sync, notifications with actions, an update prompt that never interrupts a workout, Wake Lock and a barcode scanner. The server is simulated inside the service worker.

Open a second tab and switch it to Coach to see live updates; go offline to see the sync queue.

  • React
  • Vite
  • Workbox
  • Dexie
  • PWA
  • Offline

Open live: Pulsefit (new tab)Source code: Pulsefit (new tab)