init
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
# Contributing Guide
|
||||
|
||||
**WIP**
|
||||
|
||||
Thanks for your interest in contributing to this project. Before getting started, you might find this guideline useful.
|
||||
|
||||
|
||||
|
||||
|
||||
## Project Structure
|
||||
|
||||
This is a monorepo based on a [pnpm workspace](https://pnpm.io/workspaces):
|
||||
|
||||
- `packages`: Contains useful functions needed by this app
|
||||
- `site`: The main site
|
||||
|
||||
|
||||
|
||||
|
||||
## Development Setup
|
||||
|
||||
This app is deployed with [Node.js](https://nodejs.org/) version 20+ and [pnpm](https://pnpm.io/) version 9+.
|
||||
|
||||
It is built on [Nuxt 3](https://nuxt.com), with the power of [Vue 3](https://github.com/vuejs/vue-next), [Vite](https://github.com/vitejs/vite), [Radix Vue](https://www.radix-vue.com/), [Zag](https://zagjs.com/), and [UnoCSS](https://github.com/antfu/unocss).
|
||||
|
||||
To start developing, clone the repository and install the dependencies.
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
Then, build the [packages](../packages):
|
||||
|
||||
```bash
|
||||
pnpm build:pkg
|
||||
```
|
||||
|
||||
To enable picking fonts from [Google Fonts](https://fonts.google.com/), you need to generate a [Google Fonts Developer API Key](https://developers.google.com/fonts/docs/developer_api#APIKey). After that, create a `.env` file in the [`site`](../site/) folder and add the following:
|
||||
|
||||
```
|
||||
NUXT_PUBLIC_GOOGLE_FONTS_KEY="YOUR_API_KEY"
|
||||
```
|
||||
|
||||
Finally, you can start developing or building the site:
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
pnpm build
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## Multilingual
|
||||
|
||||
This app currently supports:
|
||||
|
||||
- English
|
||||
- Simplified Chinese
|
||||
- Spanish ([@fmpaci](https://github.com/fmpaci))
|
||||
|
||||
To add a new language, create a translation file `[language-code].yaml` in the [site/src/i18n](../site/src/i18n) folder. You can refer to the [English version file](../site/src/i18n/en.yaml) as a guide. Finally, add the language code, name, icon, and translation file name in [site/configs/i18n.ts](../site/configs/i18n.ts).
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
name: Build and deploy Nuxt site to Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
NODE_VERSION: 20
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: pnpm
|
||||
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v5
|
||||
|
||||
- name: Get pnpm store directory
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
||||
|
||||
- uses: actions/cache@v4
|
||||
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 --frozen-lockfile
|
||||
|
||||
- name: Build site
|
||||
run: pnpm release
|
||||
env:
|
||||
NUXT_PUBLIC_GOOGLE_FONTS_KEY: ${{ secrets.GOOGLE_FONTS_KEY }}
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: site/dist
|
||||
|
||||
deploy:
|
||||
needs: build
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
Reference in New Issue
Block a user