Postmill AI
오픈소스 AI 기반 소셜 미디어 관리, 45개 채널 예약·단일 인박스 회신·앱 내 디자인·자체 키로 AI 실행, 월 $9부터 무료 시작
오픈 브리프를 직접 제안하거나 브랜드가 내 스토어를 찾아요 무료 가입 팔로워 제한 없음 공개 베타
Pitch open briefs at your own rate, or let brands find your storefront. Free to join, with no follower minimum. Public beta.
마케팅TypeScript · CSSGitHub @asimbaiig-star가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Alamut creator-brand marketplace prototype
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Creator–brand marketplace. Brands post briefs and invite creators; creators apply, negotiate, deliver content, and get paid out of escrow. Two fully-wired personas (brand and creator) over a real Supabase backend.
Status: public beta. Payments are simulated — wallet balances,
escrow, fees and payouts are play-money mechanics that demonstrate the
real flow. No money moves, no card or bank details are collected. See
/terms and
/privacy.
Live: https://alamut-six.vercel.app
The deployable app lives in app/. Everything in the repo root
outside that folder is reference material (design HTML mocks, the
PROGRESS.md change log, early JSX prototypes in alamut/).
localStorage) as a local mirror/cache,
seeded from app/src/lib/api/seed.ts and overlaid with Supabase rows
on bootmotion for animationsThe store is a local mirror, not the source of truth: real accounts, profiles and workflow rows live in Postgres, so a signed-in user resolves identically on any device. Without Supabase env vars the app falls back to a fully local seed-only mode, which is how the test suite runs.
cd app
npm install
cp .env.example .env.local # then fill in the two Supabase values
npm run dev # http://localhost:5173
npm run typecheck # tsc -b --noEmit
npm test # vitest run
npm run build # tsc -b && vite build → app/dist
app/.env.local (gitignored — recover values from the Supabase
dashboard → Project Settings → API):
| Var | Required | Notes |
|---|---|---|
VITE_SUPABASE_URL | yes | Project URL |
VITE_SUPABASE_ANON_KEY | yes | Publishable/anon key — safe in the client, RLS does the gating |
VITE_ERROR_WEBHOOK | no | POST target for captured errors; unset still buffers them to window.__alamutErrors |
Both Supabase vars are optional in the sense that the app runs without them — it just runs local-only, with no real auth and nothing persisted beyond the browser.
Vercel, auto-deploying from main. Root Directory is app;
app/vercel.json sets the SPA rewrite so client-side routes
(/v2, /c/sarahstyle, …) serve index.html instead of 404ing. The two
VITE_SUPABASE_* vars must be set in the Vercel project.
.github/workflows/supabase-keep-alive.yml.
Retire that workflow if the project ever moves to Pro.localhost.Seeded accounts exist for walkthroughs:
| Role | Password | |
|---|---|---|
| Brand admin | [email protected] | demo1234 |
| Brand ops | [email protected] | demo1234 |
| Creator | [email protected] | demo1234 |
The one-click quick-fill buttons on /signin are dev-only — on the
public deployment they'd hand any visitor a seeded account holding
real-looking escrow figures and shared state. Sign in by typing the
credentials to use them in production.
Seeded brands, creators and campaigns are labelled Demo in the UI so
a real creator never mistakes a seeded brief for a live opportunity.
Other seeded records live in app/src/lib/api/seed.ts.
.
├── app/ # Vite app — the deployable
│ ├── src/
│ ├── supabase/migrations/ # 29 SQL migrations
│ ├── public/ # robots.txt, sitemap.xml
│ └── vercel.json
├── .github/workflows/ # Supabase keep-alive
├── alamut/ # Early JSX prototypes (reference only)
├── landing-prototype/ # Separate landing page exploration
├── Alamut*.html # Design HTML mockups
├── BACKEND_AUDIT_LOG.md # Running session log — read this first
├── PROGRESS.md # Frozen history (phases 1–40)
└── README.md # You are here
BACKEND_AUDIT_LOG.md is the working document. It carries the
session-by-session log, the architectural conventions, the 2026-08-08
launch-readiness audit (findings F1–F39) and the phased plan that
resolved them. Start there before changing anything.