Wenlan
Wenlan은 소스 기반 AI 지식베이스·LLM 위키로, 문서·결정을 페이지화해 검색·검토·리뷰 가능
Pro Resume Tailor는 기존 이력서를 개발자·프리랜서용 맞춤 이력서로 바꾸고 ATS‑안전 PDF로 다운로드합니다
Pro Resume Tailor turns the CV you already have into a role-specific resume for developers and freelancers. Paste the job, download an ATS-safe PDF. Five tailorings for $9, once.
생산성GitHub @Emmyblinks655온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Turn a generic CV into a role-specific resume. Paste or upload a resume, paste a job description, and download a text-based, single-column PDF.
The tailor is instructed to rephrase, reorder, and emphasise only what the user supplied. It must not invent employers, dates, metrics, or tools. With no API key, the app still runs end to end in mock mode, which reorders the user’s own text and highlights skills that already appear in the job description.
Five tailorings are priced at ₦9,900, once. There is no subscription and no trial. Checkout uses Paystack in NGN.
https://api.x.ai/v1 (grok-4.3 by default, override with XAI_MODEL)@anthropic-ai/sdk when AI_PROVIDER=anthropicunpdf, DOCX text via mammoth, ATS PDF via pdf-libUse Node.js 22 or newer.
npm install
cp .env.example .env.local
npm run dev
Open http://localhost:3000. The tailor flow works immediately in mock mode.
To call Grok, set XAI_API_KEY in .env.local. The key is read on the server only and is sent only to https://api.x.ai. Do not use a NEXT_PUBLIC_ prefix.
AI_PROVIDER=grok
XAI_API_KEY=your-key
XAI_MODEL=grok-4.3
To switch the provider later:
AI_PROVIDER=anthropic
ANTHROPIC_API_KEY=your-key
ANTHROPIC_MODEL=claude-sonnet-5-5
Grok is the primary provider. If XAI_API_KEY is missing, or AI_PROVIDER=mock, requests stay in mock mode. The tailor page does not mention that fallback. An AI_PROVIDER=anthropic request with no Anthropic key also stays in mock mode.
/tailor: paste a resume or upload PDF/DOCX, paste a job, tailor, compare before and after, download Letter or A4 PDF./pricing: the ₦9,900 pack of 5 tailorings. The button reads “Get 5 tailorings for ₦9,900”. Signed-in people with Paystack configured go to Paystack. Everyone else goes to signup, and a signed-in person without Paystack keys goes to the dashboard. The page does not mention missing keys./signup and /login: email and password. /dashboard: the account email, a preview credit balance, and log out./privacy, /terms, and /refund: draft pages./jobs: live listings from Remotive, Arbeitnow, Himalayas, and Remote OK. Cards link to the original posting. “Tailor my resume for this job” opens /tailor with that description filled in. /jobs stays public.When Supabase is not configured, local preview credits (default 5) still live in an httpOnly cookie named prt_credits. They are not a purchase. Set LOCAL_CREDITS_START to change the seeded amount. Clearing the cookie seeds them again. Once accounts are on, signed-in balances come from credit_balances and the cookie is not the ledger.
The pack button charges ₦9,900 (990000 kobo) through Paystack. PAYSTACK_CURRENCY defaults to NGN and PRICE_AMOUNT_MINOR defaults to 990000. Both PAYSTACK_SECRET_KEY and NEXT_PUBLIC_PAYSTACK_PUBLIC_KEY have to be set, along with SUPABASE_SERVICE_ROLE_KEY, before checkout leaves the site. The secret is used only on the server.
Initialize calls POST https://api.paystack.co/transaction/initialize and sends callback_url as NEXT_PUBLIC_SITE_URL (default https://proresumetailor.com) plus /api/paystack/callback. Paystack redirects the browser to GET /api/paystack/callback, which verifies the transaction and then redirects to /dashboard?payment=success or /dashboard?payment=failed.
Paystack notifications go to POST /api/webhooks/paystack. The route checks the x-paystack-signature HMAC-SHA512 of the raw body against PAYSTACK_SECRET_KEY. A successful charge grants 5 credits once. payments.reference is the Paystack reference, so a retry does not grant again.
Apply supabase/migrations/20261113003000_credits_payments.sql after the profile migrations. It creates credit_balances and payments, turns on RLS so a user can read only their own rows, and keeps the grant, spend, and refund functions in the private schema. The service role key is what the server uses to write them. Do not expose that key to the browser.
Polar remains an unwired stub. It does not run the pack checkout.
Email and password accounts use Supabase Auth through @supabase/ssr. Supabase hashes the password. This app stores the session in httpOnly cookies and refreshes it in src/proxy.ts. Next.js 16 renamed Middleware to Proxy; the session code is the same job middleware used to do. The publishable anon key is the key the browser session uses. SUPABASE_SERVICE_ROLE_KEY stays on the server and is used to record payments and balances.
/tailor and /dashboard require a logged-in user once the Supabase variables are set. Anyone else is redirected to /login?next=... and sent back after login. The landing page, pricing, the legal pages, and /jobs stay public. /api/jobs stays public too. /api/tailor also refuses the request when accounts are on and there is no session.
If NEXT_PUBLIC_SUPABASE_URL or NEXT_PUBLIC_SUPABASE_ANON_KEY is missing, the build still passes. Signup, login, and verify still render their forms. Submitting them returns a generic retry message. The tailor keeps working. The dashboard shows tailorings left and a signup link. Nothing is hard-locked, and the UI does not mention missing keys.
Passwords must be at least 8 characters. The app also rejects passwords longer than 72 characters, which is the bcrypt limit.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗