7 Commits

Author SHA1 Message Date
semantic-release-bot
af6fe5171f chore(release): 1.0.1 [skip ci]
## [1.0.1](https://git.seyshiro.de/tudattr/kilo-cv/compare/v1.0.0...v1.0.1) (2026-02-23)

### Bug Fixes

* **release:** remove dist assets from github release config ([e9d2667](e9d2667c95))
2026-02-23 19:16:01 +00:00
Tuan-Dat Tran
e9d2667c95 fix(release): remove dist assets from github release config
Some checks failed
Release / Release (push) Failing after 8m54s
Release / Build & Push Docker Image (push) Has been skipped
Gitea API fails when trying to upload directory assets. Since the project
deploys via Docker, the dist files are not needed in the release.
2026-02-23 20:03:33 +01:00
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
9 changed files with 166 additions and 125 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

@@ -61,13 +61,6 @@
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
[
"@semantic-release/github",
{
"assets": [
{ "path": "dist/**/*", "label": "Distribution" }
]
}
]
"@semantic-release/github"
]
}

View File

@@ -2,6 +2,54 @@
All notable changes to this project will be documented in this file.
## [1.0.1](https://git.seyshiro.de/tudattr/kilo-cv/compare/v1.0.0...v1.0.1) (2026-02-23)
### Bug Fixes
* **release:** remove dist assets from github release config ([e9d2667](https://git.seyshiro.de/tudattr/kilo-cv/commit/e9d2667c959baf60c82519ecd5e24dac5953c4a0))
## 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.1",
"type": "module",
"scripts": {
"dev": "vite",