Getting all the things working.

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2025-10-18 21:33:45 -04:00
parent 4502c92f9b
commit 6068faf026
5 changed files with 1770 additions and 0 deletions

102
frontend/eslint.config.js Normal file
View File

@@ -0,0 +1,102 @@
import typescript from '@typescript-eslint/eslint-plugin'
import typescriptParser from '@typescript-eslint/parser'
import vue from 'eslint-plugin-vue'
import vueParser from 'vue-eslint-parser'
import jsdoc from 'eslint-plugin-jsdoc'
import tsdoc from 'eslint-plugin-tsdoc'
export default [
// Ignore patterns (replaces .eslintignore)
{
ignores: [
'node_modules/',
'dist/',
'dist-ssr/',
'*.local',
'coverage/',
'.env*',
'.vscode/',
'.idea/',
'*.tmp',
'*.temp'
]
},
// JavaScript files
{
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
}
},
// TypeScript files
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parser: typescriptParser,
ecmaVersion: 'latest',
sourceType: 'module'
},
plugins: {
'@typescript-eslint': typescript,
jsdoc,
tsdoc
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
// TSDoc rules for TypeScript files
'tsdoc/syntax': 'error',
'jsdoc/require-description': 'error',
'jsdoc/require-param': 'error',
'jsdoc/require-param-description': 'error',
'jsdoc/require-returns': 'error',
'jsdoc/require-returns-description': 'error',
'jsdoc/check-param-names': 'error',
'jsdoc/check-tag-names': 'error',
'jsdoc/check-types': 'error',
'jsdoc/valid-types': 'error'
}
},
// Vue files
{
files: ['**/*.vue'],
languageOptions: {
parser: vueParser,
parserOptions: {
parser: typescriptParser,
ecmaVersion: 'latest',
sourceType: 'module'
}
},
plugins: {
vue,
'@typescript-eslint': typescript,
jsdoc,
tsdoc
},
rules: {
...vue.configs['vue3-essential'].rules,
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
// TSDoc rules for Vue files
'tsdoc/syntax': 'error',
'jsdoc/require-description': 'error',
'jsdoc/require-param': 'error',
'jsdoc/require-param-description': 'error',
'jsdoc/require-returns': 'error',
'jsdoc/require-returns-description': 'error',
'jsdoc/check-param-names': 'error',
'jsdoc/check-tag-names': 'error',
'jsdoc/check-types': 'error',
'jsdoc/valid-types': 'error'
}
}
]

13
frontend/index.html Normal file
View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Plex Playlist</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

19
frontend/src/App.vue Normal file
View File

@@ -0,0 +1,19 @@
<template>
<div id="app">
<h1>Plex Playlist</h1>
<p>Welcome to the Plex Playlist Manager</p>
</div>
</template>
<script setup lang="ts">
// Main App component
</script>
<style scoped>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

4
frontend/src/main.ts Normal file
View File

@@ -0,0 +1,4 @@
import { createApp } from 'vue';
import App from './App.vue';
createApp(App).mount('#app');

1632
frontend/yarn.lock Normal file

File diff suppressed because it is too large Load Diff