Scroll to top
TITAN'S CELL: NYMPH
1 / 3

TITAN'S CELL: NYMPH

타이탄의 몸속으로 들어가 NYMPH를 발견하세요.

Unified Login

Google, Apple, Facebook, GitHub, and Kakao — five providers, one integration, zero friction for your players.

Game Account Hub

Manage all game accounts from a single dashboard. Full session history, linked providers, and account metadata in one place.

Safe Account Merge

Players can safely merge duplicate accounts across providers. 10-minute expiring codes, RLS-protected, no data loss.

Primary: Cosmos internal backbone·Secondary: Open SSO SaaSFree tier 1,000 MAU

One-Click SSO in under 10 minutes

Integrate any of the five OAuth providers through Duckring SSO. Copy-pasteable snippets — no extra config needed.

sso-login.ts
// 1. Initialize Supabase client (app/lib/supabase.ts)
import { createBrowserClient } from '@supabase/ssr'

export const supabase = createBrowserClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)

// 2. Sign in with any provider (swap 'kakao' for 'google', 'apple', etc.)
async function signInWithKakao() {
  const { error } = await supabase.auth.signInWithOAuth({
    provider: 'kakao',
    options: {
      redirectTo: `${process.env.NEXT_PUBLIC_SITE_URL}/auth/callback`,
    },
  })
  if (error) console.error('Sign-in failed:', error.message)
}

// 3. Callback route (app/auth/callback/route.ts)
import { createServerClient } from '@supabase/ssr'
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export async function GET(request: NextRequest) {
  const { searchParams, origin } = new URL(request.url)
  const code = searchParams.get('code')
  if (code) {
    const supabase = createServerClient(/* ... */)
    await supabase.auth.exchangeCodeForSession(code)
  }
  return NextResponse.redirect(`${origin}/dashboard`)
}
Google · Apple · Facebook · GitHub · Kakao
RLS + account merge built-in
Free tier 1,000 MAU