Skip to content

Commit

Permalink
chore(express): init express package
Browse files Browse the repository at this point in the history
  • Loading branch information
ecyrbe committed Jan 31, 2023
1 parent aa6fedb commit 92dbcf1
Show file tree
Hide file tree
Showing 75 changed files with 8,633 additions and 101 deletions.
10 changes: 10 additions & 0 deletions examples/next-turbo/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
root: true,
// This tells ESLint to load the config from the package `eslint-config-custom`
extends: ["custom"],
settings: {
next: {
rootDir: ["apps/*/"],
},
},
};
33 changes: 33 additions & 0 deletions examples/next-turbo/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
node_modules
.pnp
.pnp.js

# testing
coverage

# next.js
.next/
out/
build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
.env.local
.env.development.local
.env.test.local
.env.production.local

# turbo
.turbo
73 changes: 73 additions & 0 deletions examples/next-turbo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Turborepo starter

This is an official pnpm starter turborepo.

## What's inside?

This turborepo uses [pnpm](https://pnpm.io) as a package manager. It includes the following packages/apps:

### Apps and Packages

- `docs`: a [Next.js](https://nextjs.org) app
- `web`: another [Next.js](https://nextjs.org) app
- `ui`: a stub React component library shared by both `web` and `docs` applications
- `eslint-config-custom`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
- `tsconfig`: `tsconfig.json`s used throughout the monorepo

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:

```
cd my-turborepo
pnpm run build
```

### Develop

To develop all apps and packages, run the following command:

```
cd my-turborepo
pnpm run dev
```

### Remote Caching

Turborepo can use a technique known as [Remote Caching](https://turborepo.org/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.

By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands:

```
cd my-turborepo
pnpm dlx turbo login
```

This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).

Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your turborepo:

```
pnpm dlx turbo link
```

## Useful Links

Learn more about the power of Turborepo:

- [Pipelines](https://turborepo.org/docs/core-concepts/pipelines)
- [Caching](https://turborepo.org/docs/core-concepts/caching)
- [Remote Caching](https://turborepo.org/docs/core-concepts/remote-caching)
- [Scoped Tasks](https://turborepo.org/docs/core-concepts/scopes)
- [Configuration Options](https://turborepo.org/docs/reference/configuration)
- [CLI Usage](https://turborepo.org/docs/reference/command-line-reference)
4 changes: 4 additions & 0 deletions examples/next-turbo/apps/docs/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: ["custom"],
};
30 changes: 30 additions & 0 deletions examples/next-turbo/apps/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Getting Started

First, run the development server:

```bash
yarn dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.

[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.

The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.

## 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_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
5 changes: 5 additions & 0 deletions examples/next-turbo/apps/docs/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
6 changes: 6 additions & 0 deletions examples/next-turbo/apps/docs/next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
reactStrictMode: true,
experimental: {
transpilePackages: ["ui"],
},
};
27 changes: 27 additions & 0 deletions examples/next-turbo/apps/docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "docs",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "next dev --port 3001",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"next": "12.3.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"ui": "workspace:*"
},
"devDependencies": {
"@babel/core": "^7.0.0",
"eslint-config-custom": "workspace:*",
"eslint": "7.32.0",
"tsconfig": "workspace:*",
"@types/node": "^17.0.12",
"@types/react": "^18.0.22",
"@types/react-dom": "^18.0.7",
"typescript": "^4.5.3"
}
}
10 changes: 10 additions & 0 deletions examples/next-turbo/apps/docs/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Button } from "ui";

export default function Docs() {
return (
<div>
<h1>Docs</h1>
<Button />
</div>
);
}
5 changes: 5 additions & 0 deletions examples/next-turbo/apps/docs/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"extends": "tsconfig/nextjs.json",
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}
4 changes: 4 additions & 0 deletions examples/next-turbo/apps/web/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: ["custom"],
};
30 changes: 30 additions & 0 deletions examples/next-turbo/apps/web/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Getting Started

First, run the development server:

```bash
yarn dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.

[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.

The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.

## 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_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
13 changes: 13 additions & 0 deletions examples/next-turbo/apps/web/common/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { makeApi } from "@zodios/core";
import z from "zod";

export const api = makeApi([
{
method: "get",
path: "/health",
alias: "health",
response: z.object({
status: z.literal("ok"),
}),
},
]);
5 changes: 5 additions & 0 deletions examples/next-turbo/apps/web/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
6 changes: 6 additions & 0 deletions examples/next-turbo/apps/web/next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
reactStrictMode: true,
experimental: {
transpilePackages: ["ui"],
},
};
35 changes: 35 additions & 0 deletions examples/next-turbo/apps/web/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "web",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@tanstack/react-query": "^4.13.0",
"@zodios/core": "^10.4.3",
"@zodios/express": "^10.4.2",
"@zodios/react": "^10.3.3",
"axios": "^1.1.3",
"express": "^4.18.2",
"next": "12.3.2-canary.40",
"react": "18.2.0",
"react-dom": "18.2.0",
"ui": "workspace:0.0.0",
"zod": "^3.19.1"
},
"devDependencies": {
"@babel/core": "^7.19.6",
"@types/express": "^4.17.14",
"@types/node": "^17.0.45",
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"eslint": "7.32.0",
"eslint-config-custom": "workspace:0.0.0",
"tsconfig": "workspace:0.0.0",
"typescript": "^4.8.4"
}
}
14 changes: 14 additions & 0 deletions examples/next-turbo/apps/web/pages/_app.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { AppProps } from "next/app";
import { QueryClientProvider, QueryClient } from "@tanstack/react-query";

const queryClient = new QueryClient();

function MyApp({ Component, pageProps }: AppProps) {
return (
<QueryClientProvider client={queryClient}>
<Component {...pageProps} />
</QueryClientProvider>
);
}

export default MyApp;
3 changes: 3 additions & 0 deletions examples/next-turbo/apps/web/pages/api/[...zodios].ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { app } from "../../server/routers/app";

export default app;
23 changes: 23 additions & 0 deletions examples/next-turbo/apps/web/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { Button } from "ui";
import { api } from "../common/api";
import { Zodios } from "@zodios/core";
import { ZodiosHooks } from "@zodios/react";

const zodios = new Zodios("/api", api);
const zodiosHooks = new ZodiosHooks("health", zodios);

export default function Web() {
const { data: health, isLoading } = zodiosHooks.useHealth();
return (
<div>
<h1>Health Status</h1>
{isLoading ? (
<p>Loading...</p>
) : (
<p>
<strong>Status:</strong> {health?.status}
</p>
)}
</div>
);
}
11 changes: 11 additions & 0 deletions examples/next-turbo/apps/web/server/context.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { zodiosContext } from "@zodios/express";
import z from "zod";

export const ctx = zodiosContext(
z.object({
user: z.object({
id: z.string(),
name: z.string(),
}),
})
);
10 changes: 10 additions & 0 deletions examples/next-turbo/apps/web/server/routers/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ctx } from "../context";
import { api } from "../../common/api";

export const app = ctx.nextApp();
const router = ctx.router(api);
app.use("/api", router);

router.get("/health", (req, res) => {
res.status(200).json({ status: "ok" });
});
5 changes: 5 additions & 0 deletions examples/next-turbo/apps/web/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"extends": "tsconfig/nextjs.json",
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}

0 comments on commit 92dbcf1

Please sign in to comment.