fix: Add missing project files for backend/frontend build
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s

This commit is contained in:
fullsizemalt 2025-12-09 00:23:28 -08:00
parent e32d2e4ed3
commit 9c5ffec28d
11 changed files with 209 additions and 0 deletions

27
backend/package.json Normal file
View file

@ -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"
}
}

View file

@ -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
}

24
backend/src/server.ts Normal file
View file

@ -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();

22
backend/tsconfig.json Normal file
View file

@ -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"
]
}

12
frontend/index.html Normal file
View file

@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CA Grow Ops Manager</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

30
frontend/package.json Normal file
View file

@ -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"
}
}

13
frontend/src/App.tsx Normal file
View file

@ -0,0 +1,13 @@
import React from 'react'
function App() {
return (
<div style={{ padding: '20px', fontFamily: 'sans-serif' }}>
<h1>CA Grow Ops Manager</h1>
<p>Status: Online</p>
<p>Domain: 777wolfpack.runfoo.run</p>
</div>
)
}
export default App

9
frontend/src/main.tsx Normal file
View file

@ -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(
<React.StrictMode>
<App />
</React.StrictMode>,
)

31
frontend/tsconfig.json Normal file
View file

@ -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"
}
]
}

View file

@ -0,0 +1,12 @@
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": [
"vite.config.ts"
]
}

11
frontend/vite.config.ts Normal file
View file

@ -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,
}
})