diff --git a/README.md b/README.md
index 2132f71..3640e06 100644
--- a/README.md
+++ b/README.md
@@ -16,22 +16,13 @@ This Turborepo includes the following packages/apps:
### Apps and Packages
-- `docs`: a [Next.js](https://nextjs.org/) app
-- `web`: another [Next.js](https://nextjs.org/) app
-- `@repo/ui`: a stub React component library shared by both `web` and `docs` applications
-- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
-- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo
+- `api`: a [NestJS](https://nestjs.com/) api
+- `web`: a [Nuxt](https://nuxt.com/) app
Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).
### Utilities
-This Turborepo has some additional tools already setup for you:
-
-- [TypeScript](https://www.typescriptlang.org/) for static type checking
-- [ESLint](https://eslint.org/) for code linting
-- [Prettier](https://prettier.io) for code formatting
-
### Build
To build all apps and packages, run the following command:
diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore
deleted file mode 100644
index f886745..0000000
--- a/apps/docs/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# env files (can opt-in for commiting if needed)
-.env*
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/apps/docs/README.md b/apps/docs/README.md
deleted file mode 100644
index a98bfa8..0000000
--- a/apps/docs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/apps/docs/app/favicon.ico b/apps/docs/app/favicon.ico
deleted file mode 100644
index 718d6fe..0000000
Binary files a/apps/docs/app/favicon.ico and /dev/null differ
diff --git a/apps/docs/app/fonts/GeistMonoVF.woff b/apps/docs/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185..0000000
Binary files a/apps/docs/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/docs/app/fonts/GeistVF.woff b/apps/docs/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daa..0000000
Binary files a/apps/docs/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/docs/app/globals.css b/apps/docs/app/globals.css
deleted file mode 100644
index 6af7ecb..0000000
--- a/apps/docs/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: var(--foreground);
- background: var(--background);
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
-
-.imgDark {
- display: none;
-}
-
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
- }
-
- .imgLight {
- display: none;
- }
- .imgDark {
- display: unset;
- }
-}
diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx
deleted file mode 100644
index 8469537..0000000
--- a/apps/docs/app/layout.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Metadata } from "next";
-import localFont from "next/font/local";
-import "./globals.css";
-
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
-
-export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
-};
-
-export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
-}>) {
- return (
-
-
- {children}
-
-
- );
-}
diff --git a/apps/docs/app/page.module.css b/apps/docs/app/page.module.css
deleted file mode 100644
index 6108b60..0000000
--- a/apps/docs/app/page.module.css
+++ /dev/null
@@ -1,186 +0,0 @@
-.page {
- --gray-rgb: 0, 0, 0;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
-
- --button-primary-hover: #383838;
- --button-secondary-hover: #f2f2f2;
-
- display: grid;
- grid-template-rows: 20px 1fr 20px;
- align-items: center;
- justify-items: center;
- min-height: 100svh;
- padding: 80px;
- gap: 64px;
- font-synthesis: none;
-}
-
-@media (prefers-color-scheme: dark) {
- .page {
- --gray-rgb: 255, 255, 255;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
-
- --button-primary-hover: #ccc;
- --button-secondary-hover: #1a1a1a;
- }
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 32px;
- grid-row-start: 2;
-}
-
-.main ol {
- font-family: var(--font-geist-mono);
- padding-left: 0;
- margin: 0;
- font-size: 14px;
- line-height: 24px;
- letter-spacing: -0.01em;
- list-style-position: inside;
-}
-
-.main li:not(:last-of-type) {
- margin-bottom: 8px;
-}
-
-.main code {
- font-family: inherit;
- background: var(--gray-alpha-100);
- padding: 2px 4px;
- border-radius: 4px;
- font-weight: 600;
-}
-
-.ctas {
- display: flex;
- gap: 16px;
-}
-
-.ctas a {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
-}
-
-a.primary {
- background: var(--foreground);
- color: var(--background);
- gap: 8px;
-}
-
-a.secondary {
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-button.secondary {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
- background: transparent;
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-.footer {
- font-family: var(--font-geist-sans);
- grid-row-start: 3;
- display: flex;
- gap: 24px;
-}
-
-.footer a {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.footer img {
- flex-shrink: 0;
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- a.primary:hover {
- background: var(--button-primary-hover);
- border-color: transparent;
- }
-
- a.secondary:hover {
- background: var(--button-secondary-hover);
- border-color: transparent;
- }
-
- .footer a:hover {
- text-decoration: underline;
- text-underline-offset: 4px;
- }
-}
-
-@media (max-width: 600px) {
- .page {
- padding: 32px;
- padding-bottom: 80px;
- }
-
- .main {
- align-items: center;
- }
-
- .main ol {
- text-align: center;
- }
-
- .ctas {
- flex-direction: column;
- }
-
- .ctas a {
- font-size: 14px;
- height: 40px;
- padding: 0 16px;
- }
-
- a.secondary {
- min-width: auto;
- }
-
- .footer {
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- }
-}
-
-@media (prefers-color-scheme: dark) {
- .logo {
- filter: invert();
- }
-}
diff --git a/apps/docs/app/page.tsx b/apps/docs/app/page.tsx
deleted file mode 100644
index efb86f0..0000000
--- a/apps/docs/app/page.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import Image, { type ImageProps } from "next/image";
-import { Button } from "@repo/ui/button";
-import styles from "./page.module.css";
-
-type Props = Omit & {
- srcLight: string;
- srcDark: string;
-};
-
-const ThemeImage = (props: Props) => {
- const { srcLight, srcDark, ...rest } = props;
-
- return (
- <>
-
-
- >
- );
-};
-
-export default function Home() {
- return (
-
-
-
-
- -
- Get started by editing
apps/docs/app/page.tsx
-
- - Save and see your changes instantly.
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/docs/eslint.config.js b/apps/docs/eslint.config.js
deleted file mode 100644
index 47b0670..0000000
--- a/apps/docs/eslint.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import { nextJsConfig } from "@repo/eslint-config/next-js";
-
-/** @type {import("eslint").Linter.Config[]} */
-export default nextJsConfig;
diff --git a/apps/docs/next.config.js b/apps/docs/next.config.js
deleted file mode 100644
index 4678774..0000000
--- a/apps/docs/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {};
-
-export default nextConfig;
diff --git a/apps/docs/package.json b/apps/docs/package.json
deleted file mode 100644
index 4fa303b..0000000
--- a/apps/docs/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "docs",
- "version": "0.1.0",
- "type": "module",
- "private": true,
- "scripts": {
- "dev": "next dev --port 3001",
- "build": "next build",
- "start": "next start",
- "lint": "eslint --max-warnings 0",
- "check-types": "next typegen && tsc --noEmit"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "16.2.0",
- "react": "^19.2.0",
- "react-dom": "^19.2.0"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/node": "^22.15.3",
- "@types/react": "19.2.2",
- "@types/react-dom": "19.2.2",
- "eslint": "^9.39.1",
- "typescript": "5.9.2"
- }
-}
diff --git a/apps/docs/public/file-text.svg b/apps/docs/public/file-text.svg
deleted file mode 100644
index 9cfb3c9..0000000
--- a/apps/docs/public/file-text.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/docs/public/globe.svg b/apps/docs/public/globe.svg
deleted file mode 100644
index 4230a3d..0000000
--- a/apps/docs/public/globe.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/docs/public/next.svg b/apps/docs/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/docs/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/docs/public/turborepo-dark.svg b/apps/docs/public/turborepo-dark.svg
deleted file mode 100644
index dae38fe..0000000
--- a/apps/docs/public/turborepo-dark.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/docs/public/turborepo-light.svg b/apps/docs/public/turborepo-light.svg
deleted file mode 100644
index ddea915..0000000
--- a/apps/docs/public/turborepo-light.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/docs/public/vercel.svg b/apps/docs/public/vercel.svg
deleted file mode 100644
index 0164ddc..0000000
--- a/apps/docs/public/vercel.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/docs/public/window.svg b/apps/docs/public/window.svg
deleted file mode 100644
index bbc7800..0000000
--- a/apps/docs/public/window.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json
deleted file mode 100644
index c0346be..0000000
--- a/apps/docs/tsconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ],
- "strictNullChecks": true
- },
- "include": [
- "**/*.ts",
- "**/*.tsx",
- "next-env.d.ts",
- "next.config.js",
- ".next/types/**/*.ts"
- ],
- "exclude": ["node_modules"]
-}
diff --git a/apps/web/.gitignore b/apps/web/.gitignore
deleted file mode 100644
index f886745..0000000
--- a/apps/web/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# env files (can opt-in for commiting if needed)
-.env*
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/apps/web/README.md b/apps/web/README.md
deleted file mode 100644
index a98bfa8..0000000
--- a/apps/web/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/apps/web/app/favicon.ico b/apps/web/app/favicon.ico
deleted file mode 100644
index 718d6fe..0000000
Binary files a/apps/web/app/favicon.ico and /dev/null differ
diff --git a/apps/web/app/fonts/GeistMonoVF.woff b/apps/web/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185..0000000
Binary files a/apps/web/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/web/app/fonts/GeistVF.woff b/apps/web/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daa..0000000
Binary files a/apps/web/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css
deleted file mode 100644
index 6af7ecb..0000000
--- a/apps/web/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: var(--foreground);
- background: var(--background);
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
-
-.imgDark {
- display: none;
-}
-
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
- }
-
- .imgLight {
- display: none;
- }
- .imgDark {
- display: unset;
- }
-}
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
deleted file mode 100644
index 8469537..0000000
--- a/apps/web/app/layout.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Metadata } from "next";
-import localFont from "next/font/local";
-import "./globals.css";
-
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
-
-export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
-};
-
-export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
-}>) {
- return (
-
-
- {children}
-
-
- );
-}
diff --git a/apps/web/app/page.module.css b/apps/web/app/page.module.css
deleted file mode 100644
index 6108b60..0000000
--- a/apps/web/app/page.module.css
+++ /dev/null
@@ -1,186 +0,0 @@
-.page {
- --gray-rgb: 0, 0, 0;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
-
- --button-primary-hover: #383838;
- --button-secondary-hover: #f2f2f2;
-
- display: grid;
- grid-template-rows: 20px 1fr 20px;
- align-items: center;
- justify-items: center;
- min-height: 100svh;
- padding: 80px;
- gap: 64px;
- font-synthesis: none;
-}
-
-@media (prefers-color-scheme: dark) {
- .page {
- --gray-rgb: 255, 255, 255;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
-
- --button-primary-hover: #ccc;
- --button-secondary-hover: #1a1a1a;
- }
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 32px;
- grid-row-start: 2;
-}
-
-.main ol {
- font-family: var(--font-geist-mono);
- padding-left: 0;
- margin: 0;
- font-size: 14px;
- line-height: 24px;
- letter-spacing: -0.01em;
- list-style-position: inside;
-}
-
-.main li:not(:last-of-type) {
- margin-bottom: 8px;
-}
-
-.main code {
- font-family: inherit;
- background: var(--gray-alpha-100);
- padding: 2px 4px;
- border-radius: 4px;
- font-weight: 600;
-}
-
-.ctas {
- display: flex;
- gap: 16px;
-}
-
-.ctas a {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
-}
-
-a.primary {
- background: var(--foreground);
- color: var(--background);
- gap: 8px;
-}
-
-a.secondary {
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-button.secondary {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
- background: transparent;
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-.footer {
- font-family: var(--font-geist-sans);
- grid-row-start: 3;
- display: flex;
- gap: 24px;
-}
-
-.footer a {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.footer img {
- flex-shrink: 0;
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- a.primary:hover {
- background: var(--button-primary-hover);
- border-color: transparent;
- }
-
- a.secondary:hover {
- background: var(--button-secondary-hover);
- border-color: transparent;
- }
-
- .footer a:hover {
- text-decoration: underline;
- text-underline-offset: 4px;
- }
-}
-
-@media (max-width: 600px) {
- .page {
- padding: 32px;
- padding-bottom: 80px;
- }
-
- .main {
- align-items: center;
- }
-
- .main ol {
- text-align: center;
- }
-
- .ctas {
- flex-direction: column;
- }
-
- .ctas a {
- font-size: 14px;
- height: 40px;
- padding: 0 16px;
- }
-
- a.secondary {
- min-width: auto;
- }
-
- .footer {
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- }
-}
-
-@media (prefers-color-scheme: dark) {
- .logo {
- filter: invert();
- }
-}
diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx
deleted file mode 100644
index 593833b..0000000
--- a/apps/web/app/page.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import Image, { type ImageProps } from "next/image";
-import { Button } from "@repo/ui/button";
-import styles from "./page.module.css";
-
-type Props = Omit & {
- srcLight: string;
- srcDark: string;
-};
-
-const ThemeImage = (props: Props) => {
- const { srcLight, srcDark, ...rest } = props;
-
- return (
- <>
-
-
- >
- );
-};
-
-export default function Home() {
- return (
-
-
-
-
- -
- Get started by editing
apps/web/app/page.tsx
-
- - Save and see your changes instantly.
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/web/eslint.config.js b/apps/web/eslint.config.js
deleted file mode 100644
index 47b0670..0000000
--- a/apps/web/eslint.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import { nextJsConfig } from "@repo/eslint-config/next-js";
-
-/** @type {import("eslint").Linter.Config[]} */
-export default nextJsConfig;
diff --git a/apps/web/next.config.js b/apps/web/next.config.js
deleted file mode 100644
index 4678774..0000000
--- a/apps/web/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {};
-
-export default nextConfig;
diff --git a/apps/web/package.json b/apps/web/package.json
deleted file mode 100644
index 32052f3..0000000
--- a/apps/web/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "web",
- "version": "0.1.0",
- "type": "module",
- "private": true,
- "scripts": {
- "dev": "next dev --port 3000",
- "build": "next build",
- "start": "next start",
- "lint": "eslint --max-warnings 0",
- "check-types": "next typegen && tsc --noEmit"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "16.2.0",
- "react": "^19.2.0",
- "react-dom": "^19.2.0"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/node": "^22.15.3",
- "@types/react": "19.2.2",
- "@types/react-dom": "19.2.2",
- "eslint": "^9.39.1",
- "typescript": "5.9.2"
- }
-}
diff --git a/apps/web/public/file-text.svg b/apps/web/public/file-text.svg
deleted file mode 100644
index 9cfb3c9..0000000
--- a/apps/web/public/file-text.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/web/public/globe.svg b/apps/web/public/globe.svg
deleted file mode 100644
index 4230a3d..0000000
--- a/apps/web/public/globe.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/web/public/next.svg b/apps/web/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/web/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/web/public/turborepo-dark.svg b/apps/web/public/turborepo-dark.svg
deleted file mode 100644
index dae38fe..0000000
--- a/apps/web/public/turborepo-dark.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/web/public/turborepo-light.svg b/apps/web/public/turborepo-light.svg
deleted file mode 100644
index ddea915..0000000
--- a/apps/web/public/turborepo-light.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/web/public/vercel.svg b/apps/web/public/vercel.svg
deleted file mode 100644
index 0164ddc..0000000
--- a/apps/web/public/vercel.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/web/public/window.svg b/apps/web/public/window.svg
deleted file mode 100644
index bbc7800..0000000
--- a/apps/web/public/window.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
deleted file mode 100644
index c0346be..0000000
--- a/apps/web/tsconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ],
- "strictNullChecks": true
- },
- "include": [
- "**/*.ts",
- "**/*.tsx",
- "next-env.d.ts",
- "next.config.js",
- ".next/types/**/*.ts"
- ],
- "exclude": ["node_modules"]
-}
diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md
deleted file mode 100644
index 8b42d90..0000000
--- a/packages/eslint-config/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# `@turbo/eslint-config`
-
-Collection of internal eslint configurations.
diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js
deleted file mode 100644
index 09d316e..0000000
--- a/packages/eslint-config/base.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import js from "@eslint/js";
-import eslintConfigPrettier from "eslint-config-prettier";
-import turboPlugin from "eslint-plugin-turbo";
-import tseslint from "typescript-eslint";
-import onlyWarn from "eslint-plugin-only-warn";
-
-/**
- * A shared ESLint configuration for the repository.
- *
- * @type {import("eslint").Linter.Config[]}
- * */
-export const config = [
- js.configs.recommended,
- eslintConfigPrettier,
- ...tseslint.configs.recommended,
- {
- plugins: {
- turbo: turboPlugin,
- },
- rules: {
- "turbo/no-undeclared-env-vars": "warn",
- },
- },
- {
- plugins: {
- onlyWarn,
- },
- },
- {
- ignores: ["dist/**"],
- },
-];
diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js
deleted file mode 100644
index 4df088a..0000000
--- a/packages/eslint-config/next.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import js from "@eslint/js";
-import { globalIgnores } from "eslint/config";
-import eslintConfigPrettier from "eslint-config-prettier";
-import tseslint from "typescript-eslint";
-import pluginReactHooks from "eslint-plugin-react-hooks";
-import pluginReact from "eslint-plugin-react";
-import globals from "globals";
-import pluginNext from "@next/eslint-plugin-next";
-import { config as baseConfig } from "./base.js";
-
-/**
- * A custom ESLint configuration for libraries that use Next.js.
- *
- * @type {import("eslint").Linter.Config[]}
- * */
-export const nextJsConfig = [
- ...baseConfig,
- js.configs.recommended,
- eslintConfigPrettier,
- ...tseslint.configs.recommended,
- globalIgnores([
- // Default ignores of eslint-config-next:
- ".next/**",
- "out/**",
- "build/**",
- "next-env.d.ts",
- ]),
- {
- ...pluginReact.configs.flat.recommended,
- languageOptions: {
- ...pluginReact.configs.flat.recommended.languageOptions,
- globals: {
- ...globals.serviceworker,
- },
- },
- },
- {
- plugins: {
- "@next/next": pluginNext,
- },
- rules: {
- ...pluginNext.configs.recommended.rules,
- ...pluginNext.configs["core-web-vitals"].rules,
- },
- },
- {
- plugins: {
- "react-hooks": pluginReactHooks,
- },
- settings: { react: { version: "detect" } },
- rules: {
- ...pluginReactHooks.configs.recommended.rules,
- // React scope no longer necessary with new JSX transform.
- "react/react-in-jsx-scope": "off",
- },
- },
-];
diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json
deleted file mode 100644
index 6fd5c24..0000000
--- a/packages/eslint-config/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "@repo/eslint-config",
- "version": "0.0.0",
- "type": "module",
- "private": true,
- "exports": {
- "./base": "./base.js",
- "./next-js": "./next.js",
- "./react-internal": "./react-internal.js"
- },
- "devDependencies": {
- "@eslint/js": "^9.39.1",
- "@next/eslint-plugin-next": "^16.2.0",
- "eslint": "^9.39.1",
- "eslint-config-prettier": "^10.1.1",
- "eslint-plugin-only-warn": "^1.1.0",
- "eslint-plugin-react": "^7.37.5",
- "eslint-plugin-react-hooks": "^5.2.0",
- "eslint-plugin-turbo": "^2.7.1",
- "globals": "^16.5.0",
- "typescript": "^5.9.2",
- "typescript-eslint": "^8.50.0"
- }
-}
diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js
deleted file mode 100644
index daeccba..0000000
--- a/packages/eslint-config/react-internal.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import js from "@eslint/js";
-import eslintConfigPrettier from "eslint-config-prettier";
-import tseslint from "typescript-eslint";
-import pluginReactHooks from "eslint-plugin-react-hooks";
-import pluginReact from "eslint-plugin-react";
-import globals from "globals";
-import { config as baseConfig } from "./base.js";
-
-/**
- * A custom ESLint configuration for libraries that use React.
- *
- * @type {import("eslint").Linter.Config[]} */
-export const config = [
- ...baseConfig,
- js.configs.recommended,
- eslintConfigPrettier,
- ...tseslint.configs.recommended,
- pluginReact.configs.flat.recommended,
- {
- languageOptions: {
- ...pluginReact.configs.flat.recommended.languageOptions,
- globals: {
- ...globals.serviceworker,
- ...globals.browser,
- },
- },
- },
- {
- plugins: {
- "react-hooks": pluginReactHooks,
- },
- settings: { react: { version: "detect" } },
- rules: {
- ...pluginReactHooks.configs.recommended.rules,
- // React scope no longer necessary with new JSX transform.
- "react/react-in-jsx-scope": "off",
- },
- },
-];
diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json
deleted file mode 100644
index 5117f2a..0000000
--- a/packages/typescript-config/base.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "compilerOptions": {
- "declaration": true,
- "declarationMap": true,
- "esModuleInterop": true,
- "incremental": false,
- "isolatedModules": true,
- "lib": ["es2022", "DOM", "DOM.Iterable"],
- "module": "NodeNext",
- "moduleDetection": "force",
- "moduleResolution": "NodeNext",
- "noUncheckedIndexedAccess": true,
- "resolveJsonModule": true,
- "skipLibCheck": true,
- "strict": true,
- "target": "ES2022"
- }
-}
diff --git a/packages/typescript-config/nextjs.json b/packages/typescript-config/nextjs.json
deleted file mode 100644
index e6defa4..0000000
--- a/packages/typescript-config/nextjs.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "extends": "./base.json",
- "compilerOptions": {
- "plugins": [{ "name": "next" }],
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "allowJs": true,
- "jsx": "preserve",
- "noEmit": true
- }
-}
diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json
deleted file mode 100644
index 27c0e60..0000000
--- a/packages/typescript-config/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@repo/typescript-config",
- "version": "0.0.0",
- "private": true,
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/typescript-config/react-library.json b/packages/typescript-config/react-library.json
deleted file mode 100644
index c3a1b26..0000000
--- a/packages/typescript-config/react-library.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "extends": "./base.json",
- "compilerOptions": {
- "jsx": "react-jsx"
- }
-}
diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs
deleted file mode 100644
index 19170f8..0000000
--- a/packages/ui/eslint.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-import { config } from "@repo/eslint-config/react-internal";
-
-/** @type {import("eslint").Linter.Config} */
-export default config;
diff --git a/packages/ui/package.json b/packages/ui/package.json
deleted file mode 100644
index 90c1488..0000000
--- a/packages/ui/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "@repo/ui",
- "version": "0.0.0",
- "private": true,
- "exports": {
- "./*": "./src/*.tsx"
- },
- "scripts": {
- "lint": "eslint . --max-warnings 0",
- "generate:component": "turbo gen react-component",
- "check-types": "tsc --noEmit"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/node": "^22.15.3",
- "@types/react": "19.2.2",
- "@types/react-dom": "19.2.2",
- "eslint": "^9.39.1",
- "typescript": "5.9.2"
- },
- "dependencies": {
- "react": "^19.2.0",
- "react-dom": "^19.2.0"
- }
-}
diff --git a/packages/ui/src/button.tsx b/packages/ui/src/button.tsx
deleted file mode 100644
index 78e5420..0000000
--- a/packages/ui/src/button.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-"use client";
-
-import { ReactNode } from "react";
-
-interface ButtonProps {
- children: ReactNode;
- className?: string;
- appName: string;
-}
-
-export const Button = ({ children, className, appName }: ButtonProps) => {
- return (
-
- );
-};
diff --git a/packages/ui/src/card.tsx b/packages/ui/src/card.tsx
deleted file mode 100644
index 7b98893..0000000
--- a/packages/ui/src/card.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { type JSX } from "react";
-
-export function Card({
- className,
- title,
- children,
- href,
-}: {
- className?: string;
- title: string;
- children: React.ReactNode;
- href: string;
-}): JSX.Element {
- return (
-
-
- {title} ->
-
- {children}
-
- );
-}
diff --git a/packages/ui/src/code.tsx b/packages/ui/src/code.tsx
deleted file mode 100644
index f7cbd22..0000000
--- a/packages/ui/src/code.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { type JSX } from "react";
-
-export function Code({
- children,
- className,
-}: {
- children: React.ReactNode;
- className?: string;
-}): JSX.Element {
- return {children};
-}
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
deleted file mode 100644
index ed023ce..0000000
--- a/packages/ui/tsconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "extends": "@repo/typescript-config/react-library.json",
- "compilerOptions": {
- "outDir": "dist",
- "strictNullChecks": true
- },
- "include": ["src"],
- "exclude": ["node_modules", "dist"]
-}