diff --git a/.gitignore b/.gitignore
index d24d26f..c49e69b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,6 @@ yarn-error.log*
# turbo
.turbo
.direnv
+
+# I just clone create-t3-turbo and copy the apps and packages, so pls ignore it
+create-t3-turbo
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..e165d81
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,12 @@
+# Expo doesn't play nice with pnpm by default.
+# The symbolic links of pnpm break the rules of Expo monorepos.
+# @link https://docs.expo.dev/guides/monorepos/#common-issues
+node-linker=hoisted
+
+# In order to cache Prisma correctly
+public-hoist-pattern[]=*prisma*
+
+# FIXME: @prisma/client is required by the @acme/auth,
+# but we don't want it installed there since it's already
+# installed in the @acme/db package
+strict-peer-dependencies=false
diff --git a/.prettierrc.cjs b/.prettierrc.cjs
new file mode 100644
index 0000000..b704e6a
--- /dev/null
+++ b/.prettierrc.cjs
@@ -0,0 +1,12 @@
+/** @type {import("prettier").Config} */
+module.exports = {
+ arrowParens: "always",
+ printWidth: 80,
+ singleQuote: false,
+ jsxSingleQuote: false,
+ semi: true,
+ trailingComma: "all",
+ tabWidth: 2,
+ plugins: [require.resolve("prettier-plugin-tailwindcss")],
+ tailwindConfig: "./packages/config/tailwind",
+};
diff --git a/apps/name-generator/.eslintrc.cjs b/apps/name-generator/.eslintrc.cjs
new file mode 100644
index 0000000..8fbae96
--- /dev/null
+++ b/apps/name-generator/.eslintrc.cjs
@@ -0,0 +1,4 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ extends: ["../../.eslintrc.cjs", "next"],
+};
diff --git a/apps/name-generator/README.md b/apps/name-generator/README.md
new file mode 100644
index 0000000..658d71e
--- /dev/null
+++ b/apps/name-generator/README.md
@@ -0,0 +1,131 @@
+# Create T3 App
+
+This is an app bootstrapped according to the [init.tips](https://init.tips) stack, also known as the T3-Stack.
+
+## Why are there `.js` files in here?
+
+As per [T3-Axiom #3](https://github.com/t3-oss/create-t3-app/tree/next#3-typesafety-isnt-optional), we believe take typesafety as a first class citizen. Unfortunately, not all frameworks and plugins support TypeScript which means some of the configuration files have to be `.js` files.
+
+We try to emphasize that these files are javascript for a reason, by explicitly declaring its type (`cjs` or `mjs`) depending on what's supported by the library it is used by. Also, all the `js` files in this project are still typechecked using a `@ts-check` comment at the top.
+
+## What's next? How do I make an app with this?
+
+We try to keep this project as simple as possible, so you can start with the most basic configuration and then move on to more advanced configuration.
+
+If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our [Discord](https://t3.gg/discord) and ask for help.
+
+- [Next-Auth.js](https://next-auth.js.org)
+- [Prisma](https://prisma.io)
+- [TailwindCSS](https://tailwindcss.com)
+- [tRPC](https://trpc.io) (using @next version? [see v10 docs here](https://alpha.trpc.io))
+
+## How do I deploy this?
+
+### Vercel
+
+We recommend deploying to [Vercel](https://vercel.com/?utm_source=t3-oss&utm_campaign=oss). It makes it super easy to deploy NextJs apps.
+
+- Push your code to a GitHub repository.
+- Go to [Vercel](https://vercel.com/?utm_source=t3-oss&utm_campaign=oss) and sign up with GitHub.
+- Create a Project and import the repository you pushed your code to.
+- Add your environment variables.
+- Click **Deploy**
+- Now whenever you push a change to your repository, Vercel will automatically redeploy your website!
+
+### Docker
+
+You can also dockerize this stack and deploy a container.
+
+1. In your [next.config.mjs](./next.config.mjs), add the `output: "standalone"` option to your config.
+2. Create a `.dockerignore` file with the following contents:
+
+ .dockerignore
+
+ ```
+ Dockerfile
+ .dockerignore
+ node_modules
+ npm-debug.log
+ README.md
+ .next
+ .git
+ ```
+
+
+
+3. Create a `Dockerfile` with the following contents:
+
+ Dockerfile
+
+ ```Dockerfile
+ # Install dependencies only when needed
+ FROM node:16-alpine AS deps
+ # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
+ RUN apk add --no-cache libc6-compat
+ WORKDIR /app
+
+ # Install dependencies based on the preferred package manager
+ COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
+ RUN \
+ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
+ elif [ -f package-lock.json ]; then npm ci; \
+ elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i; \
+ else echo "Lockfile not found." && exit 1; \
+ fi
+
+
+ # Rebuild the source code only when needed
+ FROM node:16-alpine AS builder
+ WORKDIR /app
+ COPY --from=deps /app/node_modules ./node_modules
+ COPY . .
+
+ # Next.js collects completely anonymous telemetry data about general usage.
+ # Learn more here: https://nextjs.org/telemetry
+ # Uncomment the following line in case you want to disable telemetry during the build.
+ # ENV NEXT_TELEMETRY_DISABLED 1
+
+ RUN yarn build
+
+ # If using npm comment out above and use below instead
+ # RUN npm run build
+
+ # Production image, copy all the files and run next
+ FROM node:16-alpine AS runner
+ WORKDIR /app
+
+ ENV NODE_ENV production
+ # Uncomment the following line in case you want to disable telemetry during runtime.
+ # ENV NEXT_TELEMETRY_DISABLED 1
+
+ RUN addgroup --system --gid 1001 nodejs
+ RUN adduser --system --uid 1001 nextjs
+
+ # You only need to copy next.config.js if you are NOT using the default configuration
+ # COPY --from=builder /app/next.config.js ./
+ COPY --from=builder /app/public ./public
+ COPY --from=builder /app/package.json ./package.json
+
+ # Automatically leverage output traces to reduce image size
+ # https://nextjs.org/docs/advanced-features/output-file-tracing
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
+
+ USER nextjs
+
+ EXPOSE 3000
+
+ ENV PORT 3000
+
+ CMD ["node", "server.js"]
+ ```
+
+
+
+4. You can now build an image to deploy yourself, or use a PaaS such as [Railway's](https://railway.app) automated [Dockerfile deployments](https://docs.railway.app/deploy/dockerfiles) to deploy your app.
+
+## Useful resources
+
+Here are some resources that we commonly refer to:
+
+- [Protecting routes with Next-Auth.js](https://next-auth.js.org/configuration/nextjs#unstable_getserversession)
diff --git a/apps/name-generator/next-env.d.ts b/apps/name-generator/next-env.d.ts
new file mode 100644
index 0000000..4f11a03
--- /dev/null
+++ b/apps/name-generator/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/apps/name-generator/next.config.mjs b/apps/name-generator/next.config.mjs
new file mode 100644
index 0000000..e19a29d
--- /dev/null
+++ b/apps/name-generator/next.config.mjs
@@ -0,0 +1,22 @@
+// @ts-check
+/**
+ * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.
+ * This is especially useful for Docker builds.
+ */
+!process.env.SKIP_ENV_VALIDATION && (await import("./src/env/server.mjs"));
+
+/** @type {import("next").NextConfig} */
+const config = {
+ reactStrictMode: true,
+ swcMinify: true,
+ experimental: {
+ // Enables hot-reload and easy integration for local packages
+ transpilePackages: ["@acme/api", "@acme/auth", "@acme/db"],
+ },
+ // We already do linting on GH actions
+ eslint: {
+ ignoreDuringBuilds: !!process.env.CI,
+ },
+};
+
+export default config;
diff --git a/apps/name-generator/package.json b/apps/name-generator/package.json
new file mode 100644
index 0000000..27e9ea5
--- /dev/null
+++ b/apps/name-generator/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@acme/name-generator",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "clean": "rm -rf .next .turbo node_modules",
+ "start": "next start",
+ "lint": "next lint",
+ "type-check": "tsc --noEmit"
+ },
+ "dependencies": {
+ "@acme/api": "*",
+ "@acme/auth": "*",
+ "@acme/db": "*",
+ "@acme/tailwind-config": "*",
+ "@tanstack/react-query": "^4.16.1",
+ "@trpc/client": "^10.1.0",
+ "@trpc/next": "^10.1.0",
+ "@trpc/react-query": "^10.1.0",
+ "@trpc/server": "^10.1.0",
+ "next": "^13.0.5",
+ "next-auth": "^4.17.0",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "zod": "^3.18.0"
+ },
+ "devDependencies": {
+ "@types/node": "^18.0.0",
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "autoprefixer": "^10.4.13",
+ "eslint": "^8.28.0",
+ "eslint-config-next": "13.0.4",
+ "postcss": "^8.4.19",
+ "tailwindcss": "^3.2.4",
+ "typescript": "^4.9.3"
+ }
+}
diff --git a/apps/name-generator/postcss.config.cjs b/apps/name-generator/postcss.config.cjs
new file mode 100644
index 0000000..5559738
--- /dev/null
+++ b/apps/name-generator/postcss.config.cjs
@@ -0,0 +1 @@
+module.exports = require("@acme/tailwind-config/postcss");
diff --git a/apps/name-generator/public/favicon.ico b/apps/name-generator/public/favicon.ico
new file mode 100644
index 0000000..efd76f1
Binary files /dev/null and b/apps/name-generator/public/favicon.ico differ
diff --git a/apps/name-generator/src/env/client.mjs b/apps/name-generator/src/env/client.mjs
new file mode 100644
index 0000000..c2b3601
--- /dev/null
+++ b/apps/name-generator/src/env/client.mjs
@@ -0,0 +1,33 @@
+// @ts-check
+import { clientEnv, clientSchema } from "./schema.mjs";
+
+const _clientEnv = clientSchema.safeParse(clientEnv);
+
+export const formatErrors = (
+ /** @type {import('zod').ZodFormattedError