commit df3b6dc8c9896360de81e45859803745224bf657 Author: Anthony G <1@anthony.sh> Date: Mon Aug 10 14:14:34 2026 +0200 chore: scaffold project diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d27b1d8 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +DATABASE_URL="mysql://ombrora:ombrora@localhost:3306/ombrora" +STORAGE_PATH="/absolute/path/to/local/storage" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9644878 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +.next/ +.env +*.log +storage/ +worker/worker.pid diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fe0cb7c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +services: + db: + image: mariadb:11 + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: ombrora + MYSQL_USER: ombrora + MYSQL_PASSWORD: ombrora + ports: + - "3306:3306" + volumes: + - db_data:/var/lib/mysql + +volumes: + db_data: diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..e4f5738 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,5 @@ +import type { NextConfig } from 'next' + +const nextConfig: NextConfig = {} + +export default nextConfig diff --git a/package.json b/package.json new file mode 100644 index 0000000..7800915 --- /dev/null +++ b/package.json @@ -0,0 +1,55 @@ +{ + "name": "ombrora-ytdlp", + "version": "1.0.0", + "description": "", + "main": "index.js", + "directories": { + "doc": "docs" + }, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "test": "jest", + "worker": "ts-node -r tsconfig-paths/register worker/index.ts", + "worker:cleanup": "ts-node -r tsconfig-paths/register worker/cron-cleanup.ts", + "worker:check": "ts-node -r tsconfig-paths/register worker/cron-check.ts", + "db:migrate": "prisma migrate dev", + "db:generate": "prisma generate" + }, + "jest": { + "testEnvironment": "node", + "transform": { + "^.+\\.tsx?$": "ts-jest" + }, + "moduleNameMapper": { + "^@/(.*)$": "/src/$1" + }, + "testMatch": [ + "**/__tests__/**/*.test.ts" + ] + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "dependencies": { + "@prisma/client": "^7.9.1", + "next": "^16.3.0", + "prisma": "^7.9.1", + "react": "^19.2.8", + "react-dom": "^19.2.8" + }, + "devDependencies": { + "@types/jest": "^30.0.0", + "@types/node": "^26.2.0", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "jest": "^30.4.2", + "jest-environment-node": "^30.4.1", + "ts-jest": "^29.4.12", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^7.0.2" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..17cd6ab --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +}