Synaplan
기업을 위한 오픈소스 AI 플랫폼
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A multi-tenant parking management system built with Next.js 14, Supabase, and TypeScript.
src/
├── app/ # Next.js App Router pages
│ ├── (marketing)/ # Landing pages (optional)
│ ├── login/ # Authentication
│ ├── signup/
│ ├── onboarding/ # Tenant setup flow
│ ├── admin/ # Admin dashboard
│ │ ├── today/ # Today's operations
│ │ ├── bookings/ # Booking management
│ │ ├── uploads/ # Bulk upload wizard
│ │ ├── integrations/ # Third-party integrations
│ │ ├── devices/ # Gate device management
│ │ └── settings/ # Tenant settings
│ └── api/ # API routes
│ ├── tenant/ # Tenant resolution
│ ├── bookings/ # Booking CRUD
│ ├── anpr/ # ANPR hardware endpoint
│ ├── qr/ # QR code hardware endpoint
│ ├── webhooks/ # Third-party webhooks
│ └── cron/ # Scheduled jobs
├── lib/ # Core utilities
│ ├── supabase/ # Supabase clients
│ ├── auth/ # Authentication helpers
│ ├── tenant/ # Tenant resolution
│ ├── rls/ # Row Level Security
│ └── validation/ # Zod schemas
└── components/ # React components
├── ui/ # Base UI components
└── admin/ # Admin-specific components
Create a .env.local file:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# App Configuration
APP_BASE_DOMAIN=yourdomain.com
ENCRYPTION_KEY=your_32_character_encryption_key
# Stripe Connect (Required for payments)
# For development (test mode)
STRIPE_SECRET_KEY_TEST=sk_test_***
STRIPE_PUBLISHABLE_KEY_TEST=pk_test_***
# For production (live mode)
STRIPE_SECRET_KEY_LIVE=sk_live_***
STRIPE_PUBLISHABLE_KEY_LIVE=pk_live_***
# App configuration
NEXT_PUBLIC_ROOT_URL=https://yourdomain.com
STRIPE_API_VERSION=2025-09-30.clover
# Optional: For development
NEXT_PUBLIC_APP_BASE_DOMAIN=localhost:3000
# Copy the contents of supabase-schema.sql and run in Supabase
npm install
npm run dev
Visit http://localhost:3000 to start the application.
{slug}.localhost:3000For payment processing, set up Stripe Connect:
/admin/payments to connect Stripe accountsThe system integrates with your existing pricing engine - no product duplication required.
See STRIPE_INTEGRATED_SETUP.md for detailed instructions.
GET /api/tenant/resolve - Resolve tenant from domain or query parameterPOST /api/bookings/list - List bookings with filtersPOST /api/bookings/create - Create new bookingPOST /api/bookings/update - Update existing bookingPOST /api/bookings/delete - Cancel bookingPOST /api/bookings/upload - Bulk upload bookingsPOST /api/anpr - ANPR gate system endpointPOST /api/qr - QR code gate system endpointPOST /api/webhooks/parkvia - ParkVia webhook handlerPOST /api/webhooks/holidayextras - Holiday Extras webhook handlerPOST /api/stripe/webhook - Stripe webhook handlerPOST /api/payments/connect/onboard - Create/onboard connected accountGET /api/payments/connect/status - Get connection statusPOST /api/payments/checkout - Create checkout for bookingPOST /api/payments/booking-extension - Pay for booking extensionGET /api/cron/pull-parkvia - Sync ParkVia dataGET /api/cron/pull-holidayextras - Sync Holiday Extras dataPOST /api/internal/cron/ingest-canary - Ingest canary (Cloudflare Email Routing + Worker + /api/ingest/email). See INGEST_CANARY_README.md.NEXT_PUBLIC_SUPABASE_URL=your_production_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_production_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_production_service_role_key
APP_BASE_DOMAIN=yourdomain.com
ENCRYPTION_KEY=your_production_encryption_key
Set up Vercel Cron functions for data synchronization:
{
"crons": [
{
"path": "/api/cron/pull-parkvia",
"schedule": "0 */6 * * *"
},
{
"path": "/api/cron/pull-holidayextras",
"schedule": "0 */6 * * *"
}
]
}
The system resolves tenants through:
tenant_domains table?tenant=slug query parameterAll data access is protected by RLS policies that:
user_tenants tabletenant_id automaticallyThird-party API credentials are encrypted using the ENCRYPTION_KEY environment variable.
This project is licensed under the MIT License.