Skip to content

Commit 459b3a4

Browse files
Raushan kumarclaude
andcommitted
Fix critical production issues
- Move Firebase credentials to environment variables - Fix XSS vulnerability in ChatBot with DOMPurify sanitization - Add React ErrorBoundary component for graceful error handling - Set up GitHub Actions CI/CD pipeline for lint, build, and test - Add Vitest testing infrastructure with sample tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 455d81e commit 459b3a4

13 files changed

Lines changed: 3201 additions & 17 deletions

File tree

.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Firebase Configuration
2+
# Get these values from Firebase Console > Project Settings > Your apps > Web app
3+
VITE_FIREBASE_API_KEY=your_api_key_here
4+
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
5+
VITE_FIREBASE_PROJECT_ID=your_project_id
6+
VITE_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
7+
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
8+
VITE_FIREBASE_APP_ID=your_app_id
9+
VITE_FIREBASE_MEASUREMENT_ID=your_measurement_id

.github/workflows/ci.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main, develop]
8+
9+
jobs:
10+
lint-and-build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: '20'
21+
cache: 'npm'
22+
23+
- name: Install dependencies
24+
run: npm ci
25+
26+
- name: Run linter
27+
run: npm run lint
28+
29+
- name: Build
30+
run: npm run build
31+
env:
32+
VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }}
33+
VITE_FIREBASE_AUTH_DOMAIN: ${{ secrets.VITE_FIREBASE_AUTH_DOMAIN }}
34+
VITE_FIREBASE_PROJECT_ID: ${{ secrets.VITE_FIREBASE_PROJECT_ID }}
35+
VITE_FIREBASE_STORAGE_BUCKET: ${{ secrets.VITE_FIREBASE_STORAGE_BUCKET }}
36+
VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }}
37+
VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }}
38+
VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }}
39+
40+
test:
41+
runs-on: ubuntu-latest
42+
needs: lint-and-build
43+
44+
steps:
45+
- name: Checkout code
46+
uses: actions/checkout@v4
47+
48+
- name: Setup Node.js
49+
uses: actions/setup-node@v4
50+
with:
51+
node-version: '20'
52+
cache: 'npm'
53+
54+
- name: Install dependencies
55+
run: npm ci
56+
57+
- name: Run tests
58+
run: npm test -- --run
59+
env:
60+
VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }}
61+
VITE_FIREBASE_AUTH_DOMAIN: ${{ secrets.VITE_FIREBASE_AUTH_DOMAIN }}
62+
VITE_FIREBASE_PROJECT_ID: ${{ secrets.VITE_FIREBASE_PROJECT_ID }}
63+
VITE_FIREBASE_STORAGE_BUCKET: ${{ secrets.VITE_FIREBASE_STORAGE_BUCKET }}
64+
VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }}
65+
VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }}
66+
VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }}

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ dist
1212
dist-ssr
1313
*.local
1414

15+
# Environment variables
16+
.env
17+
.env.local
18+
.env.*.local
19+
1520
# Editor directories and files
1621
.vscode/*
1722
!.vscode/extensions.json

0 commit comments

Comments
 (0)