Workspace
Overview
pnpm workspace monorepo using TypeScript. Each package manages its own dependencies.
Stack
- Monorepo tool: pnpm workspaces
- Node.js version: 24
- Package manager: pnpm
- TypeScript version: 5.9
- API framework: Express 5
- Database: PostgreSQL + Drizzle ORM
- Validation: Zod (
zod/v4),drizzle-zod - API codegen: Orval (from OpenAPI spec)
- Build: esbuild (CJS bundle)
Key Commands
pnpm run typecheck— full typecheck across all packagespnpm run build— typecheck + build all packagespnpm --filter @workspace/api-spec run codegen— regenerate API hooks and Zod schemas from OpenAPI specpnpm --filter @workspace/db run push— push DB schema changes (dev only)pnpm --filter @workspace/api-server run dev— run API server locally
See the pnpm-workspace skill for workspace structure, TypeScript setup, and package details.
FB Group Publisher PRO (artifacts/fb-publisher)
Arabic RTL web port of the Chrome extension. Architecture:
- Web app (this artifact): hosts UI, auth, subscriptions, saved lists, all main logic.
- Bridge extension (
public/extension/): tiny Chrome extension installed by users; injects a content script on the web app that exposes Facebook cookies and tab scripting viawindow.postMessage(sources:fbpub-web↔fbpub-bridge). - Auth: Clerk (mandatory). Express uses
clerkMiddleware+ a proxy from web/apito api-server. - Payments: PayPal Sandbox subscription, $2.50 every 2 months with 1‑month free trial. Plan auto-created on first subscribe and IDs cached in
app_configtable. - DB tables:
users,subscriptions,saved_lists,app_config(drizzle). - Pages: Landing, Sign-in/up, InstallExtension, Subscription, SubscriptionReturn, Publisher.
Chrome Extension — حماية الكود
- الكود المصدري الأصلي محفوظ في:
artifacts/fb-publisher/public/extension/src/background.source.js(مُستبعد من Git) - الكود الموزّع في
background.jsمُشفّر دائماً باستخدام javascript-obfuscator - لتعديل الكود: عدّل
src/background.source.jsثم شغّلpnpm run obfuscate-extension - السكريبت:
scripts/obfuscate-extension.cjs— يشفّر الكود ويبني ZIP تلقائياً - التبعية:
javascript-obfuscatorمثبتة في الجذر (workspace root)