Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Crew scheduling for small landscaping companies.
An owner books jobs onto crews across a calendar; each crew opens a phone page showing only their stops for the day and marks them done. Recurring jobs regenerate automatically. Multi-tenant — many companies sign up, and their data never mixes.
Next.js 16 (App Router) · React 19 · Prisma 7 with the @prisma/adapter-pg
driver adapter · PostgreSQL on Neon · Tailwind v4 · TypeScript · Vitest ·
argon2 (@node-rs/argon2) · Zod · Resend · Stripe (hosted Checkout and
Billing Portal).
npm install
cp .env.example .env # then fill in the values below
npm run db:push:test # applies the schema to the TEST database only
npm run dev
The app runs at http://localhost:3000.
| Variable | Purpose |
|---|---|
DATABASE_URL | Production database. Never write to it from a dev machine. |
TEST_DATABASE_URL | Disposable test database; must contain "test" or the suite refuses to run. |
APP_URL | Absolute origin for emailed links and Stripe redirects. Defaults to localhost in appUrl(), but requireAppUrl() throws rather than guess. |
RESEND_API_KEY | Transactional email. Unset means email silently no-ops — see below. |
EMAIL_FROM | Sender address, on a domain verified in Resend. |
STRIPE_SECRET_KEY | Stripe API key. |
STRIPE_WEBHOOK_SECRET | Verifies the webhook signature. The webhook is the only code that creates an Org. |
STRIPE_PRICE_ID | The subscription price. |
STRIPE_PORTAL_RETURN_URL | Optional; derived from APP_URL when unset. |
CRON_SECRET | Authenticates the daily cron routes. They fail closed without it. |
PURGE_ENABLED | Must be "yes" before the deletion job deletes anything. Unset, it reports and does nothing. |
sendEmail never throws — it logs and returns a boolean, so no user-facing
operation fails because a mail provider is down. The trade-off is that a
missing RESEND_API_KEY looks exactly like success. If you are testing the
password-reset or verify-email flows locally, set it.
| Command | Does |
|---|---|
npm run dev | Development server. |
npm test | Vitest against the test database. |
npm run lint | ESLint, including the import-boundary rules. |
npm run build | Production build. |
npm run db:push | Applies the schema to DATABASE_URL — production. |
npm run db:push:test | Applies the schema to the test database. |
npm run db:seed | Truncates everything; refuses to run when real logins exist. |
npm run db:grandfather | Marks pre-billing companies active. Needs GRANDFATHER_CONFIRM=yes. |
Schema changes are applied with prisma db push — there is no migrations
directory — and every change must reach both databases.
All four, in any order:
npx tsc --noEmit
npm run lint
npm run build
npm test
npm test alone is insufficient: Vitest transpiles without typechecking, which
has let a broken build land here before.
AGENTS.md is the real document — it covers the authorization boundary, the
per-tenant scoping pattern, the billing model and deploy order, and a list of
bugs that have already happened here and are easy to reintroduce. Read it
before changing anything under src/lib/auth/, src/lib/data.ts, or billing.