Merge pull request #48 from datopian/mono-repo-2
Initial structure for monorepo
This commit is contained in:
8
.github/workflows/jest.yml
vendored
8
.github/workflows/jest.yml
vendored
@@ -6,6 +6,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Install modules
|
- name: Install modules
|
||||||
run: yarn
|
run: |
|
||||||
|
cd packages/portal
|
||||||
|
yarn
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: yarn test -u
|
run: |
|
||||||
|
cd packages/portal
|
||||||
|
yarn test -u
|
||||||
|
|||||||
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
@@ -10,6 +10,7 @@ jobs:
|
|||||||
- name: Cypress run
|
- name: Cypress run
|
||||||
uses: cypress-io/github-action@v1
|
uses: cypress-io/github-action@v1
|
||||||
with:
|
with:
|
||||||
|
working-directory: packages/portal
|
||||||
browser: chrome
|
browser: chrome
|
||||||
build: yarn run build
|
build: yarn run build
|
||||||
start: yarn start
|
start: yarn start
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -31,3 +31,7 @@ yarn-error.log*
|
|||||||
.env.production.local
|
.env.production.local
|
||||||
|
|
||||||
pages/App.css
|
pages/App.css
|
||||||
|
|
||||||
|
# Monorepo packages Node Modules
|
||||||
|
packages/portal/node_modules
|
||||||
|
packages/create-portal-app/node_modules
|
||||||
7
lerna.json
Normal file
7
lerna.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
"packages/*"
|
||||||
|
],
|
||||||
|
"npmClient": "yarn",
|
||||||
|
"version": "0.0.0"
|
||||||
|
}
|
||||||
79
package.json
79
package.json
@@ -1,82 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "frontend-v3",
|
"name": "root",
|
||||||
"version": "0.1.0",
|
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
|
||||||
"dev": "next dev",
|
|
||||||
"build": "next build",
|
|
||||||
"start": "next start",
|
|
||||||
"test": "jest",
|
|
||||||
"test:watch": "jest --watch",
|
|
||||||
"test:coverage": "jest --coverage",
|
|
||||||
"cypress:open": "cypress open",
|
|
||||||
"cypress:ci": "cypress run --config video=false",
|
|
||||||
"e2e": "cypress run",
|
|
||||||
"format": "prettier --single-quote --write .",
|
|
||||||
"pre-commit": "yarn lint:fix && prettier --single-quote --write",
|
|
||||||
"lint": "eslint . --ext .ts,.tsx",
|
|
||||||
"lint:fix": "yarn lint --fix"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@apollo/client": "^3.0.2",
|
|
||||||
"@apollo/react-hooks": "^3.1.5",
|
|
||||||
"@fullhuman/postcss-purgecss": "^2.3.0",
|
|
||||||
"apollo-cache-inmemory": "^1.6.6",
|
|
||||||
"apollo-client": "^2.6.10",
|
|
||||||
"apollo-link": "^1.2.14",
|
|
||||||
"apollo-link-rest": "0.7.3",
|
|
||||||
"apollo-server-testing": "^2.16.0",
|
|
||||||
"bytes": "^3.1.0",
|
|
||||||
"enzyme": "^3.11.0",
|
|
||||||
"enzyme-adapter-react-15": "^1.4.1",
|
|
||||||
"graphql": "^15.1.0",
|
|
||||||
"graphql-anywhere": "^4.2.7",
|
|
||||||
"graphql-tag": "^2.10.3",
|
|
||||||
"html-react-parser": "^0.13.0",
|
|
||||||
"markdown-it": "^11.0.0",
|
|
||||||
"next": "9.4.2",
|
|
||||||
"qs": "^6.9.4",
|
|
||||||
"react": "^16.13.1",
|
|
||||||
"react-dom": "^16.13.1",
|
|
||||||
"react-router": "^5.2.0",
|
|
||||||
"slugify": "^1.4.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@testing-library/jest-dom": "^5.8.0",
|
"lerna": "^3.22.1"
|
||||||
"@testing-library/react": "^10.0.4",
|
|
||||||
"@types/jest": "^25.2.3",
|
|
||||||
"@types/react": "^16.9.35",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^3.8.0",
|
|
||||||
"@typescript-eslint/parser": "^3.8.0",
|
|
||||||
"autoprefixer": "^9.8.6",
|
|
||||||
"babel-jest": "^26.0.1",
|
|
||||||
"babel-plugin-graphql-tag": "^2.5.0",
|
|
||||||
"cypress": "^4.8.0",
|
|
||||||
"eslint": "^7.6.0",
|
|
||||||
"eslint-config-prettier": "^6.11.0",
|
|
||||||
"eslint-plugin-jsx-a11y": "^6.3.1",
|
|
||||||
"eslint-plugin-prettier": "^3.1.4",
|
|
||||||
"eslint-plugin-react": "^7.20.5",
|
|
||||||
"eslint-plugin-react-hooks": "^4.0.8",
|
|
||||||
"husky": ">=4",
|
|
||||||
"jest": "^26.1.0",
|
|
||||||
"lint-staged": ">=10",
|
|
||||||
"nock": "^12.0.3",
|
|
||||||
"npm-run-all": "^4.1.5",
|
|
||||||
"postcss-cli": "^7.1.1",
|
|
||||||
"postcss-import": "^12.0.1",
|
|
||||||
"postcss-preset-env": "6.7.0",
|
|
||||||
"prettier": "^2.0.5",
|
|
||||||
"react-test-renderer": "^16.13.1",
|
|
||||||
"tailwindcss": "^1.4.6",
|
|
||||||
"typescript": "^3.9.3"
|
|
||||||
},
|
|
||||||
"husky": {
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "lint-staged"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"*.{ts,tsx,js,jsx,css,html,md}": "yarn pre-commit"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,20 +15,20 @@ Live DEMO: https://portal.datopian1.now.sh
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* 🗺️ Unified sites: present data and content in one seamless site, pulling datasets from a DMS (e.g. CKAN) and content from a CMS (e.g. wordpress) with a common internal API.
|
- 🗺️ Unified sites: present data and content in one seamless site, pulling datasets from a DMS (e.g. CKAN) and content from a CMS (e.g. wordpress) with a common internal API.
|
||||||
* 👩💻 Developer friendly: built with familiar frontend tech Javascript, React etc
|
- 👩💻 Developer friendly: built with familiar frontend tech Javascript, React etc
|
||||||
* 🔋 Batteries included: Full set of portal components out of the box e.g. catalog search, dataset showcase, blog etc.
|
- 🔋 Batteries included: Full set of portal components out of the box e.g. catalog search, dataset showcase, blog etc.
|
||||||
* 🎨 Easy to theme and customize: installable themes, use standard CSS and React+CSS tooling. Add new routes quickly.
|
- 🎨 Easy to theme and customize: installable themes, use standard CSS and React+CSS tooling. Add new routes quickly.
|
||||||
* 🧱E Extensible: quickly extend and develop/import your own React components
|
- 🧱E Extensible: quickly extend and develop/import your own React components
|
||||||
* 📝 Well documented: full set of documentation plus the documentation of NextJS and Apollo.
|
- 📝 Well documented: full set of documentation plus the documentation of NextJS and Apollo.
|
||||||
|
|
||||||
### For developers
|
### For developers
|
||||||
|
|
||||||
* 🏗 Build with modern, familiar frontend tech such as Javascript and React.
|
- 🏗 Build with modern, familiar frontend tech such as Javascript and React.
|
||||||
* 🚀 NextJS framework: so everything in NextJS for free React, SSR, static site generation, huge number of examples and integrations etc.
|
- 🚀 NextJS framework: so everything in NextJS for free React, SSR, static site generation, huge number of examples and integrations etc.
|
||||||
* SSR => unlimited number of pages, SEO etc whilst still using React.
|
- SSR => unlimited number of pages, SEO etc whilst still using React.
|
||||||
* Static Site Generation (SSG) (good for small sites) => ultra-simple deployment, great performance and lighthouse scores etc
|
- Static Site Generation (SSG) (good for small sites) => ultra-simple deployment, great performance and lighthouse scores etc
|
||||||
* 📋 Typescript support
|
- 📋 Typescript support
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@@ -240,9 +240,9 @@ yarn run e2e
|
|||||||
|
|
||||||
### Architecture
|
### Architecture
|
||||||
|
|
||||||
* Language: Javascript
|
- Language: Javascript
|
||||||
* Framework: NextJS - https://nextjs.org/
|
- Framework: NextJS - https://nextjs.org/
|
||||||
* Data layer API: GraphQL using Apollo. So controllers access data using GraphQL “gatsby like”
|
- Data layer API: GraphQL using Apollo. So controllers access data using GraphQL “gatsby like”
|
||||||
|
|
||||||
### Key Pages
|
### Key Pages
|
||||||
|
|
||||||
87
packages/portal/package.json
Normal file
87
packages/portal/package.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"name": "portal-main",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"homepage": "https://github.com/datopian/portal#readme",
|
||||||
|
"directories": {
|
||||||
|
"test": "__tests__"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start",
|
||||||
|
"test": "jest",
|
||||||
|
"test:watch": "jest --watch",
|
||||||
|
"test:coverage": "jest --coverage",
|
||||||
|
"cypress:open": "cypress open",
|
||||||
|
"cypress:ci": "cypress run --config video=false",
|
||||||
|
"e2e": "cypress run",
|
||||||
|
"format": "prettier --single-quote --write .",
|
||||||
|
"pre-commit": "yarn lint:fix && prettier --single-quote --write",
|
||||||
|
"lint": "eslint . --ext .ts,.tsx",
|
||||||
|
"lint:fix": "yarn lint --fix"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@apollo/client": "^3.0.2",
|
||||||
|
"@apollo/react-hooks": "^3.1.5",
|
||||||
|
"@fullhuman/postcss-purgecss": "^2.3.0",
|
||||||
|
"apollo-cache-inmemory": "^1.6.6",
|
||||||
|
"apollo-client": "^2.6.10",
|
||||||
|
"apollo-link": "^1.2.14",
|
||||||
|
"apollo-link-rest": "0.7.3",
|
||||||
|
"apollo-server-testing": "^2.16.0",
|
||||||
|
"bytes": "^3.1.0",
|
||||||
|
"enzyme": "^3.11.0",
|
||||||
|
"enzyme-adapter-react-15": "^1.4.1",
|
||||||
|
"graphql": "^15.1.0",
|
||||||
|
"graphql-anywhere": "^4.2.7",
|
||||||
|
"graphql-tag": "^2.10.3",
|
||||||
|
"html-react-parser": "^0.13.0",
|
||||||
|
"markdown-it": "^11.0.0",
|
||||||
|
"next": "9.4.2",
|
||||||
|
"qs": "^6.9.4",
|
||||||
|
"react": "^16.13.1",
|
||||||
|
"react-dom": "^16.13.1",
|
||||||
|
"react-router": "^5.2.0",
|
||||||
|
"slugify": "^1.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@testing-library/jest-dom": "^5.8.0",
|
||||||
|
"@testing-library/react": "^10.0.4",
|
||||||
|
"@types/jest": "^25.2.3",
|
||||||
|
"@types/react": "^16.9.35",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^3.8.0",
|
||||||
|
"@typescript-eslint/parser": "^3.8.0",
|
||||||
|
"autoprefixer": "^9.8.6",
|
||||||
|
"babel-jest": "^26.0.1",
|
||||||
|
"babel-plugin-graphql-tag": "^2.5.0",
|
||||||
|
"cypress": "^4.8.0",
|
||||||
|
"eslint": "^7.6.0",
|
||||||
|
"eslint-config-prettier": "^6.11.0",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.3.1",
|
||||||
|
"eslint-plugin-prettier": "^3.1.4",
|
||||||
|
"eslint-plugin-react": "^7.20.5",
|
||||||
|
"eslint-plugin-react-hooks": "^4.0.8",
|
||||||
|
"husky": ">=4",
|
||||||
|
"jest": "^26.1.0",
|
||||||
|
"lerna": "^3.22.1",
|
||||||
|
"lint-staged": ">=10",
|
||||||
|
"nock": "^12.0.3",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
|
"postcss-cli": "^7.1.1",
|
||||||
|
"postcss-import": "^12.0.1",
|
||||||
|
"postcss-preset-env": "6.7.0",
|
||||||
|
"prettier": "^2.0.5",
|
||||||
|
"react-test-renderer": "^16.13.1",
|
||||||
|
"tailwindcss": "^1.4.6",
|
||||||
|
"typescript": "^3.9.3"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "lint-staged"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.{ts,tsx,js,jsx,css,html,md}": "yarn pre-commit"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 408 B |
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user