because I got bored of customising my CV for every job
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore(client): update client build configuration

+110 -20
+77 -4
apps/client/Dockerfile
··· 1 + # ============================================================================= 2 + # Development Stage 3 + # ============================================================================= 4 + FROM node:22-alpine AS development 5 + 6 + # Install curl for health checks 7 + RUN apk add --no-cache curl 8 + 9 + WORKDIR /app 10 + 11 + # ============================================================================= 12 + # Layer 2: Package dependencies (changes when dependencies update) 13 + # ============================================================================= 14 + COPY package*.json ./ 15 + COPY lerna.json ./ 16 + COPY apps/client/package*.json ./apps/client/ 17 + COPY apps/server/package*.json ./apps/server/ 18 + COPY packages/utils/package.json ./packages/utils/ 19 + COPY packages/tsconfig/package.json ./packages/tsconfig/ 20 + COPY packages/biome-config/package.json ./packages/biome-config/ 21 + COPY packages/ui/package.json ./packages/ui/ 22 + 23 + # Install all dependencies (monorepo) 24 + RUN npm install --ignore-scripts 25 + 26 + # ============================================================================= 27 + # Layer 3: Configuration files (changes less frequently than source code) 28 + # ============================================================================= 29 + COPY packages/tsconfig/ ./packages/tsconfig/ 30 + COPY packages/biome-config/ ./packages/biome-config/ 31 + COPY packages/utils/ ./packages/utils/ 32 + COPY packages/ui/ ./packages/ui/ 33 + 34 + # ============================================================================= 35 + # Layer 4: Client configuration (changes when config updates) 36 + # ============================================================================= 37 + COPY apps/client/tsconfig*.json ./apps/client/ 38 + COPY apps/client/vite.config.ts ./apps/client/ 39 + COPY apps/client/postcss.config.cjs ./apps/client/ 40 + COPY apps/client/codegen.ts ./apps/client/ 41 + COPY apps/client/index.html ./apps/client/ 42 + 43 + # ============================================================================= 44 + # Layer 5: Source code (changes most frequently) 45 + # ============================================================================= 46 + COPY apps/client/src/ ./apps/client/src/ 47 + 48 + # Copy scripts for health checks 49 + COPY scripts/ ./scripts/ 50 + 51 + WORKDIR /app/apps/client 52 + 53 + EXPOSE 5173 54 + 55 + CMD ["npm", "run", "dev"] 56 + 57 + # ============================================================================= 58 + # Build Stage 59 + # ============================================================================= 1 60 FROM node:22-alpine AS builder 61 + 2 62 WORKDIR /app 63 + 64 + # Copy all files for build 3 65 COPY . . 4 - RUN npm ci && npm run build --workspaces --if-present 5 66 6 - FROM nginx:alpine AS runner 67 + # Install dependencies and build 68 + RUN npm ci && npm run build --workspace=@cv/client 69 + 70 + # ============================================================================= 71 + # Production Stage 72 + # ============================================================================= 73 + FROM nginx:alpine AS production 74 + 7 75 WORKDIR /usr/share/nginx/html 76 + 77 + # Copy built assets from builder 8 78 COPY --from=builder /app/apps/client/dist . 9 - COPY nginx.conf /etc/nginx/conf.d/default.conf 79 + 80 + # Copy nginx configuration 81 + COPY apps/client/nginx.conf /etc/nginx/conf.d/default.conf 82 + 10 83 EXPOSE 80 11 - CMD ["nginx", "-g", "daemon off;"] 12 84 85 + CMD ["nginx", "-g", "daemon off;"]
+10 -5
apps/client/codegen.ts
··· 8 8 plugins: [ 9 9 "typescript", 10 10 "typescript-operations", 11 - "typescript-react-apollo", 11 + "typescript-react-query", 12 12 ], 13 13 config: { 14 - withHooks: true, 15 - withComponent: false, 16 - withHOC: false, 17 - apolloReactHooksImportFrom: "@apollo/client", 14 + // React Query v5 configuration 15 + fetcher: "../utils/graphql-fetcher#graphQLFetcher", 16 + reactQueryVersion: 5, 17 + // Enable infinite queries for connection-based queries 18 + addInfiniteQuery: true, 19 + // Expose query keys for invalidation 20 + exposeQueryKeys: true, 21 + exposeFetcher: true, 22 + exposeMutationKeys: true, 18 23 }, 19 24 }, 20 25 },
+18 -9
apps/client/package.json
··· 8 8 "build": "tsc -b && vite build", 9 9 "preview": "vite preview", 10 10 "lint": "biome check .", 11 + "lint:fix": "biome check --write .", 11 12 "start": "vite", 12 - "codegen": "graphql-codegen --config codegen.ts" 13 + "codegen": "graphql-codegen --config codegen.ts", 14 + "codegen:client": "graphql-codegen --config codegen.ts" 13 15 }, 14 16 "dependencies": { 15 - "@apollo/client": "^3.8.8", 16 - "@cv/utils": "^0.0.0", 17 + "@cv/ui": "*", 18 + "@cv/utils": "*", 17 19 "@tanstack/react-query": "^5.59.0", 20 + "@tanstack/react-query-devtools": "^5.59.0", 21 + "@tanstack/react-virtual": "^3.13.12", 18 22 "@types/react-router-dom": "^5.3.3", 19 23 "class-variance-authority": "^0.7.1", 24 + "clsx": "^2.0.0", 20 25 "graphql": "^16.8.1", 26 + "graphql-request": "^6.1.0", 27 + "graphql-type-json": "^0.3.2", 21 28 "react": "^18.3.1", 22 29 "react-dom": "^18.3.1", 23 - "react-router-dom": "^7.9.4" 30 + "react-router-dom": "^7.9.4", 31 + "tailwind-merge": "^2.0.0", 32 + "zod": "^3.25.76" 24 33 }, 25 34 "devDependencies": { 26 35 "@biomejs/biome": "^2.2.6", 27 - "@catppuccin/tailwindcss": "^1.0.0", 28 - "@cv/biome-config": "0.0.0", 29 - "@cv/tsconfig": "0.0.0", 36 + "@cv/biome-config": "*", 37 + "@cv/tsconfig": "*", 30 38 "@graphql-codegen/cli": "^5.0.0", 31 39 "@graphql-codegen/typescript": "^4.0.1", 32 40 "@graphql-codegen/typescript-operations": "^4.0.1", 33 - "@graphql-codegen/typescript-react-apollo": "^4.0.1", 34 - "@tailwindcss/postcss": "^4.0.0", 41 + "@graphql-codegen/typescript-react-query": "^6.1.0", 42 + "@tailwindcss/postcss": "^4.1.15", 43 + "@tailwindcss/vite": "^4.0.0", 35 44 "@types/react": "^18.3.11", 36 45 "@types/react-dom": "^18.3.1", 37 46 "@vitejs/plugin-react": "^4.3.4",
+3 -1
apps/client/postcss.config.cjs
··· 1 1 module.exports = { 2 - plugins: [require("@tailwindcss/postcss")], 2 + plugins: { 3 + "@tailwindcss/postcss": {}, 4 + }, 3 5 };
+2 -1
apps/client/vite.config.ts
··· 1 1 import path from "node:path"; 2 + import tailwindcss from "@tailwindcss/vite"; 2 3 import react from "@vitejs/plugin-react"; 3 4 import { defineConfig } from "vite"; 4 5 5 6 export default defineConfig({ 6 - plugins: [react()], 7 + plugins: [react(), tailwindcss()], 7 8 server: { 8 9 port: 5173, 9 10 host: true,