From 9c5ffec28d16674b42fb1b5bb4e39ae54d59a34a Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Tue, 9 Dec 2025 00:23:28 -0800 Subject: [PATCH] fix: Add missing project files for backend/frontend build --- backend/package.json | 27 +++++++++++++++++++++++++++ backend/prisma/schema.prisma | 18 ++++++++++++++++++ backend/src/server.ts | 24 ++++++++++++++++++++++++ backend/tsconfig.json | 22 ++++++++++++++++++++++ frontend/index.html | 12 ++++++++++++ frontend/package.json | 30 ++++++++++++++++++++++++++++++ frontend/src/App.tsx | 13 +++++++++++++ frontend/src/main.tsx | 9 +++++++++ frontend/tsconfig.json | 31 +++++++++++++++++++++++++++++++ frontend/tsconfig.node.json | 12 ++++++++++++ frontend/vite.config.ts | 11 +++++++++++ 11 files changed, 209 insertions(+) create mode 100644 backend/package.json create mode 100644 backend/prisma/schema.prisma create mode 100644 backend/src/server.ts create mode 100644 backend/tsconfig.json create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/main.tsx create mode 100644 frontend/tsconfig.json create mode 100644 frontend/tsconfig.node.json create mode 100644 frontend/vite.config.ts diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..c581433 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,27 @@ +{ + "name": "ca-grow-ops-backend", + "version": "1.0.0", + "main": "dist/server.js", + "scripts": { + "build": "tsc", + "start": "node dist/server.js", + "dev": "ts-node-dev src/server.ts", + "test": "jest", + "lint": "eslint src/**/*.ts" + }, + "dependencies": { + "@prisma/client": "^5.7.0", + "fastify": "^4.25.0", + "fastify-plugin": "^4.5.0", + "fastify-jwt": "^4.2.0", + "dotenv": "^16.3.1" + }, + "devDependencies": { + "typescript": "^5.3.3", + "@types/node": "^20.10.0", + "prisma": "^5.7.0", + "ts-node-dev": "^2.0.0", + "jest": "^29.7.0", + "eslint": "^8.56.0" + } +} diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma new file mode 100644 index 0000000..066ca29 --- /dev/null +++ b/backend/prisma/schema.prisma @@ -0,0 +1,18 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model User { + id String @id @default(uuid()) + email String @unique + name String? + password String + role String @default("USER") + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/backend/src/server.ts b/backend/src/server.ts new file mode 100644 index 0000000..debd4db --- /dev/null +++ b/backend/src/server.ts @@ -0,0 +1,24 @@ +import Fastify from 'fastify'; + +const server = Fastify({ + logger: true +}); + +server.get('/healthz', async (request, reply) => { + return { status: 'ok', timestamp: new Date().toISOString() }; +}); + +server.get('/', async (request, reply) => { + return { message: 'CA Grow Ops Manager API' }; +}); + +const start = async () => { + try { + await server.listen({ port: 3000, host: '0.0.0.0' }); + } catch (err) { + server.log.error(err); + process.exit(1); + } +}; + +start(); diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000..4b33033 --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": [ + "ES2020" + ], + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "**/*.test.ts" + ] +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..8fde53e --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,12 @@ + + + + + + CA Grow Ops Manager + + +
+ + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..c6b7751 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,30 @@ +{ + "name": "ca-grow-ops-frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "typescript": "^5.2.2", + "vite": "^5.0.8", + "vitest": "^1.0.0" + } +} \ No newline at end of file diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..a6acc8b --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,13 @@ +import React from 'react' + +function App() { + return ( +
+

CA Grow Ops Manager

+

Status: Online

+

Domain: 777wolfpack.runfoo.run

+
+ ) +} + +export default App diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx new file mode 100644 index 0000000..35eb33f --- /dev/null +++ b/frontend/src/main.tsx @@ -0,0 +1,9 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..50b948d --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json new file mode 100644 index 0000000..b85dd47 --- /dev/null +++ b/frontend/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..d7b4ea6 --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + server: { + host: '0.0.0.0', + port: 80, + } +})