Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The ZUGEE marketing site (product catalog + "Book a demo" form) and an internal admin portal for incoming leads and subscriptions.
This repo is not a product. Every ZUGEE product (ZUGEE ERP / CRM, Transposs, Tours & Travels, Aqua, …) has its own separate codebase, login and database. The customer app that used to live here under /app and /api/app/* was removed on 2026-10-01.
Background: docs/ZUGEE-PLATFORM-PLAN.md. Its sections on a customer app and single sign-on in this repo were written before that decision.
Stack: Next.js 16 (App Router, Turbopack) · React 19 · Tailwind CSS 4 · Supabase
npm install
cp .env.example .env.local # fill in values (optional for local dev)
npm run dev
Open http://localhost:3000.
Without Supabase credentials, the marketing site and admin portal still run in development: leads go to an in-memory store seeded with sample records, and the admin password defaults to zugee_admin_dev. Production refuses to run requests without real credentials.
npm run build succeeds with no environment variables set: no module creates a Supabase client when it's imported.
See .env.example.
| Variable | Required in production | Purpose |
|---|---|---|
NEXT_PUBLIC_SITE_URL | recommended | Canonical URL for metadata, robots and sitemap |
SUPABASE_URL | yes | Supabase project URL |
SUPABASE_SERVICE_ROLE_KEY | yes | Server-only key for leads and subscriptions |
ADMIN_PASSWORD | yes (≥ 12 chars) | Admin portal password |
ADMIN_JWT_SECRET | yes (≥ 32 chars) | Signs admin session cookies |
ADMIN_NOTIFICATION_EMAIL | yes, a company mailbox | Receives new-lead emails. No default: when unset, the team email is skipped and a warning is logged |
Empty database: run supabase/fresh-install.sql once in the Supabase SQL editor, then supabase/verify.sql, whose first row must say "0 problems". fresh-install.sql is the five files below combined; nothing else needs running. There is no migration runner: every schema change is pasted by hand, so a later migration must be run in the SQL editor before the code that needs it is deployed, and fresh-install.sql and verify.sql updated to match. Every new table needs its own grant select, insert, update, delete … to service_role: the project's default privileges do not give the server's role access, and without the grant every API call on that table fails with "permission denied".
The individual files, for a database that already has some of the tables:
Run supabase/schema.sql in the Supabase SQL editor. It creates leads: the "Talk to our team" form (name and mobile required; email, company and requirement optional). RLS is enabled with no policies, so only the server's service-role key can access it. The bottom of the file has the SQL to migrate a database created from the previous version.
supabase/migrations/0002_leads_request_type.sql adds leads.request_type (demo or pricing_call). Run it before deploying: without the column the demo form cannot save leads. A database created from the current schema.sql already has the column, and the migration is safe to re-run.
supabase/migrations/0001_subscriptions_setup_fee.sql creates subscriptions and subscription_payments for the admin portal (the setup fee can be recorded only once). Run it before using /admin/subscriptions: without these tables the page cannot load. It needs only the leads table from schema.sql, is safe to re-run, and gives both tables the same access rule as leads (RLS with no policies).
supabase/migrations/0003_prepaid_months.sql lets a monthly payment be recorded before go-live, without dates. The subscription period starts on the day the customer starts using the product ("Mark as live" in /admin/subscriptions), not on the day they pay; a month paid earlier gets its dates at go-live. Run it on any database created before 2026-10-02: without it, recording a monthly payment before go-live is refused with a message naming this file. Safe to re-run.
supabase/migrations/0004_chat_guest_usage.sql creates chat_guest_usage, the daily message counters for guest visitors of the "Ask ZUGEE" chat (10 a day, reset at midnight IST; see docs/CHATBOT.md). Run it before deploying the chat guest limits: without the table, guests get "chat not available" (the route fails closed); signed-in users are unaffected. Safe to re-run.
supabase/app-schema.sqlis unused. It was the schema for the removed customer app, and no code or migration in this repo depends on it. Do not run it; the file is kept for reference only.
app/
(marketing)/ public site: layout (navbar + footer) and homepage
admin/ admin login, lead dashboard, subscriptions (server-gated by session cookie)
api/
leads/ POST public lead submission (rate limited, validated)
admin/auth/ POST login · GET session · DELETE logout
admin/leads/ GET list + stats · PATCH status (admin only)
admin/subscriptions/ GET list · POST create · PATCH setup payment / waiver / monthly payment / status (admin only)
components/
home/ homepage sections (hero, products, how it works, pricing + FAQ, contact)
layout/ navbar, footer
admin/ admin client components
ui/ shared primitives (MascotLogo, StatusBadge)
lib/
products.js product catalog + statuses (single source for site, form, admin, JSON-LD)
pricing.js plans: monthly price + one-time setup fee (the ONLY place prices live; not shown on the site)
lead-request.js demo vs pricing-call requests from the lead form
subscriptions.js subscription + setup-fee data layer (server-only)
site-content.js how-it-works steps and FAQ (also emitted as FAQPage JSON-LD)
auth.js admin password check + signed httpOnly session cookie
rate-limit.js in-memory rate limiter
supabase.js lead data access (Supabase, dev-only in-memory fallback)
supabase/ database schemas
docs/ platform plan and setup notes
Every sentence on the site must pass: "Can the product (or our team) actually do this today?" If not, remove it or mark it Coming Soon. Product statuses live in lib/products.js. A product becomes "Available" only after the checklist in the platform plan, section F.
X-Frame-Options: DENY, nosniff, Referrer-Policy, Permissions-Policy, HSTS in production, and a report-only CSP (enforced in Phase 8). See next.config.mjs.httpOnly, SameSite=Strict cookie (24h).| Command | Description |
|---|---|
npm run dev | Start the dev server |
npm run build | Production build |
npm run start | Serve the production build |
npm run lint | Run ESLint |
npm test | Pricing, subscription, email, lead-request and site-content tests (Node test runner) |