refactor: some feedback updates from coderabbit
This commit is contained in:
		
							parent
							
								
									e3d1386f6a
								
							
						
					
					
						commit
						a020bf5dca
					
				
					 6 changed files with 36 additions and 7 deletions
				
			
		|  | @ -4,9 +4,9 @@ npm-debug.log | |||
| .gitignore | ||||
| README.md | ||||
| .env | ||||
| .env.* | ||||
| .nyc_output | ||||
| coverage | ||||
| .nyc_output | ||||
| .vscode | ||||
| .DS_Store | ||||
| dist | ||||
|  | @ -1,5 +1,5 @@ | |||
| # Multi-stage build for production | ||||
| FROM node:18-alpine AS build-stage | ||||
| FROM node:20-alpine AS build-stage | ||||
| 
 | ||||
| # Set working directory | ||||
| WORKDIR /app | ||||
|  | @ -8,7 +8,8 @@ WORKDIR /app | |||
| COPY package*.json ./ | ||||
| 
 | ||||
| # Install dependencies | ||||
| RUN npm ci | ||||
| #ENV NODE_ENV=production | ||||
| RUN npm ci --no-audit --no-fund | ||||
| 
 | ||||
| # Copy source code | ||||
| COPY . . | ||||
|  | @ -29,4 +30,5 @@ COPY nginx.conf /etc/nginx/nginx.conf | |||
| EXPOSE 80 | ||||
| 
 | ||||
| # Start nginx | ||||
| HEALTHCHECK --interval=30s --timeout=3s --retries=3 CMD wget -qO- http://localhost/healthz >/dev/null 2>&1 || exit 1 | ||||
| CMD ["nginx", "-g", "daemon off;"] | ||||
							
								
								
									
										25
									
								
								nginx.conf
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								nginx.conf
									
										
									
									
									
								
							|  | @ -5,22 +5,45 @@ events { | |||
| http { | ||||
|     include       /etc/nginx/mime.types; | ||||
|     default_type  application/octet-stream; | ||||
|     sendfile on; | ||||
|     etag on; | ||||
|     gzip on; | ||||
|     gzip_comp_level 5; | ||||
|     gzip_min_length 1024; | ||||
|     gzip_types | ||||
|         text/plain text/css application/json application/javascript | ||||
|         text/xml application/xml application/xml+rss image/svg+xml; | ||||
|      | ||||
|     server { | ||||
|         listen 80; | ||||
|         server_name localhost; | ||||
|         server_name _; | ||||
|         root /usr/share/nginx/html; | ||||
|         index index.html; | ||||
| 
 | ||||
|         add_header X-Content-Type-Options "nosniff" always; | ||||
|         add_header X-Frame-Options "DENY" always; | ||||
|         add_header Referrer-Policy "strict-origin-when-cross-origin" always; | ||||
|         add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; | ||||
|          | ||||
|         # Handle client-side routing | ||||
|         location / { | ||||
|             try_files $uri $uri/ /index.html; | ||||
|         } | ||||
| 
 | ||||
|         location = /index.html { | ||||
|             add_header Cache-Contrl "no-store, no-cache, must-revalidate"; | ||||
|             expires -1; | ||||
|         } | ||||
|          | ||||
|         # Cache static assets | ||||
|         location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { | ||||
|             expires 1y; | ||||
|             add_header Cache-Control "public, immutable"; | ||||
|         } | ||||
| 
 | ||||
|         location = healthz { | ||||
|             default_type text/plain; | ||||
|             return 200 'ok'; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -113,7 +113,7 @@ | |||
|         </div> | ||||
| 
 | ||||
|         <div class="signup-prompt"> | ||||
|           <p>Don't have an account? <a href="/signup" class="signup-link">Sign up</a></p> | ||||
|           <p>Don't have an account? <router-link to="/signup" class="signup-link">Sign up</router-link></p> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|  |  | |||
|  | @ -84,6 +84,7 @@ | |||
|                 :class="{ 'error': error && !email }" | ||||
|                 placeholder="Enter your email" | ||||
|                 required  | ||||
|                 autocomplete="email" | ||||
|               /> | ||||
|             </div> | ||||
|           </div> | ||||
|  | @ -100,6 +101,7 @@ | |||
|                 :class="{ 'error': error && !password }" | ||||
|                 placeholder="Create a password" | ||||
|                 required  | ||||
|                 autocomplete="new-password" | ||||
|               /> | ||||
|               <button  | ||||
|                 type="button"  | ||||
|  | @ -135,6 +137,7 @@ | |||
|                 :class="{ 'error': error && !confirmPassword || passwordMismatch }" | ||||
|                 placeholder="Confirm your password" | ||||
|                 required  | ||||
|                 autocomplete="new-password" | ||||
|               /> | ||||
|               <button  | ||||
|                 type="button"  | ||||
|  | @ -210,7 +213,7 @@ | |||
|         </div> | ||||
| 
 | ||||
|         <div class="login-prompt"> | ||||
|           <p>Already have an account? <a href="/login" class="login-link">Sign in</a></p> | ||||
|           <p>Already have an account? <router-link to="/login" class="login-link">Sign In</router-link></p> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|  | @ -277,6 +280,7 @@ export default { | |||
|       } | ||||
|     }, | ||||
|     isFormValid() { | ||||
|       const emailOk = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email); | ||||
|       return this.firstName &&  | ||||
|              this.lastName &&  | ||||
|              this.username &&  | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| const { defineConfig } = require('@vue/cli-service') | ||||
| module.exports = defineConfig({ | ||||
|   transpileDependencies: true, | ||||
|   lintOnSave: true | ||||
|   lintOnSave: process.env.NODE_ENV !== 'production' | ||||
| }) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Cipher Vance
						Cipher Vance