29 Commits
Author SHA1 Message Date
jakob.scheid a913b16f7c refactor(search): move search view to search feature directory for consistency 2026-08-08 17:34:17 +02:00
jakob.scheid ea5e238ad0 style: format code using Prettier 2026-08-08 17:23:19 +02:00
jakob.scheid 1932eaf154 chore(format): set up Prettier 2026-08-08 17:21:11 +02:00
jakob.scheid 805c2511da fix(settings): add :key to sidebar section links 2026-08-08 16:16:40 +02:00
jakob.scheid 84fd01a653 refactor: always use shorthand object properties 2026-08-08 16:15:44 +02:00
jakob.scheid 73f7b8d087 refactor(icons): fix typo
Used 'icon' instead of 'Icon'.
2026-08-08 16:13:58 +02:00
jakob.scheid 4809ab4330 refactor(icons): rename Icon to UIIcon
Vue.js components should have multi-word names.
2026-08-08 16:12:53 +02:00
jakob.scheid 7bc661ef5a refactor(search)!: rename Searchbar to SearchBar
Vue.js components should have multi-word names.
2026-08-08 16:08:59 +02:00
jakob.scheid 10c3571e8f refactor(footer)!: rename Footer to AppFooter
Vue.js components should have multi-word names.
2026-08-08 16:07:12 +02:00
jakob.scheid 6d19f9da11 refactor(nav)!: rename Navbar to AppNavbar
Vue.js components should have multi-word names.
2026-08-08 16:05:13 +02:00
jakob.scheid 8cf4d67af7 refactor(settings)!: rename Selection to SettingsSelection
Vue.js components should have multi-word names.
2026-08-08 16:05:10 +02:00
jakob.scheid d0590e2f19 refactor(settings)!: rename Switch to SettingsSwitch
Vue.js components should have multi-word names.
2026-08-08 16:04:20 +02:00
jakob.scheid 82580ff9b7 refactor(sidebar)!: rename Sidebar to AppSidebar
Vue.js components should have multi-word names.
2026-08-08 16:02:52 +02:00
jakob.scheid e38e525d7a refactor: avoid asynchronous functions without await 2026-08-08 15:35:01 +02:00
jakob.scheid 8fe20970e5 feat(lint): add ESLint rules
Added some ESLint rules (see eslint.config.js).
2026-08-08 15:33:31 +02:00
jakob.scheid 01df3b8932 chore(lint): set up ESLint
Added ESLint dependencies and ESLint configuration.
2026-08-08 15:23:33 +02:00
jakob.scheid 2b6d84b0cb refactor: remove all unused variables 2026-08-08 15:23:32 +02:00
jakob.scheid 99eabaa371 style: reorder imports in entrypoint script
Reordered the imports in src/main.js so that they are more clear and
more readable.
2026-08-08 15:23:31 +02:00
jakob.scheid b08a76fbc2 style: reorder imports alphabetically 2026-08-08 15:23:30 +02:00
jakob.scheid d3703005a0 style(legal): remove function wrapper 2026-08-08 15:23:30 +02:00
jakob.scheid 40982aed96 style: ensure named functions 2026-08-08 15:23:30 +02:00
jakob.scheid aca681c79f style: ensure function expressions
Replaced all function statements with function expressions.
2026-08-08 15:23:29 +02:00
jakob.scheid 2520fff771 style: remove unnecessary function whitespace
Remove the unnecessary whitespace between the function name or the
'function' keyword and the opening parenthesis.
2026-08-08 15:23:29 +02:00
jakob.scheid 9d252d5e62 style: remove unnecessary whitespace 2026-08-08 15:23:28 +02:00
jakob.scheid 7c082ba696 style: remove unnecessary semicolons after blocks 2026-08-08 15:23:28 +02:00
jakob.scheid 302e34e4ca refactor(i18n): fix typo in language switch 2026-08-08 15:23:28 +02:00
jakob.scheid 879199d936 style: ensure semicolons at line ends 2026-08-08 15:23:24 +02:00
jakob.scheid 9a338ff540 test: use describe in all test files 2026-08-08 15:23:11 +02:00
jakob.scheid 211dae5f7b style: ensure newlines at the end of each file 2026-08-08 15:23:05 +02:00
12 changed files with 24 additions and 135 deletions
-62
View File
@@ -1,62 +0,0 @@
# Copyright 2026 Seekra
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Deploy on production
on:
release:
types:
- published
permissions:
contents: read
jobs:
deploy:
if: ${{ !github.event.release.prerelease && !github.event.release.draft }}
name: Deploy on production
runs-on: node-minio
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
set -euo pipefail
npm install
- name: Build
run: |
set -euo pipefail
npm run build
- name: Set alias
run: mc alias set minio ${{ vars.S3_PROD_URL }} ${{ secrets.S3_PROD_ACCESS_KEY }} ${{ secrets.S3_PROD_SECRET_KEY }}
- name: Upload build artifacts to S3
run: |
set -euo pipefail
BUCKET=${{ vars.S3_PROD_BUCKET_NAME }}
BUILD_ID=$(date +%s)-$(git rev-parse --short HEAD)
echo "Build ID: $BUILD_ID"
mc cp --recursive ./dist/ "minio/$BUCKET/builds/$BUILD_ID/"
echo "Copied files"
echo "$BUILD_ID" | mc pipe "minio/$BUCKET/current"
echo "Updated current build pointer"
-62
View File
@@ -1,62 +0,0 @@
# Copyright 2026 Seekra
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Deploy on staging
on:
release:
types:
- published
permissions:
contents: read
jobs:
deploy:
if: ${{ github.event.release.prerelease && !github.event.release.draft }}
name: Deploy on staging
runs-on: node-minio
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
set -euo pipefail
npm install
- name: Build
run: |
set -euo pipefail
npm run build
- name: Set alias
run: mc alias set minio ${{ vars.S3_STAGING_URL }} ${{ secrets.S3_STAGING_ACCESS_KEY }} ${{ secrets.S3_STAGING_SECRET_KEY }}
- name: Upload build artifacts to S3
run: |
set -euo pipefail
BUCKET=${{ vars.S3_STAGING_BUCKET_NAME }}
BUILD_ID=$(date +%s)-$(git rev-parse --short HEAD)
echo "Build ID: $BUILD_ID"
mc cp --recursive ./dist/ "minio/$BUCKET/builds/$BUILD_ID/"
echo "Copied files"
echo "$BUILD_ID" | mc pipe "minio/$BUCKET/current"
echo "Updated current build pointer"
+3 -8
View File
@@ -1,6 +1,6 @@
# Changelog
## [0.1.0] - 2026-08-09
## [Unreleased]
### Added
@@ -8,14 +8,9 @@
- Settings page
- Footer
- Navbar
- Search bar
- Searchbar
- Icons
- Internationalization and some major languages
- Color scheme
- Search results view with error message which indicates that the search is not available
- Settings
- Setup scripts
- License script
- Prettier configuration
- ESLint configuration
- Legal notice page
- Settings renderer
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "frontend",
"version": "1.0.0",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "frontend",
"version": "1.0.0",
"version": "0.0.0",
"dependencies": {
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
"version": "1.0.0",
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
+12
View File
@@ -18,6 +18,9 @@ limitations under the License.
import logo from '@/assets/images/logo.svg';
import SearchBar from '@/features/search/components/SearchBar.vue';
import { ref } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const searchQuery = ref('');
</script>
@@ -26,6 +29,9 @@ const searchQuery = ref('');
<div class="search-content main-content-padding">
<header class="global-header">
<img :src="logo" alt="Seekra" class="header-logo" />
<span class="slogan">
{{ t('slogan') }}
</span>
</header>
<div class="search-container">
@@ -60,6 +66,12 @@ const searchQuery = ref('');
max-width: 100%;
}
.slogan {
margin-top: 1rem;
font-size: small;
line-height: normal;
}
.search-container {
width: 70%;
max-width: 624px;
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Gebaut zum Suchen.",
"settings": {
"input": {
"done": {
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Built to search.",
"settings": {
"input": {
"done": {
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Hecho para buscar.",
"settings": {
"input": {
"done": {
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Conçu pour chercher.",
"settings": {
"input": {
"done": {
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Costruito per cercare.",
"settings": {
"input": {
"done": {
+1
View File
@@ -38,6 +38,7 @@
}
}
},
"slogan": "Feito para pesquisar.",
"settings": {
"input": {
"done": {