Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Xentro Management repository
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Employee registration and authentication system with Supabase backend and Next.js frontend.
cd "/Users/air/Documents/Xentro Management"
npm install
cp .env.example .env.local
Edit .env.local and fill in the following values:
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_SUPABASE_URL=your-supabase-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key
NID_ENCRYPTION_KEY=your-32-byte-hex-key
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY (keep this secret!)Run this command to generate a secure 32-byte hex key:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Copy the output to NID_ENCRYPTION_KEY in .env.local.
supabase link --project-ref your-project-id
supabase db push
supabase storage new employee-photos
supabase/migrations/001_initial_schema.sqlsupabase/migrations/002_storage_policies.sqlsupabase/migrations/003_rate_limiter.sqlemployee-photoshttp://localhost:3000 (for local)http://localhost:3000/auth/callbackhttp://localhost:3000/auth/callbackhttp://localhost:3000/reset-passwordnpm run dev
Open http://localhost:3000 in your browser.
npm run build
npm start
The built-in Supabase email sender is for testing only and has strict limits. For production:
npm i -g vercel
vercel login
vercel
In Vercel dashboard, add these environment variables for your Preview and Production environments:
NEXT_PUBLIC_APP_URL: Your Vercel domain (e.g., https://your-app.vercel.app)NEXT_PUBLIC_SUPABASE_URL: Your Supabase project URLNEXT_PUBLIC_SUPABASE_ANON_KEY: Your Supabase anon keySUPABASE_SERVICE_ROLE_KEY: Your Supabase service role keyNID_ENCRYPTION_KEY: Your 32-byte hex encryption keyAfter deploying to Vercel, update your Supabase project:
https://your-app.vercel.app/auth/callbackNew employee accounts start with status = 'PENDING' and role = 'EMPLOYEE'. An administrator must manually approve them.
Run this in Supabase SQL Editor (replace with actual user UUID or email):
-- Approve a user by email
UPDATE public.profiles
SET status = 'ACTIVE'
WHERE email = '[email protected]';
-- Or approve by user UUID
UPDATE public.profiles
SET status = 'ACTIVE'
WHERE id = 'user-uuid-here';
-- Promote to super admin (use with caution)
UPDATE public.profiles
SET role = 'SUPER_ADMIN', status = 'ACTIVE'
WHERE email = '[email protected]';
SELECT id, username, email, status, role
FROM public.profiles
WHERE email = '[email protected]';
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── api/ # API routes
│ │ ├── auth/ # Auth callback routes
│ │ ├── dashboard/ # Protected dashboard
│ │ ├── sign-up/ # Registration page
│ │ ├── sign-in/ # Login page
│ │ └── ...
│ ├── components/ # Reusable components
│ ├── lib/ # Utilities and clients
│ │ ├── supabase/ # Supabase client configs
│ │ ├── encryption.ts # NID encryption
│ │ ├── validation.ts # Zod schemas
│ │ ├── rate-limit.ts # Rate limiting
│ │ └── env.ts # Environment validation
│ └── types/ # TypeScript types
├── supabase/
│ └── migrations/ # Database migrations
├── public/ # Static assets (poster, logo)
└── .env.example # Environment template
@tailwindcss/postcss installednpm run typecheck to see specific issuesnpm install to ensure dependencies are installedNEXT_PUBLIC_APP_URLprofiles table and username_normalized index existsemployee-photos bucket exists in Supabase Storagesrc/lib/rate-limit.ts and migration 003_rate_limiter.sqlSUPABASE_SERVICE_ROLE_KEY to Git. It should only be used server-side.This implementation includes:
Out of scope for Phase 1:
ISC
For issues or questions, please contact the project administrator.