From 8b2c4a38a461ff5ecc95972291bc711e2c5dec9a Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 01:47:57 +0800 Subject: --- examples/kitchen-sink/apps/admin/.eslintrc.js | 4 ++ examples/kitchen-sink/apps/admin/index.html | 12 +++++ examples/kitchen-sink/apps/admin/package.json | 27 ++++++++++ .../kitchen-sink/apps/admin/public/favicon.ico | Bin 0 -> 372526 bytes examples/kitchen-sink/apps/admin/src/App.css | 40 +++++++++++++++ examples/kitchen-sink/apps/admin/src/App.tsx | 22 +++++++++ examples/kitchen-sink/apps/admin/src/index.css | 14 ++++++ examples/kitchen-sink/apps/admin/src/main.tsx | 11 +++++ examples/kitchen-sink/apps/admin/tsconfig.json | 9 ++++ examples/kitchen-sink/apps/admin/vite.config.ts | 6 +++ examples/kitchen-sink/apps/api/.eslintrc.js | 4 ++ examples/kitchen-sink/apps/api/package.json | 40 +++++++++++++++ .../apps/api/src/__tests__/server.test.ts | 22 +++++++++ .../apps/api/src/__tests__/tsconfig.json | 4 ++ examples/kitchen-sink/apps/api/src/index.ts | 9 ++++ examples/kitchen-sink/apps/api/src/server.ts | 22 +++++++++ examples/kitchen-sink/apps/api/tsconfig.json | 11 +++++ examples/kitchen-sink/apps/blog/.gitignore | 11 +++++ examples/kitchen-sink/apps/blog/README.md | 34 +++++++++++++ .../kitchen-sink/apps/blog/app/entry.client.tsx | 22 +++++++++ .../kitchen-sink/apps/blog/app/entry.server.tsx | 18 +++++++ examples/kitchen-sink/apps/blog/app/root.tsx | 37 ++++++++++++++ .../kitchen-sink/apps/blog/app/routes/index.tsx | 18 +++++++ examples/kitchen-sink/apps/blog/app/styles.css | 55 +++++++++++++++++++++ examples/kitchen-sink/apps/blog/package.json | 32 ++++++++++++ examples/kitchen-sink/apps/blog/public/favicon.ico | Bin 0 -> 16958 bytes examples/kitchen-sink/apps/blog/remix.config.js | 10 ++++ examples/kitchen-sink/apps/blog/remix.env.d.ts | 2 + examples/kitchen-sink/apps/blog/server.js | 4 ++ examples/kitchen-sink/apps/blog/tsconfig.json | 20 ++++++++ examples/kitchen-sink/apps/storefront/.eslintrc.js | 4 ++ .../kitchen-sink/apps/storefront/next-env.d.ts | 5 ++ .../kitchen-sink/apps/storefront/next.config.js | 3 ++ examples/kitchen-sink/apps/storefront/package.json | 28 +++++++++++ .../apps/storefront/public/favicon.ico | Bin 0 -> 15086 bytes .../apps/storefront/src/pages/_app.tsx | 6 +++ .../apps/storefront/src/pages/index.tsx | 24 +++++++++ .../kitchen-sink/apps/storefront/src/styles.css | 55 +++++++++++++++++++++ .../kitchen-sink/apps/storefront/tsconfig.json | 9 ++++ 39 files changed, 654 insertions(+) create mode 100644 examples/kitchen-sink/apps/admin/.eslintrc.js create mode 100644 examples/kitchen-sink/apps/admin/index.html create mode 100644 examples/kitchen-sink/apps/admin/package.json create mode 100644 examples/kitchen-sink/apps/admin/public/favicon.ico create mode 100644 examples/kitchen-sink/apps/admin/src/App.css create mode 100644 examples/kitchen-sink/apps/admin/src/App.tsx create mode 100644 examples/kitchen-sink/apps/admin/src/index.css create mode 100644 examples/kitchen-sink/apps/admin/src/main.tsx create mode 100644 examples/kitchen-sink/apps/admin/tsconfig.json create mode 100644 examples/kitchen-sink/apps/admin/vite.config.ts create mode 100644 examples/kitchen-sink/apps/api/.eslintrc.js create mode 100644 examples/kitchen-sink/apps/api/package.json create mode 100644 examples/kitchen-sink/apps/api/src/__tests__/server.test.ts create mode 100644 examples/kitchen-sink/apps/api/src/__tests__/tsconfig.json create mode 100644 examples/kitchen-sink/apps/api/src/index.ts create mode 100644 examples/kitchen-sink/apps/api/src/server.ts create mode 100644 examples/kitchen-sink/apps/api/tsconfig.json create mode 100644 examples/kitchen-sink/apps/blog/.gitignore create mode 100644 examples/kitchen-sink/apps/blog/README.md create mode 100644 examples/kitchen-sink/apps/blog/app/entry.client.tsx create mode 100644 examples/kitchen-sink/apps/blog/app/entry.server.tsx create mode 100644 examples/kitchen-sink/apps/blog/app/root.tsx create mode 100644 examples/kitchen-sink/apps/blog/app/routes/index.tsx create mode 100644 examples/kitchen-sink/apps/blog/app/styles.css create mode 100644 examples/kitchen-sink/apps/blog/package.json create mode 100644 examples/kitchen-sink/apps/blog/public/favicon.ico create mode 100644 examples/kitchen-sink/apps/blog/remix.config.js create mode 100644 examples/kitchen-sink/apps/blog/remix.env.d.ts create mode 100644 examples/kitchen-sink/apps/blog/server.js create mode 100644 examples/kitchen-sink/apps/blog/tsconfig.json create mode 100644 examples/kitchen-sink/apps/storefront/.eslintrc.js create mode 100644 examples/kitchen-sink/apps/storefront/next-env.d.ts create mode 100644 examples/kitchen-sink/apps/storefront/next.config.js create mode 100644 examples/kitchen-sink/apps/storefront/package.json create mode 100644 examples/kitchen-sink/apps/storefront/public/favicon.ico create mode 100644 examples/kitchen-sink/apps/storefront/src/pages/_app.tsx create mode 100644 examples/kitchen-sink/apps/storefront/src/pages/index.tsx create mode 100644 examples/kitchen-sink/apps/storefront/src/styles.css create mode 100644 examples/kitchen-sink/apps/storefront/tsconfig.json (limited to 'examples/kitchen-sink/apps') diff --git a/examples/kitchen-sink/apps/admin/.eslintrc.js b/examples/kitchen-sink/apps/admin/.eslintrc.js new file mode 100644 index 0000000..c8df607 --- /dev/null +++ b/examples/kitchen-sink/apps/admin/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["custom"], +}; diff --git a/examples/kitchen-sink/apps/admin/index.html b/examples/kitchen-sink/apps/admin/index.html new file mode 100644 index 0000000..c88938a --- /dev/null +++ b/examples/kitchen-sink/apps/admin/index.html @@ -0,0 +1,12 @@ + + + + + + Admin | Kitchen Sink + + +
+ + + diff --git a/examples/kitchen-sink/apps/admin/package.json b/examples/kitchen-sink/apps/admin/package.json new file mode 100644 index 0000000..727d969 --- /dev/null +++ b/examples/kitchen-sink/apps/admin/package.json @@ -0,0 +1,27 @@ +{ + "name": "admin", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "vite build", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "deploy": "vercel deploy dist --team=turborepo --confirm", + "dev": "vite --host 0.0.0.0 --port 3001 --clearScreen false", + "lint": "tsc --noEmit && eslint \"src/**/*.ts*\"" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "ui": "workspace:*" + }, + "devDependencies": { + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", + "@vitejs/plugin-react": "^2.1.0", + "eslint": "^7.32.0", + "eslint-config-custom": "workspace:*", + "tsconfig": "workspace:*", + "typescript": "^4.8.3", + "vite": "^3.1.0" + } +} diff --git a/examples/kitchen-sink/apps/admin/public/favicon.ico b/examples/kitchen-sink/apps/admin/public/favicon.ico new file mode 100644 index 0000000..3a3c34a Binary files /dev/null and b/examples/kitchen-sink/apps/admin/public/favicon.ico differ diff --git a/examples/kitchen-sink/apps/admin/src/App.css b/examples/kitchen-sink/apps/admin/src/App.css new file mode 100644 index 0000000..dc5bbf4 --- /dev/null +++ b/examples/kitchen-sink/apps/admin/src/App.css @@ -0,0 +1,40 @@ +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + max-width: 100%; + margin: 0 auto; + padding: 0 16px; + text-align: center; +} + +.title { + font-size: 3rem; + font-weight: 700; + margin: 0; +} + +.title span { + display: inline-block; + background-image: linear-gradient(to right, #3b82f6, #ef4444); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.description { + color: #9ca3af; + font-weight: 500; +} + +.description a { + color: #3b82f6; + text-decoration: none; +} + +.description a:hover { + text-decoration: underline; +} diff --git a/examples/kitchen-sink/apps/admin/src/App.tsx b/examples/kitchen-sink/apps/admin/src/App.tsx new file mode 100644 index 0000000..ed28394 --- /dev/null +++ b/examples/kitchen-sink/apps/admin/src/App.tsx @@ -0,0 +1,22 @@ +import * as React from "react"; +import "./App.css"; +import { CounterButton, NewTabLink } from "ui"; + +function App() { + return ( +
+

+ Admin
+ Kitchen Sink +

+ +

+ Built With{" "} + Turborepo +{" "} + Vite +

+
+ ); +} + +export default App; diff --git a/examples/kitchen-sink/apps/admin/src/index.css b/examples/kitchen-sink/apps/admin/src/index.css new file mode 100644 index 0000000..863ff0b --- /dev/null +++ b/examples/kitchen-sink/apps/admin/src/index.css @@ -0,0 +1,14 @@ +html { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, + Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} + +body { + margin: 0; +} diff --git a/examples/kitchen-sink/apps/admin/src/main.tsx b/examples/kitchen-sink/apps/admin/src/main.tsx new file mode 100644 index 0000000..794ecaf --- /dev/null +++ b/examples/kitchen-sink/apps/admin/src/main.tsx @@ -0,0 +1,11 @@ +import * as React from "react"; +import * as ReactDOM from "react-dom"; +import "./index.css"; +import App from "./App"; + +ReactDOM.render( + + + , + document.getElementById("root") +); diff --git a/examples/kitchen-sink/apps/admin/tsconfig.json b/examples/kitchen-sink/apps/admin/tsconfig.json new file mode 100644 index 0000000..585415b --- /dev/null +++ b/examples/kitchen-sink/apps/admin/tsconfig.json @@ -0,0 +1,9 @@ +{ + "exclude": ["node_modules"], + "extends": "tsconfig/vite.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "include": ["src"] +} diff --git a/examples/kitchen-sink/apps/admin/vite.config.ts b/examples/kitchen-sink/apps/admin/vite.config.ts new file mode 100644 index 0000000..58676f7 --- /dev/null +++ b/examples/kitchen-sink/apps/admin/vite.config.ts @@ -0,0 +1,6 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react()], +}); diff --git a/examples/kitchen-sink/apps/api/.eslintrc.js b/examples/kitchen-sink/apps/api/.eslintrc.js new file mode 100644 index 0000000..2308ff9 --- /dev/null +++ b/examples/kitchen-sink/apps/api/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["custom-server"], +}; diff --git a/examples/kitchen-sink/apps/api/package.json b/examples/kitchen-sink/apps/api/package.json new file mode 100644 index 0000000..0c2a0c0 --- /dev/null +++ b/examples/kitchen-sink/apps/api/package.json @@ -0,0 +1,40 @@ +{ + "name": "api", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "tsup src/index.ts --format cjs", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "dev": "tsup src/index.ts --format cjs --watch --onSuccess \"node dist/index.js\"", + "lint": "tsc --noEmit && eslint \"src/**/*.ts*\"", + "start": "node dist/index.js", + "test": "jest --detectOpenHandles" + }, + "jest": { + "preset": "jest-presets/jest/node" + }, + "dependencies": { + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "logger": "workspace:*", + "morgan": "^1.10.0" + }, + "devDependencies": { + "@types/body-parser": "^1.19.0", + "@types/cors": "^2.8.10", + "@types/express": "^4.17.12", + "@types/jest": "^26.0.22", + "@types/morgan": "^1.9.2", + "@types/node": "^15.12.2", + "@types/supertest": "^2.0.12", + "eslint": "^7.32.0", + "eslint-config-custom-server": "workspace:*", + "jest": "^26.6.3", + "jest-presets": "workspace:*", + "supertest": "^6.2.4", + "tsconfig": "workspace:*", + "tsup": "^6.2.3", + "typescript": "^4.8.3" + } +} diff --git a/examples/kitchen-sink/apps/api/src/__tests__/server.test.ts b/examples/kitchen-sink/apps/api/src/__tests__/server.test.ts new file mode 100644 index 0000000..c0c9806 --- /dev/null +++ b/examples/kitchen-sink/apps/api/src/__tests__/server.test.ts @@ -0,0 +1,22 @@ +import supertest from "supertest"; +import { createServer } from "../server"; + +describe("server", () => { + it("health check returns 200", async () => { + await supertest(createServer()) + .get("/healthz") + .expect(200) + .then((res) => { + expect(res.body.ok).toBe(true); + }); + }); + + it("message endpoint says hello", async () => { + await supertest(createServer()) + .get("/message/jared") + .expect(200) + .then((res) => { + expect(res.body).toEqual({ message: "hello jared" }); + }); + }); +}); diff --git a/examples/kitchen-sink/apps/api/src/__tests__/tsconfig.json b/examples/kitchen-sink/apps/api/src/__tests__/tsconfig.json new file mode 100644 index 0000000..bf65be6 --- /dev/null +++ b/examples/kitchen-sink/apps/api/src/__tests__/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": [".", "../."] +} diff --git a/examples/kitchen-sink/apps/api/src/index.ts b/examples/kitchen-sink/apps/api/src/index.ts new file mode 100644 index 0000000..5f48625 --- /dev/null +++ b/examples/kitchen-sink/apps/api/src/index.ts @@ -0,0 +1,9 @@ +import { createServer } from "./server"; +import { log } from "logger"; + +const port = process.env.PORT || 5001; +const server = createServer(); + +server.listen(port, () => { + log(`api running on ${port}`); +}); diff --git a/examples/kitchen-sink/apps/api/src/server.ts b/examples/kitchen-sink/apps/api/src/server.ts new file mode 100644 index 0000000..70ccf0b --- /dev/null +++ b/examples/kitchen-sink/apps/api/src/server.ts @@ -0,0 +1,22 @@ +import { json, urlencoded } from "body-parser"; +import express from "express"; +import morgan from "morgan"; +import cors from "cors"; + +export const createServer = () => { + const app = express(); + app + .disable("x-powered-by") + .use(morgan("dev")) + .use(urlencoded({ extended: true })) + .use(json()) + .use(cors()) + .get("/message/:name", (req, res) => { + return res.json({ message: `hello ${req.params.name}` }); + }) + .get("/healthz", (req, res) => { + return res.json({ ok: true }); + }); + + return app; +}; diff --git a/examples/kitchen-sink/apps/api/tsconfig.json b/examples/kitchen-sink/apps/api/tsconfig.json new file mode 100644 index 0000000..74f3de4 --- /dev/null +++ b/examples/kitchen-sink/apps/api/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "lib": ["ES2015"], + "module": "CommonJS", + "outDir": "./dist", + "rootDir": "./src" + }, + "exclude": ["node_modules"], + "extends": "tsconfig/base.json", + "include": ["src"] +} diff --git a/examples/kitchen-sink/apps/blog/.gitignore b/examples/kitchen-sink/apps/blog/.gitignore new file mode 100644 index 0000000..42ec5e4 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/.gitignore @@ -0,0 +1,11 @@ +node_modules + +.cache +.env +.vercel +.output + +build +public/build +api/index.js* +api/_assets* diff --git a/examples/kitchen-sink/apps/blog/README.md b/examples/kitchen-sink/apps/blog/README.md new file mode 100644 index 0000000..944936b --- /dev/null +++ b/examples/kitchen-sink/apps/blog/README.md @@ -0,0 +1,34 @@ +# Welcome to Remix! + +- [Remix Docs](https://remix.run/docs) + +## Deployment + +After having run the `create-remix` command and selected "Vercel" as a deployment target, you only need to [import your Git repository](https://vercel.com/new) into Vercel, and it will be deployed. + +If you'd like to avoid using a Git repository, you can also deploy the directory by running [Vercel CLI](https://vercel.com/cli): + +```sh +npm i -g vercel +vercel +``` + +It is generally recommended to use a Git repository, because future commits will then automatically be deployed by Vercel, through its [Git Integration](https://vercel.com/docs/concepts/git). + +## Development + +To run your Remix app locally, make sure your project's local dependencies are installed: + +```sh +npm install +``` + +Afterwards, start the Remix development server like so: + +```sh +npm run dev +``` + +Open up [http://localhost:3000](http://localhost:3000) and you should be ready to go! + +If you're used to using the `vercel dev` command provided by [Vercel CLI](https://vercel.com/cli) instead, you can also use that, but it's not needed. diff --git a/examples/kitchen-sink/apps/blog/app/entry.client.tsx b/examples/kitchen-sink/apps/blog/app/entry.client.tsx new file mode 100644 index 0000000..8338545 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/app/entry.client.tsx @@ -0,0 +1,22 @@ +import { RemixBrowser } from "@remix-run/react"; +import { startTransition, StrictMode } from "react"; +import { hydrateRoot } from "react-dom/client"; + +function hydrate() { + startTransition(() => { + hydrateRoot( + document, + + + + ); + }); +} + +if (typeof requestIdleCallback === "function") { + requestIdleCallback(hydrate); +} else { + // Safari doesn't support requestIdleCallback + // https://caniuse.com/requestidlecallback + setTimeout(hydrate, 1); +} diff --git a/examples/kitchen-sink/apps/blog/app/entry.server.tsx b/examples/kitchen-sink/apps/blog/app/entry.server.tsx new file mode 100644 index 0000000..5112e09 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/app/entry.server.tsx @@ -0,0 +1,18 @@ +import handleRequest from "@vercel/remix-entry-server"; +import { RemixServer } from "@remix-run/react"; +import type { EntryContext } from "@remix-run/server-runtime"; + +export default function ( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext +) { + const remixServer = ; + return handleRequest( + request, + responseStatusCode, + responseHeaders, + remixServer + ); +} diff --git a/examples/kitchen-sink/apps/blog/app/root.tsx b/examples/kitchen-sink/apps/blog/app/root.tsx new file mode 100644 index 0000000..23a08a8 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/app/root.tsx @@ -0,0 +1,37 @@ +import type { MetaFunction, LinksFunction } from "@remix-run/node"; +import { + Links, + LiveReload, + Meta, + Outlet, + Scripts, + ScrollRestoration, +} from "@remix-run/react"; +import styles from "~/styles.css"; +import { Analytics } from "@vercel/analytics/react"; + +export const meta: MetaFunction = () => ({ + charset: "utf-8", + title: "Blog | Kitchen Sink", + viewport: "width=device-width,initial-scale=1", +}); + +export const links: LinksFunction = () => [{ rel: "stylesheet", href: styles }]; + +export default function App() { + return ( + + + + + + + + + + + + + + ); +} diff --git a/examples/kitchen-sink/apps/blog/app/routes/index.tsx b/examples/kitchen-sink/apps/blog/app/routes/index.tsx new file mode 100644 index 0000000..92dc0cd --- /dev/null +++ b/examples/kitchen-sink/apps/blog/app/routes/index.tsx @@ -0,0 +1,18 @@ +import { CounterButton, NewTabLink } from "ui"; + +export default function Index() { + return ( +
+

+ Blog
+ Kitchen Sink +

+ +

+ Built With{" "} + Turborepo +{" "} + Remix +

+
+ ); +} diff --git a/examples/kitchen-sink/apps/blog/app/styles.css b/examples/kitchen-sink/apps/blog/app/styles.css new file mode 100644 index 0000000..d4b766e --- /dev/null +++ b/examples/kitchen-sink/apps/blog/app/styles.css @@ -0,0 +1,55 @@ +html { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, + Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} + +body { + margin: 0; +} + +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + max-width: 100%; + margin: 0 auto; + padding: 0 16px; + text-align: center; +} + +.title { + font-size: 3rem; + font-weight: 700; + margin: 0; +} + +.title span { + display: inline-block; + background-image: linear-gradient(to right, #3b82f6, #ef4444); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.description { + color: #9ca3af; + font-weight: 500; +} + +.description a { + color: #3b82f6; + text-decoration: none; +} + +.description a:hover { + text-decoration: underline; +} diff --git a/examples/kitchen-sink/apps/blog/package.json b/examples/kitchen-sink/apps/blog/package.json new file mode 100644 index 0000000..c42d201 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/package.json @@ -0,0 +1,32 @@ +{ + "name": "blog", + "version": "0.0.0", + "private": true, + "sideEffects": false, + "scripts": { + "build": "remix build", + "dev": "remix dev" + }, + "dependencies": { + "@remix-run/node": "^1.13.0", + "@remix-run/react": "^1.13.0", + "@remix-run/serve": "^1.13.0", + "@remix-run/server-runtime": "^1.13.0", + "@vercel/analytics": "^0.1.10", + "@vercel/remix-entry-server": "^0.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "ui": "workspace:*" + }, + "devDependencies": { + "@remix-run/dev": "^1.13.0", + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.11", + "eslint": "^8.28.0", + "typescript": "^4.9.3", + "tsconfig": "workspace:*" + }, + "engines": { + "node": ">=14" + } +} diff --git a/examples/kitchen-sink/apps/blog/public/favicon.ico b/examples/kitchen-sink/apps/blog/public/favicon.ico new file mode 100644 index 0000000..8830cf6 Binary files /dev/null and b/examples/kitchen-sink/apps/blog/public/favicon.ico differ diff --git a/examples/kitchen-sink/apps/blog/remix.config.js b/examples/kitchen-sink/apps/blog/remix.config.js new file mode 100644 index 0000000..260b82c --- /dev/null +++ b/examples/kitchen-sink/apps/blog/remix.config.js @@ -0,0 +1,10 @@ +/** + * @type {import('@remix-run/dev').AppConfig} + */ +module.exports = { + ignoredRouteFiles: ["**/.*"], + // appDirectory: "app", + // assetsBuildDirectory: "public/build", + // serverBuildPath: "build/index.js", + // publicPath: "/build/", +}; diff --git a/examples/kitchen-sink/apps/blog/remix.env.d.ts b/examples/kitchen-sink/apps/blog/remix.env.d.ts new file mode 100644 index 0000000..dcf8c45 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/remix.env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/examples/kitchen-sink/apps/blog/server.js b/examples/kitchen-sink/apps/blog/server.js new file mode 100644 index 0000000..4e2a0e0 --- /dev/null +++ b/examples/kitchen-sink/apps/blog/server.js @@ -0,0 +1,4 @@ +import { createRequestHandler } from "@remix-run/vercel"; +import * as build from "@remix-run/dev/server-build"; + +export default createRequestHandler({ build, mode: process.env.NODE_ENV }); diff --git a/examples/kitchen-sink/apps/blog/tsconfig.json b/examples/kitchen-sink/apps/blog/tsconfig.json new file mode 100644 index 0000000..791822c --- /dev/null +++ b/examples/kitchen-sink/apps/blog/tsconfig.json @@ -0,0 +1,20 @@ +{ + "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"], + "compilerOptions": { + "lib": ["dom", "dom.iterable", "ES2019"], + "esModuleInterop": true, + "jsx": "react-jsx", + "moduleResolution": "node", + "resolveJsonModule": true, + "target": "ES2019", + "strict": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true, + "isolatedModules": true + } +} diff --git a/examples/kitchen-sink/apps/storefront/.eslintrc.js b/examples/kitchen-sink/apps/storefront/.eslintrc.js new file mode 100644 index 0000000..c8df607 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["custom"], +}; diff --git a/examples/kitchen-sink/apps/storefront/next-env.d.ts b/examples/kitchen-sink/apps/storefront/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/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/examples/kitchen-sink/apps/storefront/next.config.js b/examples/kitchen-sink/apps/storefront/next.config.js new file mode 100644 index 0000000..da1bb77 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/next.config.js @@ -0,0 +1,3 @@ +module.exports = { + reactStrictMode: true, +}; diff --git a/examples/kitchen-sink/apps/storefront/package.json b/examples/kitchen-sink/apps/storefront/package.json new file mode 100644 index 0000000..08800fd --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/package.json @@ -0,0 +1,28 @@ +{ + "name": "storefront", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "next build", + "clean": "rm -rf .next", + "dev": "next dev -p 3002", + "lint": "next lint", + "start": "next start " + }, + "dependencies": { + "logger": "workspace:*", + "next": "latest", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "ui": "workspace:*" + }, + "devDependencies": { + "@types/jest": "^26.0.22", + "@types/node": "^17.0.12", + "@types/react": "^17.0.13", + "@types/react-dom": "^17.0.8", + "eslint-config-custom": "workspace:*", + "tsconfig": "workspace:*", + "typescript": "^4.8.3" + } +} diff --git a/examples/kitchen-sink/apps/storefront/public/favicon.ico b/examples/kitchen-sink/apps/storefront/public/favicon.ico new file mode 100644 index 0000000..af98450 Binary files /dev/null and b/examples/kitchen-sink/apps/storefront/public/favicon.ico differ diff --git a/examples/kitchen-sink/apps/storefront/src/pages/_app.tsx b/examples/kitchen-sink/apps/storefront/src/pages/_app.tsx new file mode 100644 index 0000000..7b312a7 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/src/pages/_app.tsx @@ -0,0 +1,6 @@ +import type { AppProps } from "next/app"; +import "../styles.css"; + +export default function MyApp({ Component, pageProps }: AppProps) { + return ; +} diff --git a/examples/kitchen-sink/apps/storefront/src/pages/index.tsx b/examples/kitchen-sink/apps/storefront/src/pages/index.tsx new file mode 100644 index 0000000..7adef55 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/src/pages/index.tsx @@ -0,0 +1,24 @@ +import { log } from "logger"; +import Head from "next/head"; +import { CounterButton, NewTabLink } from "ui"; + +export default function Store() { + log("Hey! This is Home."); + return ( +
+ + Store | Kitchen Sink + +

+ Store
+ Kitchen Sink +

+ +

+ Built With{" "} + Turborepo +{" "} + Next.js +

+
+ ); +} diff --git a/examples/kitchen-sink/apps/storefront/src/styles.css b/examples/kitchen-sink/apps/storefront/src/styles.css new file mode 100644 index 0000000..d4b766e --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/src/styles.css @@ -0,0 +1,55 @@ +html { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, + Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} + +body { + margin: 0; +} + +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + max-width: 100%; + margin: 0 auto; + padding: 0 16px; + text-align: center; +} + +.title { + font-size: 3rem; + font-weight: 700; + margin: 0; +} + +.title span { + display: inline-block; + background-image: linear-gradient(to right, #3b82f6, #ef4444); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.description { + color: #9ca3af; + font-weight: 500; +} + +.description a { + color: #3b82f6; + text-decoration: none; +} + +.description a:hover { + text-decoration: underline; +} diff --git a/examples/kitchen-sink/apps/storefront/tsconfig.json b/examples/kitchen-sink/apps/storefront/tsconfig.json new file mode 100644 index 0000000..fcbeaa7 --- /dev/null +++ b/examples/kitchen-sink/apps/storefront/tsconfig.json @@ -0,0 +1,9 @@ +{ + "exclude": ["node_modules"], + "extends": "tsconfig/nextjs.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "include": ["src", "next-env.d.ts"] +} -- cgit v1.2.3-70-g09d2