Skip to content

Commit

Permalink
feat(insights): create a new insights application
Browse files Browse the repository at this point in the history
  • Loading branch information
mhevery committed Jun 21, 2023
1 parent a18a156 commit c079c8b
Show file tree
Hide file tree
Showing 66 changed files with 7,084 additions and 184 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,6 @@ tsdoc-metadata.json
.yarn/*
!.yarn/releases
.pnpm-store/*

# Local Netlify folder
.netlify
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ packages/docs/server
packages/docs/src/routes/api
packages/docs/**/*.md
packages/docs/**/*.mdx
packages/insights/drizzle
packages/insights/.netlify
packages/insights/scripts
packages/qwik-labs/lib-types

# TODO: Figure out why this doesn't pass in CI
packages/qwik/src/core/props/props.ts
Expand Down
1 change: 1 addition & 0 deletions packages/docs/.env
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
VITE_ALGOLIA_APP_ID=X0ISHY6M1I
VITE_ALGOLIA_SEARCH_KEY=33e17ca2559e66c62577ab1d6c195a36
VITE_ALGOLIA_INDEX=qwik
PUBLIC_QWIK_INSIGHTS_KEY=221smyuj5gl
1 change: 1 addition & 0 deletions packages/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"@builder.io/partytown": "0.8.0",
"@builder.io/qwik": "github:BuilderIo/qwik-build#main",
"@builder.io/qwik-city": "github:BuilderIo/qwik-city-build#main",
"@builder.io/qwik-labs": "github:BuilderIo/qwik-labs-build#main",
"@builder.io/qwik-react": "0.5.0",
"@builder.io/sdk-qwik": "^0.4.1",
"@docsearch/css": "3.3.4",
Expand Down
9 changes: 9 additions & 0 deletions packages/docs/src/root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { GlobalStore, type SiteStore } from './context';
import './global.css';

import { BUILDER_PUBLIC_API_KEY } from './constants';
import { Insights } from '@builder.io/qwik-labs';

export default component$(() => {
const store = useStore<SiteStore>({
Expand All @@ -21,7 +22,15 @@ export default component$(() => {
<head>
<meta charSet="utf-8" />
<RouterHead />

Check failure on line 24 in packages/docs/src/root.tsx

View workflow job for this annotation

GitHub Actions / Build Package

'</' expected.
<<<<<<< HEAD

Check failure on line 25 in packages/docs/src/root.tsx

View workflow job for this annotation

GitHub Actions / Build Package

Merge conflict marker encountered.
<ServiceWorkerRegister />
=======

Check failure on line 27 in packages/docs/src/root.tsx

View workflow job for this annotation

GitHub Actions / Build Package

Merge conflict marker encountered.
{/* <script dangerouslySetInnerHTML={`(${collectSymbols})()`} /> */}
<Insights
publicApiKey={import.meta.env.PUBLIC_QWIK_INSIGHTS_KEY}
postUrl={'/api/v1/${publicApiKey}/post/'}
/>
>>>>>>> a932a05e5 (feat(insights): create a new insights application)

Check failure on line 33 in packages/docs/src/root.tsx

View workflow job for this annotation

GitHub Actions / Build Package

Merge conflict marker encountered.
</head>

Check failure on line 34 in packages/docs/src/root.tsx

View workflow job for this annotation

GitHub Actions / Build Package

Declaration or statement expected.
<body
class={{
Expand Down
2 changes: 1 addition & 1 deletion packages/docs/src/routes/docs/integrations/react/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -629,7 +629,7 @@ It's also a great way to enjoy the React ecosystem, like [threejs](https://githu
### Build wide islands, not leaf nodes

For example, if you need to use several MUI components, to build a list, dont qwikify each individual MUI component, instead, build the whole list as a single qwikified React component.
For example, if you need to use several MUI components, to build a list, don't qwikify each individual MUI component, instead, build the whole list as a single qwikified React component.

#### GOOD: Wide island

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export const Cmp = component$(() => {
npm run qwik add styled-vanilla-extract
```

> **How about emotion or other CSS-in-JS libs?** While extremely popular, emotion and other CSS-in-JS libs are not the best choice for Qwik. [They are not optimized for runtime performance and they dont have a good SSR streaming support](https://dev.to/srmagura/why-were-breaking-up-wiht-css-in-js-4g9b), leading to a degraded server and client performance.
> **How about emotion or other CSS-in-JS libs?** While extremely popular, emotion and other CSS-in-JS libs are not the best choice for Qwik. [They are not optimized for runtime performance and they don't have a good SSR streaming support](https://dev.to/srmagura/why-were-breaking-up-wiht-css-in-js-4g9b), leading to a degraded server and client performance.
## Styled-components

Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-plugin-qwik/file.tsx
Original file line number Diff line number Diff line change
@@ -1 +1 @@
// This file is important for test, please dont remove.
// This file is important for test, please don't remove.
1 change: 1 addition & 0 deletions packages/insights/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PUBLIC_QWIK_INSIGHTS_KEY=mtfsa457ee
2 changes: 0 additions & 2 deletions packages/insights/.env.local

This file was deleted.

38 changes: 38 additions & 0 deletions packages/insights/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
**/*.log
**/.DS_Store
*.
.vscode/settings.json
.history
.yarn
bazel-*
bazel-bin
bazel-out
bazel-qwik
bazel-testlogs
dist
dist-dev
lib
lib-types
etc
external
node_modules
temp
tsc-out
tsdoc-metadata.json
target
output
rollup.config.js
build
.cache
.vscode
.rollup.cache
dist
tsconfig.tsbuildinfo
vite.config.ts
*.spec.tsx
*.spec.ts
.netlify
pnpm-lock.yaml
package-lock.json
yarn.lock
server
42 changes: 42 additions & 0 deletions packages/insights/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
module.exports = {
root: true,
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:qwik/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./tsconfig.json'],
ecmaVersion: 2021,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
plugins: ['@typescript-eslint'],
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-empty-interface': 'off',
'@typescript-eslint/no-namespace': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-this-alias': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'prefer-spread': 'off',
'no-case-declarations': 'off',
'no-console': 'off',
'@typescript-eslint/no-unused-vars': ['error'],
'@typescript-eslint/consistent-type-imports': 'warn',
'@typescript-eslint/no-unnecessary-condition': 'warn',
},
};
42 changes: 42 additions & 0 deletions packages/insights/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Build
/dist
/lib
/lib-types
/server

# Development
node_modules
*.local

# Cache
.cache
.mf
.rollup.cache
tsconfig.tsbuildinfo

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Editor
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Yarn
.yarn/*
!.yarn/releases

# Netlify
.netlify
1 change: 1 addition & 0 deletions packages/insights/.node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
18.11
1 change: 1 addition & 0 deletions packages/insights/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
40 changes: 40 additions & 0 deletions packages/insights/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
**/*.log
**/.DS_Store
*.
.vscode/settings.json
.history
.yarn
.netlify
bazel-*
bazel-bin
bazel-out
bazel-qwik
bazel-testlogs
dist
dist-dev
lib
lib-types
etc
external
node_modules
temp
tsc-out
tsdoc-metadata.json
target
output
rollup.config.js
build
.cache
.vscode
.rollup.cache
dist
tsconfig.tsbuildinfo
vite.config.ts
*.spec.tsx
*.spec.ts
.netlify
pnpm-lock.yaml
package-lock.json
yarn.lock
server
drizzle
4 changes: 4 additions & 0 deletions packages/insights/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["dbaeumer.vscode-eslint", "unifiedjs.vscode-mdx"],
"unwantedRecommendations": []
}
130 changes: 130 additions & 0 deletions packages/insights/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Qwik City App ⚡️

- [Qwik Docs](https://qwik.builder.io/)
- [Discord](https://qwik.builder.io/chat)
- [Qwik GitHub](https://github.com/BuilderIO/qwik)
- [@QwikDev](https://twitter.com/QwikDev)
- [Vite](https://vitejs.dev/)

---

## Project Structure

This project is using Qwik with [QwikCity](https://qwik.builder.io/qwikcity/overview/). QwikCity is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.

Inside your project, you'll see the following directory structure:

```
├── public/
│ └── ...
└── src/
├── components/
│ └── ...
└── routes/
└── ...
```

- `src/routes`: Provides the directory based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.builder.io/qwikcity/routing/overview/) for more info.

- `src/components`: Recommended directory for components.

- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info.

## Add Integrations and deployment

Use the `pnpm qwik add` command to add additional integrations. Some examples of integrations include: Cloudflare, Netlify or Express server, and the [Static Site Generator (SSG)](https://qwik.builder.io/qwikcity/guides/static-site-generation/).

```shell
pnpm qwik add # or `yarn qwik add`
```

## Development

Development mode uses [Vite's development server](https://vitejs.dev/). During development, the `dev` command will server-side render (SSR) the output.

```shell
npm start # or `yarn start`
```

> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build.
## Preview

The preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to locally preview a production build, and it should not be used as a production server.

```shell
pnpm preview # or `yarn preview`
```

## Production

The production build will generate client and server modules by running both client and server build commands. Additionally, the build command will use Typescript to run a type check on the source code.

```shell
pnpm build # or `yarn build`
```

## Netlify

This starter site is configured to deploy to [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/), which means it will be rendered at an edge location near to your users.

### Local development

The [Netlify CLI](https://docs.netlify.com/cli/get-started/) can be used to preview a production build locally. To do so: First build your site, then to start a local server, run:

1. Install Netlify CLI globally `npm i -g netlify-cli`.
2. Build your site with both ssr and static `pnpm build`.
3. Start a local server with `pnpm serve`.
In this project, `pnpm serve` uses the `netlify dev` command to spin up a server that can handle Netlify's Edge Functions locally.
4. Visit [http://localhost:8888/](http://localhost:8888/) to check out your site.

### Edge Functions Declarations

[Netlify Edge Functions declarations](https://docs.netlify.com/edge-functions/declarations/)
can be configured to run on specific URL patterns. Each edge function declaration associates
one site path pattern with one function to execute on requests that match the path. A single request can execute a chain of edge functions from a series of declarations. A single edge function can be associated with multiple paths across various declarations.

This is useful to determine if a page response should be Server-Side Rendered (SSR) or
if the response should use a static-site generated (SSG) `index.html` file instead.

By default, the Netlify Edge adaptor will generate a `.netlify/edge-middleware/manifest.json` file, which is used by the Netlify deployment to determine which paths should, and should not, use edge functions.

To override the generated manifest, you can [add a declaration](https://docs.netlify.com/edge-functions/declarations/#add-a-declaration) to the `netlify.toml` using the `[[edge_functions]]` config. For example:

```toml
[[edge_functions]]
path = "/admin"
function = "auth"
```

### Addition Adapter Options

Netlify-specific option fields that can be passed to the adapter options:

- `excludedPath` this option accepts a `string` glob pattern that represents which path pattern should not go through the generated Edge Functions.

### Deployments

You can [deploy your site to Netlify](https://docs.netlify.com/site-deploys/create-deploys/) either via a Git provider integration or through the Netlify CLI. This starter site includes a `netlify.toml` file to configure your build for deployment.

#### Deploying via Git

Once your site has been pushed to your Git provider, you can either link it [in the Netlify UI](https://app.netlify.com/start) or use the CLI. To link your site to a Git provider from the Netlify CLI, run the command:

```shell
netlify link
```

This sets up [continuous deployment](https://docs.netlify.com/site-deploys/create-deploys/#deploy-with-git) for your site's repo. Whenever you push new commits to your repo, Netlify starts the build process..

#### Deploying manually via the CLI

If you wish to deploy from the CLI rather than using Git, you can use the command:

```shell
netlify deploy --build
```

You must use the `--build` flag whenever you deploy. This ensures that the Edge Functions that this starter site relies on are generated and available when you deploy your site.

Add `--prod` flag to deploy to production.

0 comments on commit c079c8b

Please sign in to comment.