fb / replit.md
sare26's picture
Upload 5 files
8b37604 verified
|
Raw
History Blame Contribute Delete
2.47 kB
# 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 packages
- `pnpm run build` — typecheck + build all packages
- `pnpm --filter @workspace/api-spec run codegen` — regenerate API hooks and Zod schemas from OpenAPI spec
- `pnpm --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 via `window.postMessage` (sources: `fbpub-web``fbpub-bridge`).
- **Auth**: Clerk (mandatory). Express uses `clerkMiddleware` + a proxy from web `/api` to 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_config` table.
- **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)