diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..73b2ee6 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,84 @@ +name: Deploy Search Typesense + +on: + push: + branches: + - staging + - production + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + # Route each branch to a specific directory and PM2 environment + - name: Setup Environment Variables + run: | + if [[ "${{ github.ref_name }}" == "production" ]]; then + TARGET="/var/www/search.carpa.com" + echo "PM2_ENV=production" >> $GITHUB_ENV + elif [[ "${{ github.ref_name }}" == "staging" ]]; then + TARGET="/var/www/dev.search.carpa.com" + echo "PM2_ENV=staging" >> $GITHUB_ENV + fi + + PM2_NAME="search-${{ github.ref_name }}" + + echo "TARGET_DIR=$TARGET" >> $GITHUB_ENV + echo "PM2_NAME=$PM2_NAME" >> $GITHUB_ENV + + echo 'NUXT_PUBLIC_FEEDBACK_WEBHOOK=${{ secrets.NUXT_PUBLIC_FEEDBACK_WEBHOOK }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_RECAPTCHA_SITE_KEY=${{ secrets.NUXT_PUBLIC_RECAPTCHA_SITE_KEY }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_FEEDBACK_MAX_PER_HOUR=${{ secrets.NUXT_PUBLIC_FEEDBACK_MAX_PER_HOUR }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_FEEDBACK_MAX_PER_SESSION=${{ secrets.NUXT_PUBLIC_FEEDBACK_MAX_PER_SESSION }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_FEEDBACK_COOLDOWN_SEC=${{ secrets.NUXT_PUBLIC_FEEDBACK_COOLDOWN_SEC }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_FEEDBACK_MIN_SECONDS=${{ secrets.NUXT_PUBLIC_FEEDBACK_MIN_SECONDS }}' >> $GITHUB_ENV + echo 'NUXT_FEEDBACK_TOKEN=${{ secrets.NUXT_FEEDBACK_TOKEN }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_TYPESENSE_API_KEY=${{ secrets.NUXT_PUBLIC_TYPESENSE_API_KEY }}' >> $GITHUB_ENV + echo 'TYPESENSE_NODES=${{ secrets.TYPESENSE_NODES }}' >> $GITHUB_ENV + echo 'NUXT_PUBLIC_ENTRELINEAS_DEV_KEY=${{ secrets.NUXT_PUBLIC_ENTRELINEAS_DEV_KEY }}' >> $GITHUB_ENV + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '24' + cache: 'npm' + + - name: Install Dependencies + run: npm ci + + - name: Build Nuxt Application + run: npm run build + env: + NITRO_PRESET: node-server + TYPESENSE_NODES: ${{ secrets.TYPESENSE_NODES }} + + - name: Copy Build Files to Vultr + uses: appleboy/scp-action@master + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.VPS_SSH_KEY }} + port: 22 + source: ".output/*,package.json,ecosystem.config.cjs" + target: "${{ env.TARGET_DIR }}" + + - name: Restart PM2 on Vultr + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.VPS_SSH_KEY }} + port: 22 + script: | + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + cd ${{ env.TARGET_DIR }} + NUXT_FEEDBACK_TOKEN=${{ secrets.NUXT_FEEDBACK_TOKEN }} \ + TYPESENSE_NODES=${{ secrets.TYPESENSE_NODES }} \ + pm2 reload ${{ env.PM2_NAME }} --update-env --env ${{ env.PM2_ENV }} || \ + NUXT_FEEDBACK_TOKEN=${{ secrets.NUXT_FEEDBACK_TOKEN }} \ + TYPESENSE_NODES=${{ secrets.TYPESENSE_NODES }} \ + pm2 start ecosystem.config.cjs --env ${{ env.PM2_ENV }} diff --git a/.gitignore b/.gitignore index df75b0d..6ef3476 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ logs .DS_Store .fleet .idea +--port # Local env files .env diff --git a/README.md b/README.md index 09b3e06..a6cc824 100755 --- a/README.md +++ b/README.md @@ -61,4 +61,4 @@ Check out the [deployment documentation](https://nuxt.com/docs/getting-started/d ## Renovate integration -Install [Renovate GitHub app](https://github.com/apps/renovate/installations/select_target) on your repository and you are good to go. +Install [Renovate GitHub app](https://github.com/apps/renovate/installations/select_target) on your repository and you are good to go. chage v4 diff --git a/app/components/searchPanel/FiltersContainer.vue b/app/components/searchPanel/FiltersContainer.vue new file mode 100644 index 0000000..8b68d01 --- /dev/null +++ b/app/components/searchPanel/FiltersContainer.vue @@ -0,0 +1,106 @@ + + + + + + + + + + {{ t(title) }} + + {{ activeCount }} + + + + + + + + + + + + + + + {{ t(title) }} + + + + {{ activeCount }} + + + + + + + + + + + + + {{ t(title) }} + + + + + + + + + + + + + + diff --git a/app/components/searchPanel/SearchPanel.vue b/app/components/searchPanel/SearchPanel.vue index 32a6b7c..f5555f2 100644 --- a/app/components/searchPanel/SearchPanel.vue +++ b/app/components/searchPanel/SearchPanel.vue @@ -1,7 +1,8 @@