Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
THE CULT CLIENT는 인도 체육관·피트니스 스튜디오용 헬스장 관리 소프트웨어
THE CULT CLIENT is gym management software for Indian gyms and fitness studios: memberships, renewals, WhatsApp reminders and AI replies, attendance and check-in, personal training, payments, staff pa
비즈니스TypeScript · CSSGitHub @abhishek21lift-oss온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기THE CULT CLIENT is gym management software for Indian gyms and fitness studios: memberships, renewals, WhatsApp reminders and AI replies, attendance and check-in, personal training, payments, staff payroll and reports, in one app.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Next.js (App Router) frontend for the MyGymAgent multi-tenant gym management platform, talking to
the NestJS API in mygymagent-b.
See that repo's docs/ARCHITECTURE.md for the full technical blueprint. This app implements the
core gym domain (auth, dashboard, members, membership plans, memberships, attendance, staff,
branches, org settings) built there; every other product domain (AI, billing, workouts, nutrition,
inventory, CRM) has a "coming soon" route already wired into navigation and permission-gated, ready
to be filled in once its backend module lands.README 전문 보기 ↗Next.js (App Router) frontend for the MyGymAgent multi-tenant gym management platform, talking to
the NestJS API in mygymagent-b.
See that repo's docs/ARCHITECTURE.md for the full technical blueprint. This app implements the
core gym domain (auth, dashboard, members, membership plans, memberships, attendance, staff,
branches, org settings) built there; every other product domain (AI, billing, workouts, nutrition,
inventory, CRM) has a "coming soon" route already wired into navigation and permission-gated, ready
to be filled in once its backend module lands.
ui.shadcn.com CLI registry isn't reachable from this environment, so components were written
directly against the same underlying packages the CLI would have used)Requires the API (mygymagent-b) running locally first.
npm install
cp .env.local.example .env.local # point NEXT_PUBLIC_API_URL at the API
npm run dev
Deployed to Vercel (builds this app natively). Dockerfile is provided as an alternative for a
Docker-based host — it uses Next's output: 'standalone' build and requires
NEXT_PUBLIC_API_URL as a build arg (it's inlined into the client bundle at build time, so it
must be set before docker build, not as a runtime env var):
docker build --build-arg NEXT_PUBLIC_API_URL=https://api.example.com -t mygymagent-f .
.github/workflows/ci.yml runs typecheck/lint/build/Docker-build on every push. See
mygymagent-b/docs/deployment/overview.md for the full deployment architecture (this app's and the
API's).
The API and this app run on separate origins in local dev (and typically in production too). The
backend's refresh token lives in an httpOnly cookie scoped to its own origin — a Next.js
proxy/middleware on this app's origin can never see that cookie, so there's no server-side
"is this request authenticated" check possible here. Instead:
<AuthProvider> (src/lib/auth/auth-context.tsx) bootstraps the session client-side on load by
calling POST /auth/refresh with credentials: 'include' — that fetch does correctly carry
the cross-origin cookie, since it's a request to the API's own origin regardless of which page
initiated it.(app)/layout.tsx and (auth)/layout.tsx redirect based on useAuth() once that bootstrap
resolves, rather than on any cookie-based route gate.src/lib/api/token-store.ts), never in
localStorage, to keep it out of reach of an XSS payload.If the API and web app are later deployed under the same origin (e.g. /api/* proxied through
this app), a real edge-level auth gate becomes possible again — until then, treat client-side
gating as the mechanism, with the API's own auth/permission checks as the actual security boundary
(the frontend gate is UX only, exactly like permission-aware navigation elsewhere in this app).
src/app/globals.css defines the full token set (colors, radius, motion) as CSS variables — a
single indigo brand color for trust/professionalism, a warm amber accent used sparingly, neutral
grays for everything else. Both light and dark themes are defined; next-themes toggles via a
class on <html>.