feat: add meta description everywhere
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
kolaente 2024-10-12 14:08:36 +02:00
parent e68435e01d
commit d4e51b9911
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
87 changed files with 703 additions and 121 deletions

103
generate-descriptions.js Executable file
View File

@ -0,0 +1,103 @@
#!/usr/bin/env node
import fs from 'fs/promises'
import path from 'path'
import Anthropic from '@anthropic-ai/sdk'
import matter from 'gray-matter'
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
})
const missingOnly = process.argv.includes('--missing-only') || process.argv.includes('-m')
function extractMetaDescription(input) {
const regex = /<meta_description>\s*([\s\S]*?)\s*<\/meta_description>/
const match = input.match(regex)
if (match && match[1]) {
return match[1].replace(/(\r\n|\n|\r)/gm, '').trim()
}
return null
}
async function processFile(filePath) {
try {
const content = await fs.readFile(filePath, 'utf-8')
const {data, content: documentContent} = matter(content)
if (missingOnly && data.description) {
console.log(`Skipping ${filePath}: Description already exists`)
return
}
const msg = await anthropic.messages.create({
model: 'claude-3-5-sonnet-20240620',
max_tokens: 1024,
messages: [{
role: 'user', content: `You are tasked with writing a short description for a meta description tag based on provided content. This description will be used in search engine results to give users a brief overview of the page's content.
Follow these guidelines when writing the meta description:
1. Keep it concise and informative
2. Accurately summarize the main topic of the content
3. Include relevant keywords naturally
4. Make it compelling to encourage click-throughs
5. Avoid duplicate content from the text
6. Do not use quotes or special characters
Here is the content to analyze:
<content>
${documentContent}
</content>
Carefully read and analyze the provided content. Identify the main topic, key points, and any relevant keywords. Based on your analysis, write a concise meta description that effectively summarizes the content and entices users to click through to the page.
Your meta description should be between 150-160 characters long, including spaces. This length is optimal for display in search engine results pages.
Provide your meta description inside <meta_description> tags. Do not include the character count or any other text outside these tags.
<meta_description>
[Your 150-160 character meta description goes here]
</meta_description>`,
}],
})
const description = extractMetaDescription(msg.content[0].text)
const updatedFrontmatter = {
...data,
description,
}
const updatedContent = matter.stringify(documentContent, updatedFrontmatter)
await fs.writeFile(filePath, updatedContent)
console.log(`Updated: ${filePath}`)
} catch (error) {
console.error(`Error processing ${filePath}:`, error)
}
}
async function processDirectory(directory) {
try {
const files = await fs.readdir(directory)
for (const file of files) {
const filePath = path.join(directory, file)
const stats = await fs.stat(filePath)
if (stats.isDirectory()) {
await processDirectory(filePath)
} else if (path.extname(file) === '.mdoc') {
await processFile(filePath)
}
}
} catch (error) {
console.error(`Error processing directory ${directory}:`, error)
}
}
const contentDirectory = path.join(process.cwd(), 'src', 'content')
processDirectory(contentDirectory)
.then(() => console.log('Processing complete.'))
.catch((error) => console.error('An error occurred:', error))

View File

@ -29,6 +29,8 @@
"typescript": "^5.4.5"
},
"devDependencies": {
"@anthropic-ai/sdk": "^0.29.0",
"gray-matter": "^4.0.3",
"marked": "^14.1.2",
"sharp": "^0.33.4"
}

170
pnpm-lock.yaml generated
View File

@ -54,6 +54,12 @@ importers:
specifier: ^5.4.5
version: 5.6.3
devDependencies:
'@anthropic-ai/sdk':
specifier: ^0.29.0
version: 0.29.0
gray-matter:
specifier: ^4.0.3
version: 4.0.3
marked:
specifier: ^14.1.2
version: 14.1.2
@ -71,6 +77,9 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
'@anthropic-ai/sdk@0.29.0':
resolution: {integrity: sha512-3Hj28b7pAqFbGW19jXRqMvyDr09qBcL0iEuvERpbjXaqWD8dwfmMiwWreNcRvAKjeP4W4xTh0JStONvwhOTjEw==}
'@astrojs/check@0.9.3':
resolution: {integrity: sha512-I6Dz45bMI5YRbp4yK2LKWsHH3/kkHRGdPGruGkLap6pqxhdcNh7oCgN04Ac+haDfc9ow5BYPGPmEhkwef15GQQ==}
hasBin: true
@ -911,9 +920,15 @@ packages:
'@types/nlcst@2.0.3':
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
'@types/node-fetch@2.6.11':
resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@18.19.55':
resolution: {integrity: sha512-zzw5Vw52205Zr/nmErSEkN5FLqXPuKX/k5d1D7RKHATGqU7y6YfX9QxZraUzUrFGqH6XzOzG196BC35ltJC4Cw==}
'@types/node@22.5.5':
resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==}
@ -952,6 +967,10 @@ packages:
'@vscode/l10n@0.0.18':
resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
abort-controller@3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
engines: {node: '>=6.5'}
acorn-walk@8.3.4:
resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
engines: {node: '>=0.4.0'}
@ -961,6 +980,10 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
agentkeepalive@4.5.0:
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
engines: {node: '>= 8.0.0'}
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
@ -1027,6 +1050,9 @@ packages:
engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
autoprefixer@10.4.20:
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
engines: {node: ^10 || ^12 || >=14}
@ -1160,6 +1186,10 @@ packages:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
engines: {node: '>=12.5.0'}
combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@ -1219,6 +1249,10 @@ packages:
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
depd@2.0.0:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
@ -1354,6 +1388,10 @@ packages:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
event-target-shim@5.0.1:
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
engines: {node: '>=6'}
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
@ -1404,6 +1442,17 @@ packages:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
form-data-encoder@1.7.2:
resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
form-data@4.0.1:
resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
engines: {node: '>= 6'}
formdata-node@4.4.1:
resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
engines: {node: '>= 12.20'}
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
@ -1529,6 +1578,9 @@ packages:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
humanize-ms@1.2.1:
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
import-meta-resolve@4.1.0:
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
@ -1840,6 +1892,14 @@ packages:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@ -1903,6 +1963,19 @@ packages:
nlcst-to-string@4.0.0:
resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
node-domexception@1.0.0:
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
engines: {node: '>=10.5.0'}
node-fetch@2.7.0:
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
@ -2369,6 +2442,9 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@ -2409,6 +2485,9 @@ packages:
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
@ -2633,6 +2712,16 @@ packages:
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
web-streams-polyfill@4.0.0-beta.3:
resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
engines: {node: '>= 14'}
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
which-pm-runs@1.1.0:
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
engines: {node: '>=4'}
@ -2753,6 +2842,18 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
'@anthropic-ai/sdk@0.29.0':
dependencies:
'@types/node': 18.19.55
'@types/node-fetch': 2.6.11
abort-controller: 3.0.0
agentkeepalive: 4.5.0
form-data-encoder: 1.7.2
formdata-node: 4.4.1
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
'@astrojs/check@0.9.3(typescript@5.6.3)':
dependencies:
'@astrojs/language-server': 2.14.2(typescript@5.6.3)
@ -3523,10 +3624,19 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
'@types/node-fetch@2.6.11':
dependencies:
'@types/node': 22.5.5
form-data: 4.0.1
'@types/node-forge@1.3.11':
dependencies:
'@types/node': 22.5.5
'@types/node@18.19.55':
dependencies:
undici-types: 5.26.5
'@types/node@22.5.5':
dependencies:
undici-types: 6.19.8
@ -3587,12 +3697,20 @@ snapshots:
'@vscode/l10n@0.0.18': {}
abort-controller@3.0.0:
dependencies:
event-target-shim: 5.0.1
acorn-walk@8.3.4:
dependencies:
acorn: 8.12.1
acorn@8.12.1: {}
agentkeepalive@4.5.0:
dependencies:
humanize-ms: 1.2.1
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
@ -3733,6 +3851,8 @@ snapshots:
- terser
- typescript
asynckit@0.4.0: {}
autoprefixer@10.4.20(postcss@8.4.47):
dependencies:
browserslist: 4.23.3
@ -3871,6 +3991,10 @@ snapshots:
color-convert: 2.0.1
color-string: 1.9.1
combined-stream@1.0.8:
dependencies:
delayed-stream: 1.0.0
comma-separated-tokens@2.0.3: {}
commander@4.1.1: {}
@ -3909,6 +4033,8 @@ snapshots:
defu@6.1.4: {}
delayed-stream@1.0.0: {}
depd@2.0.0: {}
dequal@2.0.3: {}
@ -4051,6 +4177,8 @@ snapshots:
etag@1.8.1: {}
event-target-shim@5.0.1: {}
eventemitter3@5.0.1: {}
exit-hook@2.2.1: {}
@ -4100,6 +4228,19 @@ snapshots:
cross-spawn: 7.0.3
signal-exit: 4.1.0
form-data-encoder@1.7.2: {}
form-data@4.0.1:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
formdata-node@4.4.1:
dependencies:
node-domexception: 1.0.0
web-streams-polyfill: 4.0.0-beta.3
fraction.js@4.3.7: {}
fresh@0.5.2: {}
@ -4278,6 +4419,10 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
humanize-ms@1.2.1:
dependencies:
ms: 2.1.3
import-meta-resolve@4.1.0: {}
inherits@2.0.4: {}
@ -4732,6 +4877,12 @@ snapshots:
braces: 3.0.3
picomatch: 2.3.1
mime-db@1.52.0: {}
mime-types@2.1.35:
dependencies:
mime-db: 1.52.0
mime@1.6.0: {}
mime@3.0.0: {}
@ -4789,6 +4940,12 @@ snapshots:
dependencies:
'@types/nlcst': 2.0.3
node-domexception@1.0.0: {}
node-fetch@2.7.0:
dependencies:
whatwg-url: 5.0.0
node-forge@1.3.1: {}
node-releases@2.0.18: {}
@ -5358,6 +5515,8 @@ snapshots:
toidentifier@1.0.1: {}
tr46@0.0.3: {}
trim-lines@3.0.1: {}
trough@2.2.0: {}
@ -5382,6 +5541,8 @@ snapshots:
ufo@1.5.4: {}
undici-types@5.26.5: {}
undici-types@6.19.8: {}
undici@5.28.4:
@ -5617,6 +5778,15 @@ snapshots:
web-namespaces@2.0.1: {}
web-streams-polyfill@4.0.0-beta.3: {}
webidl-conversions@3.0.1: {}
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
which-pm-runs@1.1.0: {}
which-pm@3.0.0:

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.13.0 is released"
date: 2020-05-12T12:00:00+00:00
title: Vikunja 0.13.0 is released
date: 2020-05-12T12:00:00.000Z
slug: /vikunja-0.13.0-is-released
description: >-
Discover Vikunja's latest release featuring Kanban boards, 2FA, and API
improvements. Explore new task management capabilities and frontend
enhancements for better productivity.
---
This is a big release!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.14.0 is released"
date: 2020-07-01T12:00:00+00:00
title: Vikunja 0.14.0 is released
date: 2020-07-01T12:00:00.000Z
slug: /vikunja-0.14.0-is-released
description: >-
Discover Vikunja 0.14.0's new features: list backgrounds, todoist migration,
task filters, and more. Explore improved UI, backup options, and repeating
task enhancements for better productivity.
---
This is (again?) a rather big release!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.14.1 is released"
date: 2020-07-07T12:00:00+00:00
title: Vikunja 0.14.1 is released
date: 2020-07-07T12:00:00.000Z
slug: /vikunja-0.14.1-is-released
description: >-
Vikunja 0.14.1 release: API bugfixes and improvements. Download from the
official page or Docker Hub. Includes fixes for list creation, user decoding,
and Todoist import. Updated documentation theme.
---
This is a smaller bugfix release with some improvements for the api.
@ -17,4 +21,4 @@ As always, you can grab a release from [the downloads page](https://dl.vikunja.i
### Changed
* Update docs theme
* Update docs theme

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.15.0 is released"
date: 2020-10-19T12:00:00+00:00
title: Vikunja 0.15.0 is released
date: 2020-10-19T12:00:00.000Z
slug: /vikunja-0.15.0-is-released
description: >-
Discover Vikunja 0.15.0's new features: favorite lists and tasks, saved
filters, user management via CLI, keyboard shortcuts, and desktop app. Upgrade
now for enhanced productivity.
---
Long time no release! This is again a rather big release (I feel like I'm writing that way too often).
@ -44,4 +48,4 @@ Starting with this release, you can run the frontend as a [standalone desktop in
### All changes
As usual, the full list of changes is available in the release notes from the [api ](https://kolaente.dev/vikunja/api/releases/tag/v0.15.0) and [frontend ](https://kolaente.dev/vikunja/frontend/releases/tag/v0.15.0) repos.
As usual, the full list of changes is available in the release notes from the [api ](https://kolaente.dev/vikunja/api/releases/tag/v0.15.0) and [frontend ](https://kolaente.dev/vikunja/frontend/releases/tag/v0.15.0) repos.

View File

@ -1,7 +1,11 @@
---
title: "[API] Vikunja 0.15.1 is released"
date: 2020-10-20T12:00:00+00:00
title: '[API] Vikunja 0.15.1 is released'
date: 2020-10-20T12:00:00.000Z
slug: /api-vikunja-0.15.1-is-released
description: >-
Quick fix for Vikunja API bug: Resolves issue with creating new tasks when
metrics are enabled. Download the latest release or Docker image for improved
functionality.
---
This is a quick fix for a bug which prevented creating new tasks when metrics were enabled.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.16.0 is released"
date: 2021-01-10T12:00:00+00:00
title: Vikunja 0.16.0 is released
date: 2021-01-10T12:00:00.000Z
slug: /vikunja-0.16.0-is-released
description: >-
Discover Vikunja 0.16.0: New desktop app, enhanced filters, Microsoft To-Do
and Trello migration, email reminders, and OpenID Connect support. Upgrade now
for improved task management.
---
New year, new Vikunja version (I know I know, I'm two weeks late).

View File

@ -1,7 +1,10 @@
---
title: "[API] Vikunja 0.16.1 is released"
date: 2021-04-22T12:00:00+00:00
title: '[API] Vikunja 0.16.1 is released'
date: 2021-04-22T12:00:00.000Z
slug: /api-vikunja-0.16.1-is-released
description: >-
Security update for Vikunja API v0.16.1 now available. Download the latest
release or access via Docker Hub for enhanced protection. Upgrade recommended.
---
This is a security release. Upgrading is highly encouraged.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.17.0 is released"
date: 2021-05-11T21:00:00+02:00
title: Vikunja 0.17.0 is released
date: 2021-05-11T19:00:00.000Z
slug: /vikunja-0.17.0-is-released
description: >-
Discover Vikunja 0.17.0's new features: redesigned frontend, notifications,
link share enhancements, email reminders, and improved Kanban boards. Upgrade
now for a better task management experience.
---
I'm proud to announce Vikunja 0.17.0!

View File

@ -1,7 +1,11 @@
---
date: 2021-06-09T22:30:00+02:00
title: "[API] Vikunja 0.17.1 is released"
date: 2021-06-09T20:30:00.000Z
title: '[API] Vikunja 0.17.1 is released'
slug: /api-vikunja-0.17.1-is-released
description: >-
Vikunja 0.17.1 patch release fixes openid config parsing with JSON files.
Download the latest API update from the official page or Docker Hub for
improved functionality.
---
This is a small patch release which fixes parsing openid config when using a json config file.

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.18.0"
date: 2021-09-05T16:37:58+02:00
title: What's new in Vikunja 0.18.0
date: 2021-09-05T14:37:58.000Z
slug: /whats-new-in-vikunja-0.18.0
description: >-
Discover Vikunja 0.18.0: Quick Add Magic, global search, task reordering, and
more languages. Explore new features like user data export/import and enhanced
security. Download now!
---
I'm proud to announce Vikunja 0.18.0!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.18.1 is released"
date: 2021-09-08T19:50:26+02:00
title: Vikunja 0.18.1 is released
date: 2021-09-08T17:50:26.000Z
slug: /vikunja-0.18.1-is-released
description: >-
Vikunja patch release v0.18.1 fixes bugs in user data export, kanban board,
and repeating tasks. Upgrade available for API, frontend, and desktop. Check
changelogs and update instructions.
---
This is a quick patch release fixing bugs with the user data export, the kanban board and saving repeating tasks attributes.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.18.2 is released"
date: 2021-11-23T20:18:54+01:00
title: Vikunja 0.18.2 is released
date: 2021-11-23T19:18:54.000Z
slug: /vikunja-0.18.2-is-released
description: >-
Vikunja patch release 0.18.2 fixes bugs with saved filter renaming and API URL
setting. Includes frontend and desktop updates. See changelog and upgrade
instructions for details.
---
This is a quick patch release fixing bugs with renaming a saved filter and correctly setting the api url via env url in the docker image.

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.19.0"
date: 2022-08-03T20:37:08+02:00
title: What's new in Vikunja 0.19.0
date: 2022-08-03T18:37:08.000Z
slug: /whats-new-in-vikunja-0.19.0
description: >-
Discover Vikunja 0.19.0, the open-source to-do app with dark mode, mobile app,
and improved login. Explore new features like CalDAV tokens, date math
filters, and checklist indicators.
---
I'm proud to announce Vikunja 0.19.0!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.19.1 is released"
date: 2022-08-17T10:23:07+02:00
title: Vikunja 0.19.1 is released
date: 2022-08-17T08:23:07.000Z
slug: /vikunja-0.19.1-is-released
description: >-
Vikunja v0.19.1 patch release: Frontend and API fixes, improved dark mode,
arm32 support, and search enhancements. One breaking change for assignee
filtering. Upgrade instructions included.
---
This is a patch release with fixes in the frontend and api.

View File

@ -1,7 +1,11 @@
---
title: "[API] Vikunja 0.19.2 is released"
date: 2022-08-17T17:06:09+02:00
title: '[API] Vikunja 0.19.2 is released'
date: 2022-08-17T15:06:09.000Z
slug: /api-vikunja-0.19.2-is-released
description: >-
Critical bug fix for Vikunja API v0.19.2. Resolves issue with saved filters.
Urgent update recommended. Download latest binary or Docker image for
immediate upgrade.
---
This release fixes a critical bug which was introduced in the api in 0.19.1.

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.20.0"
date: 2022-10-28T12:28:44+02:00
title: What's new in Vikunja 0.20.0
date: 2022-10-28T10:28:44.000Z
slug: /whats-new-in-vikunja-0.20.0
description: >-
Discover Vikunja 0.20.0, the open-source to-do app with enhanced features like
Gantt chart improvements, task cover images, and TickTick import. Learn about
new updates and try it now!
---
I'm proud to announce Vikunja 0.20.0!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.20.1 was released"
date: 2022-11-11T12:05:34+01:00
title: Vikunja 0.20.1 was released
date: 2022-11-11T11:05:34.000Z
slug: /vikunja-0.20.1-was-released
description: >-
Vikunja v0.20.1 patch release: Important fixes for database connections, date
filtering, and task management. Includes frontend and API updates. Learn about
key changes and upgrade instructions.
---
This is a patch release with important fixes and refactorings in the frontend and api.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja Frontend 0.20.2 was released"
date: 2022-12-18T12:11:35+01:00
title: Vikunja Frontend 0.20.2 was released
date: 2022-12-18T11:11:35.000Z
slug: /vikunja-frontend-0.20.2-was-released
description: >-
Discover key updates in Vikunja's frontend patch release 0.20.2, including bug
fixes, UI improvements, and performance enhancements. Learn how to upgrade
your installation.
---
This is a patch release with important fixes and improvements in the frontend.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja frontend v0.20.3 and API v0.20.2 was released"
date: 2023-01-24T17:20:21+01:00
title: Vikunja frontend v0.20.3 and API v0.20.2 was released
date: 2023-01-24T16:20:21.000Z
slug: /vikunja-frontend-v0.20.3-and-api-v0.20.2-was-released
description: >-
Vikunja 0.20.3 patch release: Improved Todoist migration, fixed overdue
reminders, new Norwegian language option. Upgrade now for better task
management features.
---
This is a patch release with important fixes and improvements in the frontend and api.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja frontend v0.20.4 and API v0.20.3 was released"
date: 2023-03-10T14:58:56+01:00
title: Vikunja frontend v0.20.4 and API v0.20.3 was released
date: 2023-03-10T13:58:56.000Z
slug: /vikunja-frontend-v0.20.4-and-api-v0.20.3-was-released
description: >-
Vikunja 0.20.4 patch release: Important fixes for frontend and API, including
improved Docker images, migration fixes, and Kanban board enhancements. New
Helm Chart available.
---
This is a patch release with important fixes and improvements in the frontend and api.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja frontend v0.20.5 and API v0.20.4 was released"
date: 2023-03-12T10:25:18+01:00
slug: /vikunja-frontend-v0.20.5-and-api-v0.20.4-was-released
title: Vikunja frontend v0.20.5 and API v0.20.4 was released
date: 2023-03-12T09:25:18.000Z
slug: /vikunja-frontend-v0.20.5-and-api-v0.20.4-was-released
description: >-
Patch release for Vikunja: Fixes docker image issues for frontend and API
containers. Includes changelogs and upgrade instructions for improved
functionality.
---
This is a patch release which fixes a problem with the last release's docker images.

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.21.0"
date: 2023-07-07T16:11:10+02:00
title: What's new in Vikunja 0.21.0
date: 2023-07-07T14:11:10.000Z
slug: /whats-new-in-vikunja-0.21.0
description: >-
Discover Vikunja 0.21.0, the open-source to-do app with new features like
Projects, Relative Reminders, and improved Assignee Search. Organize tasks
effortlessly with this self-hostable solution.
---
I'm proud to announce Vikunja 0.21.0!

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.22.0"
date: 2023-12-19T16:24:51+01:00
title: What's new in Vikunja 0.22.0
date: 2023-12-19T15:24:51.000Z
slug: /whats-new-in-vikunja-0.22.0
description: >-
Discover Vikunja 0.22.0: The open-source to-do app with new API tokens,
webhooks, n8n integration, improved editor, and Typesense search support.
Organize tasks effortlessly.
---
I'm proud to announce Vikunja 0.22.0!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja frontend and API v0.22.1 was released"
date: 2024-01-28T19:53:14+01:00
title: Vikunja frontend and API v0.22.1 was released
date: 2024-01-28T18:53:14.000Z
slug: /vikunja-frontend-and-api-v0.22.1-was-released
description: >-
Discover the latest updates in Vikunja's patch release, featuring bug fixes,
new features, and performance improvements. Learn about datepicker
enhancements and task reminder updates.
---
This is a patch release with many small bug fixes and improvements.

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.23.0"
date: 2024-02-10T14:26:30+01:00
title: What's new in Vikunja 0.23.0
date: 2024-02-10T13:26:30.000Z
slug: /whats-new-in-vikunja-0.23.0
description: >-
Vikunja 0.23.0 release: API, frontend, and desktop now merged into one repo.
Learn about simplified deployment, configuration changes, and upgrade
instructions for this open-source to-do app.
---
I'm happy to announce Vikunja 0.23.0!

View File

@ -1,7 +1,11 @@
---
title: "What's new in Vikunja 0.24.0"
date: 2024-07-02T18:00:00+02:00
title: What's new in Vikunja 0.24.0
date: 2024-07-02T16:00:00.000Z
slug: /whats-new-in-vikunja-0.24.0
description: >-
Vikunja 0.24.0 release: New customizable views, improved filters, emoji
reactions, and OpenID team integration. Discover enhanced project management
features and UI updates.
---
Long time no see!

View File

@ -1,7 +1,11 @@
---
title: "Vikunja v0.24.1 was released"
date: 2024-07-18T17:00:00+01:00
title: Vikunja v0.24.1 was released
date: 2024-07-18T16:00:00.000Z
slug: /vikunja-v0.24.1-was-released
description: >-
Discover the latest updates in Vikunja 0.24.1: improved filters, enhanced
Kanban view, bug fixes, and performance upgrades. Learn about new features and
how to upgrade.
---
Following the release of 0.24.0 almost two weeks ago, this is a patch release with many small bug fixes and

View File

@ -1,7 +1,11 @@
---
title: "Vikunja v0.24.2 was released"
date: 2024-08-12T20:00:00+01:00
title: Vikunja v0.24.2 was released
date: 2024-08-12T19:00:00.000Z
slug: /vikunja-v0.24.2-was-released
description: >-
Discover the latest improvements in Vikunja 0.24.2. This patch update brings
bug fixes for tasks, views, and migration, along with performance enhancements
for a smoother project management experience.
---
Following the recent release of Vikunja 0.24.1, we're happy to announce the release of Vikunja 0.24.2, a patch update

View File

@ -1,7 +1,11 @@
---
title: "Vikunja v0.24.3 was released"
date: 2024-09-20T20:00:00+01:00
title: Vikunja v0.24.3 was released
date: 2024-09-20T19:00:00.000Z
slug: /vikunja-v0.24.3-was-released
description: >-
Discover the latest updates in Vikunja 0.24.3! Learn about fixes and
improvements for auth, CalDAV, filters, Kanban, projects, reminders, tasks,
and more. Upgrade now for enhanced functionality.
---
I'm excited to announce the release of Vikunja 0.24.3! This update brings a whole bunch of fixes and improvements to Vikunja.

View File

@ -1,7 +1,11 @@
---
title: "Vikunja 0.24.4: Enhancing Stability and User Experience"
date: 2024-09-29T20:00:00+01:00
title: 'Vikunja 0.24.4: Enhancing Stability and User Experience'
date: 2024-09-29T19:00:00.000Z
slug: /vikunja-v0.24.4-was-released
description: >-
Discover Vikunja 0.24.4: Latest patch update enhances task management with
improved stability, bug fixes, and user experience refinements. Upgrade now
for smoother productivity.
---
I'm excited to announce the release of Vikunja 0.24.4, the latest patch update focused on improving stability, fixing

View File

@ -4,6 +4,7 @@ const docsCollection = defineCollection({
type: 'content', // v2.5.0 and later
schema: z.object({
title: z.string(),
description: z.string(),
hideInMenu: z.boolean().optional(),
}),
})
@ -12,6 +13,7 @@ const changelogCollection = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
date: z.date(),
}),
})

View File

@ -1,6 +1,10 @@
---
title: "Adding new cli commands"
title: Adding new cli commands
slug: cli-commands
description: >-
Learn how to add CLI commands to Vikunja using the Cobra library. Explore the
structure of CLI functions, command implementation, and best practices for
extending Vikunja's command-line interface.
---
All cli-related functions are located in `pkg/cmd`.

View File

@ -1,6 +1,10 @@
---
title: "Configuration Options"
title: Configuration Options
slug: configuration-options
description: >-
Learn how to manage configuration in Go projects using Viper. Discover best
practices for adding new options, setting defaults, and retrieving values in
your code efficiently.
---
All configuration variables are declared in the `config` package.

View File

@ -1,6 +1,10 @@
---
title: "How to add a cron job task"
title: How to add a cron job task
slug: cron-tasks
description: >-
Learn how to implement cron jobs in Vikunja using the robfig/cron package.
Discover schedule syntax, task registration, and best practices for automated
task execution in Go.
---
Cron jobs are tasks which run on a predefined schedule.

View File

@ -1,6 +1,10 @@
---
title: "Database"
title: Database
slug: database
description: >-
Learn how to use xorm for database operations in Vikunja, including creating
tables, adding migrations, and managing test fixtures. Essential guide for
developers working with Vikunja's database layer.
---
Vikunja uses [xorm](https://xorm.io/) as an abstraction layer to handle the database connection.
@ -26,4 +30,4 @@ Adding data for test fixtures can be done via `yaml` files in `pkg/models/fixtur
The name of the yaml file should match the table name in the database.
Adding values to it is done via array definition inside it.
**Note**: Table and column names need to be in snake_case as that's what is used internally in the database and for mapping values from the database to xorm so your structs can use it.
**Note**: Table and column names need to be in snake_case as that's what is used internally in the database and for mapping values from the database to xorm so your structs can use it.

View File

@ -1,6 +1,10 @@
---
title: "Database Migrations"
title: Database Migrations
slug: database-migrations
description: >-
Learn how to manage database migrations in Vikunja, including automatic
execution, adding new migrations, and generating migration stubs. Discover
best practices for Vikunja development.
---
Vikunja runs all database migrations automatically on each start if needed.

View File

@ -1,6 +1,10 @@
---
title: "Development"
title: Development
slug: development
description: >-
Learn how to contribute to Vikunja, an open-source project management tool.
Guidelines for submitting pull requests, filing issues, and developing for API
and frontend. Join the community and help improve Vikunja.
---
## General

View File

@ -1,6 +1,10 @@
---
title: "Custom Errors"
title: Custom Errors
slug: custom-errors
description: >-
Learn how to define and implement custom errors in Vikunja's Go codebase.
Includes guidelines for creating error structs, functions, and HTTP error
responses with unique error codes.
---
All custom errors are defined in `pkg/models/errors.go`.
@ -62,4 +66,4 @@ func (err ErrUserDoesNotExist) HTTPError() web.HTTPError {
Message: "The user does not exist.",
}
}
```
```

View File

@ -1,6 +1,10 @@
---
title: "Events and Listeners"
title: Events and Listeners
slug: events-and-listeners
description: >-
Learn about Vikunja's event system: how to create, dispatch, and listen for
events using Go channels. Discover best practices for implementing the
observer pattern in your projects.
---
Vikunja provides a simple observer pattern mechanism through events and listeners.

View File

@ -1,6 +1,10 @@
---
title: "Add a new api endpoint/feature"
title: Add a new api endpoint/feature
slug: new-api-endpoints
description: >-
Learn about Vikunja's common web handler for creating REST endpoints,
including CRUD request handling, rights checks, and pagination. Explore API
features and development tools.
---
Most of the api endpoints/features of Vikunja are using the [common web handler](https://code.vikunja.io/web).

View File

@ -1,6 +1,10 @@
---
title: "Magefile"
title: Magefile
slug: magefile
description: >-
Discover how to use Mage for Vikunja development tasks. Learn about build,
check, release, test, and dev commands. Streamline your workflow with this
comprehensive guide to Magefile usage.
---
Vikunja uses [Mage](https://magefile.org/) to script common development tasks and even releasing.

View File

@ -1,6 +1,10 @@
---
title: "Metrics"
title: Metrics
slug: metrics
description: >-
Learn how to expose and manage metrics in Vikunja using Prometheus and Redis.
This guide covers creating, updating, and registering custom metrics for
efficient monitoring.
---
Metrics work by exposing a `/metrics` endpoint which can then be accessed by prometheus.

View File

@ -1,6 +1,10 @@
---
title: "Writing a migrator for Vikunja"
title: Writing a migrator for Vikunja
slug: migrations
description: >-
Learn how to migrate data to Vikunja from other to-do services. Discover
implementation methods, interfaces, and helper tools for seamless task
migration and integration.
---
It is possible to migrate data from other to-do services to Vikunja.

View File

@ -1,6 +1,10 @@
---
title: "Notifications"
title: Notifications
slug: notifications
description: >-
Learn how to create and send notifications in Vikunja using mail and database
methods. Discover implementation, customization, and testing techniques for
effective user communication.
---
Vikunja provides a simple abstraction to send notifications per mail and in the database.

View File

@ -1,6 +1,10 @@
---
title: "Releasing a new Vikunja version"
title: Releasing a new Vikunja version
slug: releasing-a-new-vikunja-version
description: >-
Comprehensive release checklist for Vikunja updates. Includes steps for
website updates, changelogs, tagging versions, package updates, blog posts,
and promotional activities.
---
This checklist is a collection of all steps usually involved when releasing a new version of Vikunja.

View File

@ -1,6 +1,10 @@
---
title: "Project Structure"
title: Project Structure
slug: project-structure
description: >-
Explore Vikunja's package structure and learn about key components like
caldav, config, models, and routes. Discover how to add features, handle
migrations, and work with the API.
---
This document explains what each package does.