Compare commits
	
		
			2 commits
		
	
	
		
			feat/auth_
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 76a1b592ac | |||
| 03d3d272df | 
					 8 changed files with 3 additions and 102 deletions
				
			
		|  | @ -1,12 +0,0 @@ | ||||||
| node_modules |  | ||||||
| npm-debug.log |  | ||||||
| .git |  | ||||||
| .gitignore |  | ||||||
| README.md |  | ||||||
| .env |  | ||||||
| .env.* |  | ||||||
| .nyc_output |  | ||||||
| coverage |  | ||||||
| .vscode |  | ||||||
| .DS_Store |  | ||||||
| dist |  | ||||||
							
								
								
									
										34
									
								
								Dockerfile
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								Dockerfile
									
										
									
									
									
								
							|  | @ -1,34 +0,0 @@ | ||||||
| # Multi-stage build for production |  | ||||||
| FROM node:20-alpine AS build-stage |  | ||||||
| 
 |  | ||||||
| # Set working directory |  | ||||||
| WORKDIR /app |  | ||||||
| 
 |  | ||||||
| # Copy package files |  | ||||||
| COPY package*.json ./ |  | ||||||
| 
 |  | ||||||
| # Install dependencies |  | ||||||
| #ENV NODE_ENV=production |  | ||||||
| RUN npm ci --no-audit --no-fund |  | ||||||
| 
 |  | ||||||
| # Copy source code |  | ||||||
| COPY . . |  | ||||||
| 
 |  | ||||||
| # Build the app |  | ||||||
| RUN npm run build |  | ||||||
| 
 |  | ||||||
| # Production stage |  | ||||||
| FROM nginx:stable-alpine AS production-stage |  | ||||||
| 
 |  | ||||||
| # Copy built assets from build stage |  | ||||||
| COPY --from=build-stage /app/dist /usr/share/nginx/html |  | ||||||
| 
 |  | ||||||
| # Copy custom nginx config |  | ||||||
| COPY nginx.conf /etc/nginx/nginx.conf |  | ||||||
| 
 |  | ||||||
| # Expose port 80 |  | ||||||
| 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;"] |  | ||||||
							
								
								
									
										49
									
								
								nginx.conf
									
										
									
									
									
								
							
							
						
						
									
										49
									
								
								nginx.conf
									
										
									
									
									
								
							|  | @ -1,49 +0,0 @@ | ||||||
| events { |  | ||||||
|     worker_connections 1024; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 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 _; |  | ||||||
|         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'; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/logo.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/logo.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 6.7 KiB | 
|  | @ -113,7 +113,7 @@ | ||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|         <div class="signup-prompt"> |         <div class="signup-prompt"> | ||||||
|           <p>Don't have an account? <router-link to="/signup" class="signup-link">Sign up</router-link></p> |           <p>Don't have an account? <a href="/signup" class="signup-link">Sign up</a></p> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  | @ -84,7 +84,6 @@ | ||||||
|                 :class="{ 'error': error && !email }" |                 :class="{ 'error': error && !email }" | ||||||
|                 placeholder="Enter your email" |                 placeholder="Enter your email" | ||||||
|                 required  |                 required  | ||||||
|                 autocomplete="email" |  | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|  | @ -101,7 +100,6 @@ | ||||||
|                 :class="{ 'error': error && !password }" |                 :class="{ 'error': error && !password }" | ||||||
|                 placeholder="Create a password" |                 placeholder="Create a password" | ||||||
|                 required  |                 required  | ||||||
|                 autocomplete="new-password" |  | ||||||
|               /> |               /> | ||||||
|               <button  |               <button  | ||||||
|                 type="button"  |                 type="button"  | ||||||
|  | @ -137,7 +135,6 @@ | ||||||
|                 :class="{ 'error': error && !confirmPassword || passwordMismatch }" |                 :class="{ 'error': error && !confirmPassword || passwordMismatch }" | ||||||
|                 placeholder="Confirm your password" |                 placeholder="Confirm your password" | ||||||
|                 required  |                 required  | ||||||
|                 autocomplete="new-password" |  | ||||||
|               /> |               /> | ||||||
|               <button  |               <button  | ||||||
|                 type="button"  |                 type="button"  | ||||||
|  | @ -213,7 +210,7 @@ | ||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|         <div class="login-prompt"> |         <div class="login-prompt"> | ||||||
|           <p>Already have an account? <router-link to="/login" class="login-link">Sign In</router-link></p> |           <p>Already have an account? <a href="/login" class="login-link">Sign in</a></p> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|  | @ -280,7 +277,6 @@ export default { | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     isFormValid() { |     isFormValid() { | ||||||
|       const emailOk = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email); |  | ||||||
|       return this.firstName &&  |       return this.firstName &&  | ||||||
|              this.lastName &&  |              this.lastName &&  | ||||||
|              this.username &&  |              this.username &&  | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| const { defineConfig } = require('@vue/cli-service') | const { defineConfig } = require('@vue/cli-service') | ||||||
| module.exports = defineConfig({ | module.exports = defineConfig({ | ||||||
|   transpileDependencies: true, |   transpileDependencies: true, | ||||||
|   lintOnSave: process.env.NODE_ENV !== 'production' |   lintOnSave: true | ||||||
| }) | }) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue