Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
사진가·영상제작자·드론 파일럿을 위한 요청·견적·일정·고객포털·영상검토·결제·전달을 한 플랫폼에 통합
Requests, estimates, scheduling, client portal, video review, payments, and delivery in one platform for photographers, videographers, and drone pilots.
비즈니스TypeScript · PLpgSQLGitHub @jlbridges21온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A production-ready, white-label client portal for drone photographers, real estate media professionals, videographers, and virtual tour providers. Swift Portal helps media businesses capture project requests, manage clients and projects, deliver photos and videos, present 360 tours, and handle approvals through a branded client experience.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Professional client portal for Swift Aerial Media. Built exclusively for Swift Aerial Media and its clients — not a white-label or multi-tenant SaaS.
swift-portal/
├── src/
│ ├── app/
│ │ ├── page.tsx # Public homepage
│ │ ├── request/page.tsx # Request a shoot form
│ │ ├── login/page.tsx # Client login
│ │ ├── dashboard/
│ │ │ ├── page.tsx # Client dashboard
│ │ │ └── projects/[id]/page.tsx # Client project view
│ │ ├── admin/
│ │ │ ├── page.tsx # Admin dashboard
│ │ │ ├── leads/page.tsx # Lead management
│ │ │ ├── clients/ # Client management
│ │ │ └── projects/ # Project management
│ │ └── api/
│ │ ├── leads/ # Lead submission
│ │ ├── clients/ # Client CRUD
│ │ ├── projects/ # Project CRUD
│ │ ├── media/ # File upload/download
│ │ ├── tours/ # 360 tour management
│ │ ├── payments/ # Stripe payment links
│ │ ├── revisions/ # Revision requests
│ │ ├── stripe/webhook/ # Stripe webhooks
│ │ └── auth/signout/ # Sign out
│ ├── components/
│ │ ├── ui/ # Base UI components
│ │ ├── layout/ # Header, Footer
│ │ ├── projects/ # Project-specific components
│ │ └── admin/ # Admin-specific components
│ ├── lib/
│ │ ├── supabase/ # Supabase clients
│ │ ├── auth.ts # Auth helpers
│ │ ├── stripe.ts # Stripe client
│ │ ├── types.ts # TypeScript types
│ │ ├── constants.ts # App constants
│ │ └── utils.ts # Utility functions
│ └── middleware.ts # Auth middleware
├── supabase/
│ └── schema.sql # Full database schema
├── .env.example
└── README.md
Tables: profiles, clients, leads, projects, media_assets, tours, payments, revisions, activity_logs
See supabase/schema.sql for the complete schema including:
Copy .env.example to .env.local:
cp .env.example .env.local
| Variable | Description |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anon/public key |
SUPABASE_SERVICE_ROLE_KEY | Supabase service role key (server only) |
STRIPE_SECRET_KEY | Stripe secret key |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | Stripe publishable key |
STRIPE_WEBHOOK_SECRET | Stripe webhook signing secret |
NEXT_PUBLIC_APP_URL | App URL (http://localhost:3000 for dev) |
supabase/schema.sqlRun supabase/migration-v2.sql in the SQL Editor. This adds:
If creating or inviting users fails in Supabase Auth, run supabase/fix-auth-trigger.sql in the SQL Editor. This fixes the profile trigger and RLS permissions.
After running the schema, create your first admin user:
-- Create admin user via Supabase Auth dashboard, then:
UPDATE profiles SET role = 'admin' WHERE email = '[email protected]';
Or create via Supabase Auth → Users → Add User, then update the profile role.
The schema automatically creates:
project-media — Photos (JPG, PNG, WEBP) and Videos (MP4, MOV), max 500MBproject-documents — PDF and ZIP files, max 100MBhttps://your-domain.com/api/stripe/webhookcheckout.session.completedSTRIPE_WEBHOOK_SECRETFor local development, use the Stripe CLI:
stripe listen --forward-to localhost:3000/api/stripe/webhook
# Install dependencies
npm install
# Set up environment
cp .env.example .env.local
# Fill in your Supabase and Stripe credentials
# Run development server
npm run dev
git init
git add .
git commit -m "Initial Swift Portal setup"
git remote add origin https://github.com/your-org/swift-portal.git
git push -u origin main
.env.exampleNEXT_PUBLIC_APP_URL to your Vercel domain (e.g., https://swift-portal.vercel.app)https://your-domain.comhttps://your-domain.com/**/login| Status | Description |
|---|---|
| Lead Received | Initial inquiry received |
| Scheduled | Shoot date confirmed |
| Shot Complete | Aerial capture finished |
| Editing | Post-production in progress |
| Ready For Review | Client can review deliverables |
| Awaiting Payment | Invoice sent, payment pending |
| Delivered | Project complete |
Proprietary — Swift Aerial Media. All rights reserved.