2024-04-15 03:16:57 +02:00
|
|
|
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
|
|
|
export default defineNuxtConfig({
|
|
|
|
|
modules: [
|
|
|
|
|
"@nuxtjs/tailwindcss",
|
|
|
|
|
"@vueuse/nuxt",
|
2024-04-22 09:38:51 +02:00
|
|
|
"nuxt-headlessui",
|
|
|
|
|
"@nuxt/fonts",
|
2024-05-05 05:33:51 +02:00
|
|
|
"@vee-validate/nuxt",
|
|
|
|
|
"nuxt-security",
|
2024-05-12 09:30:02 +02:00
|
|
|
"@vite-pwa/nuxt",
|
2024-11-29 22:39:42 +01:00
|
|
|
"shadcn-nuxt",
|
|
|
|
|
"@nuxtjs/color-mode",
|
2024-04-15 03:16:57 +02:00
|
|
|
],
|
2024-05-12 11:04:00 +02:00
|
|
|
vue: {
|
|
|
|
|
compilerOptions: {
|
|
|
|
|
isCustomElement: (tag) => tag === "iconify-icon",
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-06-21 04:09:09 +02:00
|
|
|
components: {
|
|
|
|
|
dirs: [],
|
|
|
|
|
},
|
2024-06-12 02:15:51 +02:00
|
|
|
future: {
|
|
|
|
|
compatibilityVersion: 4,
|
|
|
|
|
},
|
2024-11-29 22:39:42 +01:00
|
|
|
shadcn: {
|
|
|
|
|
componentDir: "./components/ui",
|
|
|
|
|
},
|
2024-11-05 17:00:14 +01:00
|
|
|
compatibilityDate: "2024-11-05",
|
2024-05-12 09:30:02 +02:00
|
|
|
pwa: {
|
|
|
|
|
manifest: {
|
2024-08-28 00:23:29 +02:00
|
|
|
name: "Versia",
|
|
|
|
|
short_name: "Versia",
|
|
|
|
|
description: "Frontend for the Versia social network",
|
2024-05-12 09:30:02 +02:00
|
|
|
theme_color: "#f9a8d4",
|
2024-06-16 01:10:59 +02:00
|
|
|
background_color: "#131313",
|
2024-05-12 09:30:02 +02:00
|
|
|
display: "standalone",
|
|
|
|
|
lang: "en",
|
|
|
|
|
categories: ["social", "development"],
|
2024-06-16 00:41:23 +02:00
|
|
|
orientation: "natural",
|
|
|
|
|
screenshots: [
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/desktop/homepage.webp",
|
|
|
|
|
sizes: "1920x1049",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "wide",
|
|
|
|
|
label: "Homepage",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/desktop/account.webp",
|
|
|
|
|
sizes: "1920x1049",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "wide",
|
|
|
|
|
label: "Viewing an account",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/desktop/account-switcher.webp",
|
|
|
|
|
sizes: "1920x1049",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "wide",
|
|
|
|
|
label: "Account switcher",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/mobile/homepage.webp",
|
|
|
|
|
sizes: "390x844",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "narrow",
|
|
|
|
|
label: "Homepage",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/mobile/account.webp",
|
|
|
|
|
sizes: "390x844",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "narrow",
|
|
|
|
|
label: "Viewing an account",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
src: "screenshots/mobile/account-switcher.webp",
|
|
|
|
|
sizes: "390x844",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "narrow",
|
|
|
|
|
label: "Account switcher",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 01:08:22 +02:00
|
|
|
src: "screenshots/mobile/note-menu.webp",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "390x844",
|
|
|
|
|
type: "image/webp",
|
|
|
|
|
form_factor: "narrow",
|
|
|
|
|
label: "Menu for a note",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
icons: [
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/16.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "16x16",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/20.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "20x20",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/29.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "29x29",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/32.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "32x32",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/40.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "40x40",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/50.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "50x50",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/57.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "57x57",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/58.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "58x58",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/60.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "60x60",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/64.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "64x64",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/72.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "72x72",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/76.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "76x76",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/80.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "80x80",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/87.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "87x87",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/100.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "100x100",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/114.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "114x114",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/120.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "120x120",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/128.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "128x128",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/144.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "144x144",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/152.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "152x152",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/167.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "167x167",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/180.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "180x180",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/192.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "192x192",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/256.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "256x256",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/512.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "512x512",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-06-16 00:54:25 +02:00
|
|
|
src: "icons/ios/1024.png",
|
2024-06-16 00:41:23 +02:00
|
|
|
sizes: "1024x1024",
|
|
|
|
|
},
|
|
|
|
|
],
|
2024-05-12 09:30:02 +02:00
|
|
|
},
|
|
|
|
|
},
|
2024-05-05 05:33:51 +02:00
|
|
|
security: {
|
|
|
|
|
headers: {
|
|
|
|
|
// Nuxt DevTools
|
2024-11-08 08:18:57 +01:00
|
|
|
crossOriginEmbedderPolicy: "credentialless",
|
2024-05-05 05:33:51 +02:00
|
|
|
contentSecurityPolicy: {
|
2024-06-06 03:35:09 +02:00
|
|
|
"img-src": ["'self'", "data:", "https:", "blob:"],
|
2024-05-05 05:33:51 +02:00
|
|
|
"script-src": ["'nonce-{{nonce}}'", "'strict-dynamic'"],
|
2024-06-11 21:58:18 +02:00
|
|
|
// Allow all origins for form-action, so that clients registering custom
|
|
|
|
|
// protocol handlers will work (native clients for example)
|
|
|
|
|
"form-action": ["*"],
|
2024-06-06 03:35:09 +02:00
|
|
|
"media-src": ["'self'", "https:", "blob:"],
|
2024-05-05 05:33:51 +02:00
|
|
|
},
|
2024-05-13 05:29:21 +02:00
|
|
|
crossOriginResourcePolicy: "cross-origin",
|
2024-05-05 05:33:51 +02:00
|
|
|
xFrameOptions: "DENY",
|
2024-06-06 05:19:03 +02:00
|
|
|
permissionsPolicy: {
|
|
|
|
|
fullscreen: ["'self'", "blob:"],
|
|
|
|
|
},
|
2024-05-05 05:33:51 +02:00
|
|
|
},
|
|
|
|
|
rateLimiter: {
|
|
|
|
|
headers: true,
|
|
|
|
|
tokensPerInterval: 300,
|
|
|
|
|
interval: 300000,
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 03:16:57 +02:00
|
|
|
app: {
|
|
|
|
|
head: {
|
|
|
|
|
link: [
|
|
|
|
|
{
|
|
|
|
|
rel: "icon",
|
|
|
|
|
href: "/favicon.png",
|
|
|
|
|
type: "image/png",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
htmlAttrs: { lang: "en-us" },
|
|
|
|
|
},
|
2024-05-01 10:40:33 +02:00
|
|
|
keepalive: true,
|
2024-04-15 03:16:57 +02:00
|
|
|
},
|
|
|
|
|
nitro: {
|
2024-04-22 21:55:03 +02:00
|
|
|
preset: "bun",
|
2024-04-15 03:16:57 +02:00
|
|
|
minify: true,
|
|
|
|
|
prerender: {
|
|
|
|
|
failOnError: true,
|
|
|
|
|
},
|
2024-04-22 23:07:01 +02:00
|
|
|
compressPublicAssets: {
|
|
|
|
|
brotli: false,
|
2024-04-22 23:46:02 +02:00
|
|
|
gzip: false,
|
2024-04-22 23:07:01 +02:00
|
|
|
},
|
2024-11-05 15:03:55 +01:00
|
|
|
publicAssets: [
|
|
|
|
|
{
|
|
|
|
|
baseURL: "emojis",
|
|
|
|
|
dir: "public/emojis",
|
|
|
|
|
maxAge: 31536000,
|
2024-11-05 14:25:28 +01:00
|
|
|
},
|
2024-11-05 15:03:55 +01:00
|
|
|
],
|
2024-04-15 03:16:57 +02:00
|
|
|
},
|
2024-04-22 09:38:51 +02:00
|
|
|
veeValidate: {
|
|
|
|
|
autoImports: true,
|
|
|
|
|
componentNames: {
|
|
|
|
|
Form: "VeeForm",
|
|
|
|
|
Field: "VeeField",
|
|
|
|
|
FieldArray: "VeeFieldArray",
|
|
|
|
|
ErrorMessage: "VeeErrorMessage",
|
|
|
|
|
},
|
2024-04-15 03:16:57 +02:00
|
|
|
},
|
|
|
|
|
runtimeConfig: {
|
|
|
|
|
public: {
|
2024-04-22 09:38:51 +02:00
|
|
|
apiHost: "https://social.lysand.org",
|
2024-06-26 06:53:44 +02:00
|
|
|
onionApiHost: undefined,
|
2024-04-15 03:16:57 +02:00
|
|
|
},
|
|
|
|
|
},
|
2024-04-28 07:02:27 +02:00
|
|
|
devtools: {
|
2024-06-19 08:39:18 +02:00
|
|
|
enabled: false,
|
2024-05-12 08:13:35 +02:00
|
|
|
|
|
|
|
|
timeline: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
},
|
2024-04-28 07:02:27 +02:00
|
|
|
},
|
2024-04-15 03:16:57 +02:00
|
|
|
});
|