Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# --- Server-side secrets (not exposed to client)

# Admin Credentials
NUXT_ADMIN_USERNAME=admin
NUXT_ADMIN_PASSWORD=123
# Admin Credentials (defaults to admin / 123)
NUXT_ADMIN_USERNAME=
NUXT_ADMIN_PASSWORD=

# JWT Secret for Admin Authentication
NUXT_JWT_SECRET=tryUJ0zQbstPbTOrezme+Fv+KndzDNRx5lmSeelr2ial2/2yV8HqLeQ2felJafqf
# JWT Secret for Admin Authentication (defaults to tryUJ0zQbstPbTOrezme+Fv+KndzDNRx5lmSeelr2ial2/2yV8HqLeQ2felJafqf)
NUXT_JWT_SECRET=

# --- Public configuration (available on both client and server)

# WebSocket URL for client connections (optional - defaults to current host)
# WebSocket URL for client connections (defaults to current host)
# NUXT_PUBLIC_WS_URL=ws://localhost:3000

# API URL for client requests (optional - defaults to current host)
# API URL for client requests (defaults to current host)
# NUXT_PUBLIC_API_URL=http://localhost:3000

# Server Configuration
# NUXT_PUBLIC_HOST=0.0.0.0
# NUXT_PUBLIC_PORT=3000

# Show debug (optional - defaults to false)
# NUXT_PUBLIC_DEBUG_SHOW_WEBSOCKET_CONNECTIONS_IN_FRONTEND=true
# NUXT_PUBLIC_DEBUG_SHOW_CONSOLE_OUTPUTS=true
# Show debug (defaults to false / false)
# NUXT_PUBLIC_DEBUG_SHOW_WEBSOCKET_CONNECTIONS_IN_FRONTEND=false
# NUXT_PUBLIC_DEBUG_SHOW_CONSOLE_OUTPUTS=false

# Emoji-Sent Cooldown in Milliseconds
NUXT_PUBLIC_EMOJI_COOLDOWN_MS=1500
# Emoji-Sent Cooldown in Milliseconds (defaults to 1500)
NUXT_PUBLIC_EMOJI_COOLDOWN_MS=
11 changes: 0 additions & 11 deletions docs/setup-local.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,6 @@ openssl rand -base64 48

Copy the generated secret and update `NUXT_JWT_SECRET` in your `.env` file.

## Development Commands

- `vp run dev` - Start development server
- `vp run build:ssr` - Build for production (server-rendered)
- `vp run build:ssg` - Static site generation build
- `vp run preview` - Preview production build
- `vp run test` - Run all checks (lint + types)
- `vp run test:lint-format` - Lint and format check via ESLint
- `vp run test:type` - Run TypeScript checks
- `vp run fix:lint` - Auto-fix lint and format issues

## Data Management

### Storage Location
Expand Down
66 changes: 37 additions & 29 deletions nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,18 @@
import { version } from './package.json'
import type { ConfigLayerMeta, InputConfig } from 'c12'
import type { NuxtConfig } from 'nuxt/schema'

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({

const configBase: InputConfig<NuxtConfig, ConfigLayerMeta> = {
compatibilityDate: '2025-07-15',

css: [
'~/assets/css/main.css',
'~/assets/css/main.css', // including TailwindCSS
],

devtools: {
enabled: true,
},

eslint: { // for `@nuxt/eslint`
config: {
stylistic: {
indent: 2,
quotes: 'single',
},
},
},

i18n: {
defaultLocale: 'en',
locales: [
{ code: 'en', language: 'en-US', name: 'English' },
{ code: 'de', language: 'de-DE', name: 'Deutsch' },
{ code: 'ja', language: 'ja-JP', name: '日本語' },
],
vueI18n: './i18n.config.ts', // Using a separate file for better organization
},
modules: [
'@nuxt/eslint',
'@nuxtjs/i18n',
'@nuxtjs/tailwindcss',
'@vueuse/nuxt',
],

nitro: {
devStorage: {
data: { base: './.data/db', driver: 'fs' },
Expand Down Expand Up @@ -79,4 +54,37 @@ export default defineNuxtConfig({
typescript: {
shim: false,
},
}

const configModules: InputConfig<NuxtConfig, ConfigLayerMeta> = {
eslint: { // for `@nuxt/eslint`
config: {
stylistic: {
indent: 2,
quotes: 'single',
},
},
},

i18n: {
defaultLocale: 'en',
locales: [
{ code: 'en', language: 'en-US', name: 'English' },
{ code: 'de', language: 'de-DE', name: 'Deutsch' },
{ code: 'ja', language: 'ja-JP', name: '日本語' },
],
vueI18n: './i18n.config.ts', // Using a separate file for better organization
},
}

export default defineNuxtConfig({
modules: [
'@nuxt/eslint',
'@nuxtjs/i18n',
'@nuxtjs/tailwindcss',
'@vueuse/nuxt',
],

...configBase,
...configModules,
})
9 changes: 3 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@
"fix:package-json": "vp exec prettier-package-json --write package.json",
"postinstall": "nuxt prepare",
"install:clean": "vp install --frozen-lockfile --prefer-offline",
"nuxi": "nuxi",
"nuxt": "nuxt",
"prepare": "vp config --hooks-only",
"preview": "nuxt preview",
"preview:ssg": "vp dlx serve .output/public",
"preview:ssr": "nuxt preview",
"test": "concurrently --names \"test:lint-format,test:package-json,test:type\" \"vp exec eslint .\" \"vp exec prettier-package-json --list-different package.json\" \"nuxt typecheck\"",
Expand All @@ -38,13 +35,15 @@
"test:type": "nuxt typecheck"
},
"dependencies": {
"nuxt": "~4.1.2"
"nuxt": "~4.1.2",
"vue": "~3.5.22"
},
"devDependencies": {
"@nuxt/eslint": "~1.15.2",
"@nuxtjs/i18n": "^10.1.1",
"@nuxtjs/tailwindcss": "~6.14.0",
"@paralleldrive/cuid2": "~2.2.2",
"@stylistic/eslint-plugin": "~5.10.0",
"@vueuse/core": "~13.9.0",
"@vueuse/nuxt": "~13.9.0",
"concurrently": "~9.2.1",
Expand All @@ -63,8 +62,6 @@
"prettier-package-json": "~2.8.0",
"typescript": "~5.9.3",
"vite-plus": "catalog:",
"vue": "~3.5.22",
"vue-router": "~4.5.1",
"vue-tsc": "~3.1.0"
},
"keywords": [
Expand Down
14 changes: 7 additions & 7 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading