Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Care-plan monitoring and monthly client reports for Shopify agencies. Phase 1 is storefront-first: an agency adds a client store by its URL, and StoreCare watches the public storefront. No Shopify app, no client approval.
| Path | What it is |
|---|---|
packages/storefront | Reads a public storefront as StoreCareBot: robots.txt, theme ID/name/version, app scripts, /products.json, and diffs snapshots into change-feed entries. No dependencies. |
apps/worker | Background jobs on pg-boss: hourly storefront diff, 5-minute uptime, daily checkout test (Playwright), daily speed (PageSpeed Insights), alerts (email via Resend, Slack), health score. |
apps/web | Next.js app on Supabase: magic-link sign-in, onboarding (workspace → add store URL → care plan), dashboard, store page with change feed, work log. |
supabase/migrations | Postgres schema with row-level security per agency. |
scripts/probe-stores.ts | The phase 1 check: what can we see on a list of real stores? Results in docs/storefront-check.md. |
Not built yet: the monthly report pipeline (draft → approve → PDF → email), branding settings, client request inbox, billing. The Shopify connector is phase 2.
Needs Node 22.18+ (TypeScript runs natively, no build step for the worker).
npm install
npm test # storefront + worker unit tests
node scripts/probe-stores.ts mystore.com # try the storefront check on any store
Database tests need a Postgres server (any local one works; nothing Supabase-specific):
TEST_DATABASE_URL=postgresql://postgres@localhost:5432/postgres npm test
STORECARE_DEMO=1 NEXT_PUBLIC_SUPABASE_URL=https://demo.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=demo \
npm run dev --workspace @storecare/web
Signs you in as a sample agency (Northline Studio, 6 client stores) with in-memory data from
apps/web/src/lib/demo.ts. The "Check store" step in onboarding still reads the real storefront you type in.
Good for reviewing the UI and for showing the product to agencies.
supabase/migrations/20261027000001_init.sql
(or supabase db push with the CLI).<app-url>/auth/callback as a redirect URL.apps/web/.env.example to apps/web/.env.local, fill in the project URL and anon key, then
npm run dev --workspace @storecare/web.apps/worker/.env.example to apps/worker/.env, fill in the database connection string and a
PageSpeed API key, then node --env-file=apps/worker/.env apps/worker/src/index.ts.
To run one job for one store: node --env-file=apps/worker/.env apps/worker/src/run-once.ts storefront <store-id>.The public site is https://www.storecarehq.com; the agency application is
https://app.storecarehq.com. Both point to the same Vercel project. Marketing sign-in and trial
buttons navigate directly to the app host. Opening the app checks the Supabase session and shows
the user's workspace or login; accounts without an agency continue onboarding.
Set Vercel Production NEXT_PUBLIC_APP_URL=https://app.storecarehq.com, Supabase Site URL to
the same origin, and allow https://app.storecarehq.com/auth/callback. Keep existing old-domain
and local callbacks during migration. Worker APP_URL also points to the app. Deploy these settings
with the host-routing code. Local .env.local URLs must remain local.
Sessions stay on the app host. Existing website sessions require one sign-in on the new host. Previously shared report links and Stripe webhooks remain valid on the old domain. See domain architecture for routing rules and verification.
The landing page's Contact section and the app's /contact page share a form and same-origin
POST /api/contact endpoint. App contact stays available to signed-in agencies with expired plans.
Set RESEND_API_KEY, CONTACT_TO (the receiving inbox), and CONTACT_FROM (a sender verified in
Resend) in the web deployment. REPORTS_FROM is used when CONTACT_FROM is unset. Restart the
local dev server after changing environment variables. Without configuration the form reports
unavailability rather than claiming delivery. Replies go to the visitor's email address; messages
are sent as plain text and are not stored in the application database.
The endpoint validates field sizes, limits request bodies, rejects cross-origin submissions, and
discards honeypot spam. A bounded, per-instance limiter allows five attempts per ten minutes per
Vercel client IP (one shared bucket outside Vercel). This is not a distributed abuse limit: configure
Vercel Firewall rate limiting for /api/contact before exposing it to significant public traffic.
Contact tests use a mocked provider and never send email.
apps/web, same env vars as .env.example..github/workflows/monitor.yml requests a run of apps/worker/src/tick.ts every
30 minutes. GitHub's scheduled triggers are best effort and can be delayed or dropped; this is not a guaranteed monitoring interval.
Each actual run performs uptime checks, a storefront snapshot about hourly, checkout test, speed and site checks once a day
after 06:00 store time, and last month's report drafts from 06:00 on the 1st (catching up until the 5th; an
existing report is never touched), followed by one "ready to review" message per agency. Needs repository
secrets DATABASE_URL (required) and PAGESPEED_API_KEY, optionally DATABASE_CA_CERT, RESEND_API_KEY and
ANTHROPIC_API_KEY (AI-written report summaries). Run it by hand from the Actions tab ("Monitor stores" → Run
workflow); the "force" box runs storefront, speed, site or report straight away.
Missing database configuration fails the workflow. Individual store failures are isolated and logged as they finish;
database connections time out after 15 seconds and statements after 60 seconds. See monitoring operations.docker build -f apps/worker/Dockerfile ., one instance,
runs src/index.ts with pg-boss for 5-minute uptime checks. Env vars from apps/worker/.env.example.StoreCareBot; we never disguise the client to get past a bot check. A bot check
is recorded as blocked, never as down, and a store only becomes "limited" after 3 blocked visits in a row.