5 Commits

Author SHA1 Message Date
semantic-release-bot
7aaca06ce7 chore(release): 1.0.0 [skip ci]
## 1.0.0 (2026-02-23)

### Features

* **api:** add backend api with express and sqlite ([00af886](00af8862d3))
* **api:** add initial schema migration ([3b0d98f](3b0d98f15c))
* **api:** add knex configuration ([7e766c5](7e766c5229))
* **api:** add swagger docs route ([736fefb](736fefbdc9))
* **api:** register swagger docs route ([4c0f53a](4c0f53a3e3))
* **ci:** add bundlesize configuration ([dee36da](dee36dafd3))
* **ci:** add commitlint validation to ci workflow ([1541212](154121297b))
* **ci:** add coverage configuration ([278082d](278082d322))
* **ci:** add gitleaks configuration ([32f3221](32f3221215))
* **ci:** add gitleaks to pre-commit hook ([c18410b](c18410bf5e))
* **ci:** add lighthouse ci configuration ([f6f2dba](f6f2dba9e0))
* **ci:** add nightly build workflow ([5b56edd](5b56edddb2))
* **ci:** add quality gates to ci workflow ([963b8ec](963b8eccf8))
* **ci:** add staging deployment workflow ([f5a00d3](f5a00d356a))
* **docker:** add multi-platform build configuration ([6b7eba9](6b7eba99d4))
* **ui:** add cv application frontend and configuration ([7f06ee7](7f06ee7f53))

### Bug Fixes

* **ci:** Set node versions in ci ([60d0aa5](60d0aa5ae2))
* **ci:** use lts version for ci ([cd22a97](cd22a970cb))
* **ci:** use POSIX-compatible syntax in pre-commit hook ([c240aa3](c240aa3641))

### Documentation

* add comprehensive release engineering documentation ([c8816c4](c8816c4f36))
* add gitleaks setup and api docs info ([cbf4090](cbf40908a6))
* add initial changelog ([e209d6e](e209d6e241))
* add release engineering design document ([1741fe1](1741fe1ca1))
* add release engineering implementation plan ([b3f2919](b3f2919791))
* add release process documentation ([f544577](f5445770ee))
* **api:** add openapi docs to auth routes ([8a22e4b](8a22e4b120))
* **release:** add devops features design document ([252afb7](252afb7e9f))
* **release:** add devops features implementation plan ([162ddb6](162ddb67dd))
* **release:** add link to release engineering documentation ([950d812](950d812159))
* **release:** remove inline markdownlint disable comment ([31d5810](31d58103fd))
* **ui:** add open source documentation files ([15a5c0a](15a5c0a59c))
2026-02-23 18:56:36 +00:00
Tuan-Dat Tran
c240aa3641 fix(ci): use POSIX-compatible syntax in pre-commit hook
Some checks failed
Release / Release (push) Failing after 6m48s
Release / Build & Push Docker Image (push) Has been skipped
2026-02-23 19:48:11 +01:00
Tuan-Dat Tran
cd22a970cb fix(ci): use lts version for ci
Some checks failed
Release / Release (push) Failing after 10m4s
Release / Build & Push Docker Image (push) Has been skipped
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
2026-02-23 19:33:36 +01:00
Tuan-Dat Tran
60d0aa5ae2 fix(ci): Set node versions in ci
Some checks failed
Release / Release (push) Failing after 9s
Release / Build & Push Docker Image (push) Has been skipped
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
2026-02-23 19:27:48 +01:00
Tuan-Dat Tran
ff26ff6570 chore(ci): bump node version
Some checks failed
Release / Release (push) Failing after 13s
Release / Build & Push Docker Image (push) Has been skipped
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
2026-02-23 19:20:53 +01:00
8 changed files with 159 additions and 117 deletions

View File

@@ -14,53 +14,53 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "24"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Validate current commit
if: github.event_name == 'push'
run: npx commitlint --from HEAD~1 --to HEAD --verbose
- name: Validate PR commits
if: github.event_name == 'pull_request'
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
frontend:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x]
node-version: [latest, 24.*, 25.*, 26.*]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Unit Tests
run: npm run test:run
- name: Build
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
@@ -70,20 +70,20 @@ jobs:
backend:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: "20.x"
- name: Install dependencies
working-directory: ./backend
run: npm ci
- name: Test
working-directory: ./backend
run: npm test
@@ -91,46 +91,46 @@ jobs:
integration:
runs-on: ubuntu-latest
needs: [frontend, backend, commitlint]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
node-version: "20.x"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run Integration Tests
run: npm run test:integration
e2e:
runs-on: ubuntu-latest
needs: [frontend, backend, commitlint]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
node-version: "20.x"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
- name: Run E2E Tests
run: npm run test:e2e
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
@@ -142,23 +142,23 @@ jobs:
regression:
runs-on: ubuntu-latest
needs: [frontend, backend, commitlint]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
node-version: "20.x"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run Regression Tests
run: npm run test:regression
- name: Upload snapshot diffs
uses: actions/upload-artifact@v4
if: failure()
@@ -170,23 +170,23 @@ jobs:
lighthouse:
runs-on: ubuntu-latest
needs: [frontend]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
node-version: "20.x"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Run Lighthouse CI
run: npm run test:lighthouse
continue-on-error: true
@@ -194,35 +194,35 @@ jobs:
quality:
name: Quality Gates
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "20"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
- name: Build
run: npm run build
- name: Check bundle size
run: npx bundlesize
- name: Security audit
run: npm audit --audit-level=moderate
continue-on-error: true
continue-on-error: true

View File

@@ -20,28 +20,28 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "24"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
env:
BASE_URL: /${{ github.event.repository.name }}/
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'dist'
path: "dist"
deploy:
environment:
@@ -52,4 +52,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v4

View File

@@ -2,7 +2,7 @@ name: Nightly Build
on:
schedule:
- cron: '0 2 * * *'
- cron: "0 2 * * *"
workflow_dispatch:
permissions:
@@ -14,52 +14,52 @@ jobs:
name: Build Nightly Image
runs-on: ubuntu-latest
environment: nightly
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: master
- name: Get date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "24"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install backend dependencies
working-directory: ./backend
run: npm ci
- name: Build
run: npm run build
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:

View File

@@ -15,40 +15,40 @@ jobs:
name: Release
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "24"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install backend dependencies
working-directory: ./backend
run: npm ci
- name: Lint
run: npm run lint
- name: Run tests
run: npm run test:run
- name: Run backend tests
working-directory: ./backend
run: npm test
- name: Build
run: npm run build
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -59,39 +59,39 @@ jobs:
runs-on: ubuntu-latest
needs: release
if: needs.release.result == 'success'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get version
id: version
run: |
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "latest")
echo "version=${VERSION#v}" >> $GITHUB_OUTPUT
echo "tag=${VERSION}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:

View File

@@ -14,52 +14,52 @@ jobs:
name: Build & Deploy to Staging
runs-on: ubuntu-latest
environment: staging
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
node-version: "24"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install backend dependencies
working-directory: ./backend
run: npm ci
- name: Lint
run: npm run lint
- name: Run tests
run: npm run test:run
- name: Build
run: npm run build
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:

View File

@@ -1,7 +1,7 @@
npm run lint
# Gitleaks secret scanning
if command -v gitleaks &> /dev/null; then
if command -v gitleaks > /dev/null 2>&1; then
gitleaks protect --verbose --staged
if [ $? -eq 1 ]; then
echo ""

View File

@@ -2,6 +2,48 @@
All notable changes to this project will be documented in this file.
## 1.0.0 (2026-02-23)
### Features
* **api:** add backend api with express and sqlite ([00af886](https://git.seyshiro.de/tudattr/kilo-cv/commit/00af8862d3f642edc1f38beecfbd703fe562f722))
* **api:** add initial schema migration ([3b0d98f](https://git.seyshiro.de/tudattr/kilo-cv/commit/3b0d98f15cadd6c03dc298559abe6ac58c26c9b0))
* **api:** add knex configuration ([7e766c5](https://git.seyshiro.de/tudattr/kilo-cv/commit/7e766c52294f9b06161d168ef4e114a6fb0560ba))
* **api:** add swagger docs route ([736fefb](https://git.seyshiro.de/tudattr/kilo-cv/commit/736fefbdc9323412d37309d95de842a6d86f2e17))
* **api:** register swagger docs route ([4c0f53a](https://git.seyshiro.de/tudattr/kilo-cv/commit/4c0f53a3e3fc8d0c25980396429643ab43a231a6))
* **ci:** add bundlesize configuration ([dee36da](https://git.seyshiro.de/tudattr/kilo-cv/commit/dee36dafd3bfa25873f3232b8e83d71ad5a5aa36))
* **ci:** add commitlint validation to ci workflow ([1541212](https://git.seyshiro.de/tudattr/kilo-cv/commit/154121297b5845c41a53fc2761e263671e3771c8))
* **ci:** add coverage configuration ([278082d](https://git.seyshiro.de/tudattr/kilo-cv/commit/278082d32219107d157dbb8126611d4f2dca6a9a))
* **ci:** add gitleaks configuration ([32f3221](https://git.seyshiro.de/tudattr/kilo-cv/commit/32f32212150d0114a6fdd048cfaffec07fbe74a6))
* **ci:** add gitleaks to pre-commit hook ([c18410b](https://git.seyshiro.de/tudattr/kilo-cv/commit/c18410bf5ebe3048db3ddadcbbc0afa55147f241))
* **ci:** add lighthouse ci configuration ([f6f2dba](https://git.seyshiro.de/tudattr/kilo-cv/commit/f6f2dba9e0e396a99fed200923acc8640ff0fd76))
* **ci:** add nightly build workflow ([5b56edd](https://git.seyshiro.de/tudattr/kilo-cv/commit/5b56edddb2ffddecf124d29f92825723230fd9d5))
* **ci:** add quality gates to ci workflow ([963b8ec](https://git.seyshiro.de/tudattr/kilo-cv/commit/963b8eccf8af59d398f4973504fd43a72ed23d98))
* **ci:** add staging deployment workflow ([f5a00d3](https://git.seyshiro.de/tudattr/kilo-cv/commit/f5a00d356ae04f9f1180a051918c221a1f9e521b))
* **docker:** add multi-platform build configuration ([6b7eba9](https://git.seyshiro.de/tudattr/kilo-cv/commit/6b7eba99d4c989dce7ba1a8ea2c7ecbc857eefcd))
* **ui:** add cv application frontend and configuration ([7f06ee7](https://git.seyshiro.de/tudattr/kilo-cv/commit/7f06ee7f53bcf693a52903ca3b89dba022798c0e))
### Bug Fixes
* **ci:** Set node versions in ci ([60d0aa5](https://git.seyshiro.de/tudattr/kilo-cv/commit/60d0aa5ae29a5ed9c327061fa5b20e458109a534))
* **ci:** use lts version for ci ([cd22a97](https://git.seyshiro.de/tudattr/kilo-cv/commit/cd22a970cbf21a8cd9806a6eccf61e622c8efe80))
* **ci:** use POSIX-compatible syntax in pre-commit hook ([c240aa3](https://git.seyshiro.de/tudattr/kilo-cv/commit/c240aa3641215b76bcf5af645a05fcebe611a43c))
### Documentation
* add comprehensive release engineering documentation ([c8816c4](https://git.seyshiro.de/tudattr/kilo-cv/commit/c8816c4f36db9731b0b42f0584b466e1666042ff))
* add gitleaks setup and api docs info ([cbf4090](https://git.seyshiro.de/tudattr/kilo-cv/commit/cbf40908a692252bacf35e9d849f786716caacc8))
* add initial changelog ([e209d6e](https://git.seyshiro.de/tudattr/kilo-cv/commit/e209d6e24135715b3f09ade4c9abb1e8a07f5be8))
* add release engineering design document ([1741fe1](https://git.seyshiro.de/tudattr/kilo-cv/commit/1741fe1ca1c38195520a394df90a983993666d39))
* add release engineering implementation plan ([b3f2919](https://git.seyshiro.de/tudattr/kilo-cv/commit/b3f29197910d8b17d6327b03831ac2b03eba7247))
* add release process documentation ([f544577](https://git.seyshiro.de/tudattr/kilo-cv/commit/f5445770ee36f9364f036ba0d1e89363fe726734))
* **api:** add openapi docs to auth routes ([8a22e4b](https://git.seyshiro.de/tudattr/kilo-cv/commit/8a22e4b120213e070783715b8fd8ee6919ad0e83))
* **release:** add devops features design document ([252afb7](https://git.seyshiro.de/tudattr/kilo-cv/commit/252afb7e9f3f76348667c572d0dcfa5a67a4be76))
* **release:** add devops features implementation plan ([162ddb6](https://git.seyshiro.de/tudattr/kilo-cv/commit/162ddb67dd570b8ac257e1d2d6f0eac40dddf24a))
* **release:** add link to release engineering documentation ([950d812](https://git.seyshiro.de/tudattr/kilo-cv/commit/950d812159528093c67c91a64f24dab107348bed))
* **release:** remove inline markdownlint disable comment ([31d5810](https://git.seyshiro.de/tudattr/kilo-cv/commit/31d58103fd195db42d0bbfa9c262a23beb7b1734))
* **ui:** add open source documentation files ([15a5c0a](https://git.seyshiro.de/tudattr/kilo-cv/commit/15a5c0a59cfb51c124577107368ac620bf7a5635))
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

View File

@@ -1,7 +1,7 @@
{
"name": "cv-app",
"private": true,
"version": "0.0.0-dev.1",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",