Skip to content

Commit

Permalink
feat: Base ReactJS template (no UI library) (#2)
Browse files Browse the repository at this point in the history
* chore: Create base react project with pnpm

* ci(test): Add playwright to the project

* feat(deps): Configure prettier support

* feat(deps): Configure eslint

* docs: Add pull requests template

* ci: Add tagging pipeline

* ci: Add integration pipeline

* chore: Track missing version script

* docs: Update readme file

* feat(deps): Configure react router dom

* chore: Add support for aliases

* refactor: Import pages from barrel file

* build: Create Dockerfile

* build: Create release pipeline

* feat: Add environment variables support

* feat(deps): Add singleton axios instance

* feat(deps): Configure TanStack Query

* chore(deps): Bump dependencies

* chore: Add tests commands

* feat(deps): Add TanStack Query developer tools

* chore: Create empty types folder

* refactor: Update version script
  • Loading branch information
PedroChaparro authored Oct 19, 2023
1 parent 5483cad commit 68717c5
Show file tree
Hide file tree
Showing 37 changed files with 2,549 additions and 674 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.github
e2e
node_modules
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_API_BASE_URL = http://localhost:8080
23 changes: 23 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react-hooks/recommended',
"prettier"
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" }
]
},
}
10 changes: 10 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Includes 📋

<!-- What does this PR includes? Use bulleted list. -->

## Related Issues 🔎

<!-- What issues does this PR fix or reference? You may use "Closes #<issue number>" to automatically close the issue when this PR is merged. -->

<!-- ## Notes 📝 -->
<!-- Additional notes or implementation details. -->
176 changes: 176 additions & 0 deletions .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
name: Integration

on:
pull_request:
branches:
- dev

jobs:
build:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.9.0
run_install: false

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install

- name: Build
run: pnpm build

code-checks:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.9.0
run_install: false

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install

- name: Linter
run: pnpm lint:check

- name: Format
run: pnpm format:check

chromium-tests:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3

# - name: Setup docker environment
# run: docker-compose up -d

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.9.0
run_install: false

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Get installed playwright version
id: playwright-version
run: |
echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@playwright/test'])")" >> $GITHUB_ENV
- name: Cache playwright browsers binaries
uses: actions/cache@v3
id: playwright-cache
with:
path: |
~/.cache/ms-playwright/chromium-*
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-chromium

- name: Install Playwright browser
run: pnpx playwright install --with-deps chromium
if: steps.playwright-cache.outputs.cache-hit != 'true'

- name: Install dependencies
run: pnpm install

- name: Run tests
run:
pnpm test:run-chromium

firefox-tests:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3

# - name: Setup docker environment
# run: docker-compose up -d

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.9.0
run_install: false

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Get installed playwright version
id: playwright-version
run: |
echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@playwright/test'])")" >> $GITHUB_ENV
- name: Cache playwright browsers binaries
uses: actions/cache@v3
id: playwright-cache
with:
path: |
~/.cache/ms-playwright/firefox-*
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-firefox

- name: Install Playwright browser
run: pnpx playwright install --with-deps firefox
if: steps.playwright-cache.outputs.cache-hit != 'true'

- name: Install dependencies
run: pnpm install

- name: Run tests
run:
pnpm test:run-firefox
73 changes: 73 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Release

on:
push:
branches:
- main

jobs:
version:
runs-on: ubuntu-22.04
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v3

- name: Install jq
run: sudo apt install jq -y

- name: Get latest version
id: version
run: |
chmod u+x ./version.sh
./version.sh >> $GITHUB_OUTPUT
release:
runs-on: ubuntu-22.04
permissions:
contents: write
packages: write
needs:
- version
outputs:
upload_url: ${{ steps.release.outputs.upload_url }}
steps:
- name: Create release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.version.outputs.version }}
release_name: Release v${{ needs.version.outputs.version }}
draft: false
prerelease: false

docker:
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
needs:
- version
- release
steps:
- uses: actions/checkout@v3

- name: Login
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Downcase repository name
run: |
echo "REPOSITORY=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
push: true
tags: ghcr.io/${{ env.REPOSITORY }}:latest,ghcr.io/${{ env.REPOSITORY }}:${{ needs.version.outputs.version }}
24 changes: 24 additions & 0 deletions .github/workflows/tagging.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Tagging

on:
push:
branches:
- dev

jobs:
tagging:
permissions:
contents: write

runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3

- uses: TriPSs/conventional-changelog-action@v3
name: Changelog
id: changelog
with:
git-user-nane: "{{ Username }}"
git-user-email: "{{ Email }}"
git-message: "chore(release): {version}"
27 changes: 27 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/test-results/
/playwright-report/
/playwright/.cache/
26 changes: 26 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"arrowParens": "always",
"bracketSameLine": false,
"bracketSpacing": true,
"semi": true,
"singleQuote": false,
"jsxSingleQuote": false,
"quoteProps": "consistent",
"trailingComma": "none",
"singleAttributePerLine": false,
"printWidth": 80,
"useTabs": false,
"tabWidth": 2,
"importOrder": [
"^@config/(.*)$",
"^@context/(.*)$",
"^@hooks/(.*)$",
"^@pages/(.*)$",
"^@components/(.*)$",
"^@services/(.*)$",
"^[./]"
],
"importOrderSeparation": true,
"importOrderSortSpecifiers": true,
"plugins": ["@trivago/prettier-plugin-sort-imports"]
}
Loading

0 comments on commit 68717c5

Please sign in to comment.