Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
d04984c
CORE-5249: add table
ekachxaidze98 Apr 2, 2026
2603028
CORE: fair header
ekachxaidze98 Apr 3, 2026
0fce0ac
CORE: add dropdowns
ekachxaidze98 Apr 6, 2026
efcca8c
CORE: add progress
ekachxaidze98 Apr 7, 2026
6e7e335
CORE: add collapsable data
ekachxaidze98 Apr 8, 2026
832c24f
CORE: add fair text
ekachxaidze98 Apr 9, 2026
513c660
CORE: add api sections
ekachxaidze98 Apr 27, 2026
f67bda2
CORE: add api call implementation
ekachxaidze98 Apr 29, 2026
8ddfad9
try deploy to aks
fropa May 8, 2026
406e5e6
add husky 0
fropa May 8, 2026
a38e508
add dependencies to package.json
fropa May 8, 2026
19ebf39
add husky
fropa May 8, 2026
2cf1c9a
change pnpm install
fropa May 8, 2026
47c0eba
revert all changes
fropa May 8, 2026
8924d0a
add node env and envs during building
fropa May 8, 2026
d54233f
add sentry dns
fropa May 8, 2026
19ee49a
CORE: resolve conflicts
ekachxaidze98 May 8, 2026
cf02d4a
CORE: update docs file
ekachxaidze98 May 8, 2026
1e23783
add core.ac.uk test domain
fropa May 14, 2026
eba9fa8
Add new hostname to httproute configuration
fropa May 14, 2026
6750d00
merge main to aks branch (#782)
fropa May 18, 2026
715f750
Add GA tracking code environment variable
anwiev May 18, 2026
a0d2680
Fix syntax for accessing GA_TRACKING_CODE secret
anwiev May 18, 2026
69e67b8
add secrets
fropa May 19, 2026
a6e9d2d
fix secret naming
fropa May 19, 2026
a542662
merge main to aks (#784)
fropa May 21, 2026
9a09da4
adding previews
fropa May 21, 2026
47d8a69
Merge remote-tracking branch 'origin/main'
ekachxaidze98 May 25, 2026
dcb1006
Set gitignore config npm (#785)
valeriibudko Jun 3, 2026
6a52c51
Merge remote-tracking branch 'origin/main'
ekachxaidze98 Jun 4, 2026
9ab602b
Set gitignore config npm (#787)
valeriibudko Jun 8, 2026
ef1a1e6
Merge remote-tracking branch 'origin/main'
ekachxaidze98 Jun 11, 2026
5adabbe
Refactor AKS deployment workflow and add sourcemaps upload
fropa Jun 12, 2026
3b0ef93
add staging
Jun 16, 2026
15a7b1e
Change branch trigger from 'aks' to 'stage'
fropa Jun 16, 2026
29f484f
set stg api on stg
Jun 16, 2026
1895bf1
add stg api for stage env
Jun 17, 2026
8eb46c3
Update hostname for staging environment
fropa Jun 17, 2026
a06bcb6
Change replica count from 3 to 1 in deployment.yaml
fropa Jun 17, 2026
f76d71e
stage: 1 replica + forward APP_ENV in docker-build script
Jun 18, 2026
6758e81
Set gitignore config npm (#789)
valeriibudko Jun 30, 2026
ea969d8
Merge remote-tracking branch 'origin/main'
ekachxaidze98 Jul 7, 2026
a04b167
CORE: certificate view img
ekachxaidze98 Jul 13, 2026
bb5c640
CORE: certificate border fix
ekachxaidze98 Jul 14, 2026
ddae2f7
CORE: V2 add api get request
ekachxaidze98 Jul 16, 2026
626a3fa
CORE: V2 input auto save on blur
ekachxaidze98 Jul 16, 2026
ac39d46
CORE: V2 input add submit api
ekachxaidze98 Jul 17, 2026
65ae2b0
CORE: V2 input complite view
ekachxaidze98 Jul 17, 2026
6abda5a
CORE: V2 input auto save fix
ekachxaidze98 Jul 17, 2026
22e9014
CORE: V2 add certificate data
ekachxaidze98 Jul 20, 2026
e2e32fb
CORE: V2 add certificate view data
ekachxaidze98 Jul 20, 2026
43da12b
CORE: V2 download certificate png
ekachxaidze98 Jul 20, 2026
c8ca12d
CORE: V2 header responsive
ekachxaidze98 Jul 21, 2026
48b5850
CORE: V2 add num count in sections
ekachxaidze98 Jul 21, 2026
b50fca5
CORE: V2 add metrics in sections
ekachxaidze98 Jul 21, 2026
181a98b
CORE: V2 add labels for numbered sections
ekachxaidze98 Jul 21, 2026
04aca49
CORE: V2 add seal by type
ekachxaidze98 Jul 21, 2026
60022b3
CORE: V2 refresh
ekachxaidze98 Jul 21, 2026
3957c0c
CORE: V2 add input fill
ekachxaidze98 Jul 21, 2026
662d44f
CORE: V2 add edit history
ekachxaidze98 Jul 21, 2026
f7e2815
CORE: V2 add submission view
ekachxaidze98 Jul 22, 2026
ef5a400
CORE: V2 certificate pdf download
ekachxaidze98 Jul 22, 2026
e1f8fb0
CORE: add report url
ekachxaidze98 Jul 22, 2026
9e3b952
CORE: show correct open question structure
ekachxaidze98 Jul 22, 2026
4a7bb56
CORE: make question header responsive
ekachxaidze98 Jul 22, 2026
7434dc1
CORE: merge main
ekachxaidze98 Jul 22, 2026
d8fd0f8
CORE: add save pop up
ekachxaidze98 Jul 22, 2026
b275e26
CORE: add temp view
ekachxaidze98 Jul 22, 2026
82a23e4
CORE: add checks
ekachxaidze98 Jul 22, 2026
2f10017
CORE: add register url
ekachxaidze98 Jul 22, 2026
4883d09
CORE: show missing count
ekachxaidze98 Jul 23, 2026
951dd92
CORE: move retrive stats to utils
ekachxaidze98 Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .env.staging
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Staging – uses staging API (api-stg.core.ac.uk)
VITE_APP_NAME=CORE Dashboard (staging)
VITE_APP_API_BASE_URL=https://api-stg.core.ac.uk
VITE_API_URL=https://api-stg.core.ac.uk
VITE_IDP_URL=https://api-stg.core.ac.uk
VITE_SENTRY_DSN=https://4d292e22294f991799b49f3ffa238ff7@o318858.ingest.us.sentry.io/4511235416981504
VITE_GA_TRACKING_CODE=
157 changes: 157 additions & 0 deletions .github/workflows/aks_deploy_prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: AKS Prod

on:
push:
branches: [aks]
workflow_dispatch:

env:
ACR_NAME: corecontainers
IMAGE_NAME: core-frontend-dashboard
RESOURCE_GROUP: core-frontend
AKS_CLUSTER_NAME: core-frontend-kubernetes-cluster
NAMESPACE: core-frontend
DEPLOYMENT_NAME: core-frontend-dashboard
APP_ENV: production
KUBE_DIR: kube/prod
SENTRY_DSN: https://d116b39bd427449799cdd1516f6f97a1@sentry.io/2091955

jobs:
build-and-deploy:
runs-on: ubuntu-24.04-arm
environment: azure
permissions:
id-token: write
contents: read
outputs:
release: ${{ steps.image.outputs.release }}
sha: ${{ github.sha }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set image reference
id: image
run: |
TAG=$(echo ${{ github.sha }} | cut -c1-7)
echo "ref=${{ env.ACR_NAME }}.azurecr.io/aks-${{ env.IMAGE_NAME }}:$TAG" >> $GITHUB_OUTPUT
echo "release=$TAG" >> $GITHUB_OUTPUT

- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Docker ACR Login
run: az acr login --name ${{ env.ACR_NAME }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Docker build and push
run: |
docker buildx build \
--platform linux/arm64 \
--push \
--build-arg APP_ENV=${{ env.APP_ENV }} \
--build-arg SENTRY_DSN=${{ env.SENTRY_DSN }} \
--build-arg SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \
--build-arg GA_TRACKING_CODE=${{ secrets.GA_TRACKING_CODE }} \
--build-arg NPM_TOKEN=${{ secrets.NPM_TOKEN }} \
--build-arg API_KEY=${{ secrets.API_KEY }} \
--build-arg SENTRY_RELEASE=${{ steps.image.outputs.release }} \
-t ${{ steps.image.outputs.ref }} .

- name: Get AKS credentials
run: |
az aks get-credentials \
--resource-group ${{ env.RESOURCE_GROUP }} \
--name ${{ env.AKS_CLUSTER_NAME }} \
--admin \
--overwrite-existing

- name: Sync secrets to AKS
run: |
kubectl create secret generic core-frontend-dashboard-secrets \
--namespace ${{ env.NAMESPACE }} \
--from-literal=SENTRY_DSN="${{ env.SENTRY_DSN }}" \
--from-literal=SENTRY_AUTH_TOKEN="${{ secrets.SENTRY_AUTH_TOKEN }}" \
--from-literal=GA_TRACKING_CODE="${{ secrets.GA_TRACKING_CODE }}" \
--from-literal=API_KEY="${{ secrets.API_KEY }}" \
--dry-run=client -o yaml | kubectl apply -f -

- name: Apply Service and HTTPRoute
run: |
kubectl apply -f ${{ env.KUBE_DIR }}/service.yaml
kubectl apply -f ${{ env.KUBE_DIR }}/httproute.yaml

- name: Deploy to AKS
run: |
export IMAGE="${{ steps.image.outputs.ref }}"
envsubst < ${{ env.KUBE_DIR }}/deployment.yaml | kubectl apply -f -

- name: Wait for rollout
run: |
kubectl rollout status deployment/${{ env.DEPLOYMENT_NAME }} \
--namespace ${{ env.NAMESPACE }} \
--timeout=300s

upload-sentry-sourcemaps:
name: Upload Sentry sourcemaps (prod)
needs: [build-and-deploy]
runs-on: ubuntu-latest
environment: azure
permissions:
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ needs.build-and-deploy.outputs.sha }}

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm

- name: Configure npm auth for @oacore
run: |
printf "@oacore:registry=https://npm.pkg.github.com\n//npm.pkg.github.com/:_authToken=%s\n" "${{ secrets.NPM_TOKEN }}" > .npmrc

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Remove npm auth
if: always()
run: rm -f .npmrc

- name: Build web app
run: pnpm run build:${{ env.APP_ENV }}
env:
NODE_OPTIONS: --max-old-space-size=4096
SENTRY_DSN: ${{ env.SENTRY_DSN }}
SENTRY_RELEASE: ${{ needs.build-and-deploy.outputs.release }}
GA_TRACKING_CODE: ${{ secrets.GA_TRACKING_CODE }}
API_KEY: ${{ secrets.API_KEY }}

- name: Create Sentry release
uses: getsentry/action-release@v3
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: oacore
SENTRY_PROJECT: dashboard-pk
with:
environment: production
release: ${{ needs.build-and-deploy.outputs.release }}
sourcemaps: ./dist/assets
url_prefix: '~/assets'
157 changes: 157 additions & 0 deletions .github/workflows/aks_deploy_stage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: AKS Stage

on:
push:
branches: [stage]
workflow_dispatch:

env:
ACR_NAME: corecontainers
IMAGE_NAME: core-frontend-dashboard-stage
RESOURCE_GROUP: core-frontend
AKS_CLUSTER_NAME: core-frontend-kubernetes-cluster
NAMESPACE: core-frontend-stage
DEPLOYMENT_NAME: core-frontend-dashboard
APP_ENV: staging
KUBE_DIR: kube/stage
SENTRY_DSN: https://d116b39bd427449799cdd1516f6f97a1@sentry.io/2091955

jobs:
build-and-deploy:
runs-on: ubuntu-24.04-arm
environment: azure
permissions:
id-token: write
contents: read
outputs:
release: ${{ steps.image.outputs.release }}
sha: ${{ github.sha }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set image reference
id: image
run: |
TAG=$(echo ${{ github.sha }} | cut -c1-7)
echo "ref=${{ env.ACR_NAME }}.azurecr.io/aks-${{ env.IMAGE_NAME }}:$TAG" >> $GITHUB_OUTPUT
echo "release=$TAG" >> $GITHUB_OUTPUT

- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Docker ACR Login
run: az acr login --name ${{ env.ACR_NAME }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Docker build and push
run: |
docker buildx build \
--platform linux/arm64 \
--push \
--build-arg APP_ENV=${{ env.APP_ENV }} \
--build-arg SENTRY_DSN=${{ env.SENTRY_DSN }} \
--build-arg SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \
--build-arg GA_TRACKING_CODE=${{ secrets.GA_TRACKING_CODE }} \
--build-arg NPM_TOKEN=${{ secrets.NPM_TOKEN }} \
--build-arg API_KEY=${{ secrets.API_KEY }} \
--build-arg SENTRY_RELEASE=${{ steps.image.outputs.release }} \
-t ${{ steps.image.outputs.ref }} .

- name: Get AKS credentials
run: |
az aks get-credentials \
--resource-group ${{ env.RESOURCE_GROUP }} \
--name ${{ env.AKS_CLUSTER_NAME }} \
--admin \
--overwrite-existing

- name: Sync secrets to AKS
run: |
kubectl create secret generic core-frontend-dashboard-secrets \
--namespace ${{ env.NAMESPACE }} \
--from-literal=SENTRY_DSN="${{ env.SENTRY_DSN }}" \
--from-literal=SENTRY_AUTH_TOKEN="${{ secrets.SENTRY_AUTH_TOKEN }}" \
--from-literal=GA_TRACKING_CODE="${{ secrets.GA_TRACKING_CODE }}" \
--from-literal=API_KEY="${{ secrets.API_KEY }}" \
--dry-run=client -o yaml | kubectl apply -f -

- name: Apply Service and HTTPRoute
run: |
kubectl apply -f ${{ env.KUBE_DIR }}/service.yaml
kubectl apply -f ${{ env.KUBE_DIR }}/httproute.yaml

- name: Deploy to AKS
run: |
export IMAGE="${{ steps.image.outputs.ref }}"
envsubst < ${{ env.KUBE_DIR }}/deployment.yaml | kubectl apply -f -

- name: Wait for rollout
run: |
kubectl rollout status deployment/${{ env.DEPLOYMENT_NAME }} \
--namespace ${{ env.NAMESPACE }} \
--timeout=300s

upload-sentry-sourcemaps:
name: Upload Sentry sourcemaps (stage)
needs: [build-and-deploy]
runs-on: ubuntu-latest
environment: azure
permissions:
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ needs.build-and-deploy.outputs.sha }}

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm

- name: Configure npm auth for @oacore
run: |
printf "@oacore:registry=https://npm.pkg.github.com\n//npm.pkg.github.com/:_authToken=%s\n" "${{ secrets.NPM_TOKEN }}" > .npmrc

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Remove npm auth
if: always()
run: rm -f .npmrc

- name: Build web app
run: pnpm run build:${{ env.APP_ENV }}
env:
NODE_OPTIONS: --max-old-space-size=4096
SENTRY_DSN: ${{ env.SENTRY_DSN }}
SENTRY_RELEASE: ${{ needs.build-and-deploy.outputs.release }}
GA_TRACKING_CODE: ${{ secrets.GA_TRACKING_CODE }}
API_KEY: ${{ secrets.API_KEY }}

- name: Create Sentry release
uses: getsentry/action-release@v3
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: oacore
SENTRY_PROJECT: dashboard-pk
with:
environment: production
release: ${{ needs.build-and-deploy.outputs.release }}
sourcemaps: ./dist/assets
url_prefix: '~/assets'
Loading
Loading