Add SuperTokens authentication integration

- Install supertokens-auth-react, supertokens-node, supertokens-web-js
- Create frontend and backend SuperTokens configuration
- Add API route handler for auth endpoints
- Add SuperTokensProvider wrapper in root layout
- Create new auth component with SuperTokens UI
- Configure Google and GitHub OAuth providers
- Ready for SuperTokens core deployment

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-16 15:27:40 -08:00
parent 8612fe7d5b
commit 6764c1feb0
10 changed files with 698 additions and 24 deletions

View File

@@ -0,0 +1,49 @@
import ThirdPartyEmailPasswordNode from "supertokens-node/recipe/thirdpartyemailpassword";
import SessionNode from "supertokens-node/recipe/session";
import { TypeInput } from "supertokens-node/types";
import { AppInfoUserInput } from "supertokens-node/types";
const appInfo: AppInfoUserInput = {
appName: "Vib'n",
apiDomain: process.env.NEXT_PUBLIC_APP_URL || "https://app.vibnai.com",
websiteDomain: process.env.NEXT_PUBLIC_APP_URL || "https://app.vibnai.com",
apiBasePath: "/api/auth",
websiteBasePath: "/auth",
};
export const backendConfig = (): TypeInput => {
return {
framework: "custom",
supertokens: {
connectionURI: process.env.SUPERTOKENS_CONNECTION_URI || "https://auth.vibnai.com",
apiKey: process.env.SUPERTOKENS_API_KEY,
},
appInfo,
recipeList: [
ThirdPartyEmailPasswordNode.init({
providers: [
{
config: {
thirdPartyId: "google",
clients: [{
clientId: process.env.GOOGLE_CLIENT_ID || "",
clientSecret: process.env.GOOGLE_CLIENT_SECRET || "",
}],
},
},
{
config: {
thirdPartyId: "github",
clients: [{
clientId: process.env.GITHUB_CLIENT_ID || "",
clientSecret: process.env.GITHUB_CLIENT_SECRET || "",
}],
},
},
],
}),
SessionNode.init(),
],
isInServerlessEnv: true,
};
};