Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b42a4e9
feat: Initial Commit - Angular app
janosevicsm Jan 27, 2026
61ed321
feat: Add topbar, theme service and global styles
janosevicsm Feb 3, 2026
0276a3c
feat: Add auth pages, remove search, update layout/routes
janosevicsm Feb 3, 2026
f4223eb
feat: Add auth implementation
cuturic01 Feb 8, 2026
1ac0f00
feat: Add profile dialog, user service & auth refactor
janosevicsm Feb 8, 2026
c137787
feat: Add form validations and disable invalid submits
janosevicsm Feb 8, 2026
abba0dc
feat: Add NotificationService and use snackbars
janosevicsm Feb 8, 2026
0f3fe93
fix: Fix view init change detection
janosevicsm Feb 8, 2026
6ed5751
feat: Add CI pipeline.
lukaDjordjevic01 Feb 13, 2026
ca97c81
feat: Add accommodations overview.
lukaDjordjevic01 Feb 17, 2026
b7c629c
feat: Add accommodation view
cuturic01 Feb 17, 2026
b013d4f
feat: Add notification preferences
cuturic01 Feb 17, 2026
b84b052
feat: Implemented Accommodation and Reservation creation dialogs
janosevicsm Feb 17, 2026
9aa0a29
feat: Add reservations list UI and related updates
janosevicsm Feb 18, 2026
8b38da8
feat: Add search
cuturic01 Feb 19, 2026
3b312b3
fix: Add search pagination
cuturic01 Feb 20, 2026
376bcfd
feat: Add reservation approval and rejection.
lukaDjordjevic01 Feb 20, 2026
6d6699b
feat: Add user deletion.
lukaDjordjevic01 Feb 20, 2026
e895090
feat: Add ratings feature and UI components
janosevicsm Feb 22, 2026
b8042ce
fix: Refactor accommodation detail layout & gallery
janosevicsm Feb 22, 2026
217fe4c
fix: Adjust theme colors in rating and global styles
janosevicsm Feb 22, 2026
f9dce54
feat: Add Helm values.
cuturic01 Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
npm-debug.log
.angular
dist
.git
.gitignore
.env
coverage
*.md
.vscode
.editorconfig
17 changes: 17 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single
ij_typescript_use_double_quotes = false

[*.md]
max_line_length = off
trim_trailing_whitespace = false
55 changes: 55 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: CI Pipeline

on:
push:
branches:
- develop
- main
tags:
- 'v*'

env:
DOCKERHUB_USERNAME: threeamigoscoding

jobs:
build-and-publish:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Generate version tag
id: version
run: |
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION_TAG=${GITHUB_REF#refs/tags/v}
elif [[ $GITHUB_REF == refs/heads/main ]]; then
SHORT_SHA=$(git rev-parse --short HEAD)
VERSION_TAG="main-${SHORT_SHA}"
else
SHORT_SHA=$(git rev-parse --short HEAD)
VERSION_TAG="develop-${SHORT_SHA}"
fi
echo "tag=$VERSION_TAG" >> $GITHUB_OUTPUT
echo "Generated version tag: $VERSION_TAG"

- name: Build and push Docker image
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25
with:
context: .
push: true
tags: |
${{ env.DOCKERHUB_USERNAME }}/devoops-frontend:${{ steps.version.outputs.tag }}
${{ env.DOCKERHUB_USERNAME }}/devoops-frontend:latest
cache-from: type=gha
cache-to: type=gha,mode=max
23 changes: 23 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Stage 1: Build
FROM node:20-alpine AS build

WORKDIR /app

COPY package*.json ./
RUN npm ci --legacy-peer-deps

COPY . .
RUN npm run build -- --configuration=production

# Stage 2: Serve with Nginx
FROM nginx:alpine

COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /app/dist/devoops-frontend/browser /usr/share/nginx/html

EXPOSE 80

HEALTHCHECK --interval=30s --timeout=3s \
CMD wget --quiet --tries=1 --spider http://localhost/health || exit 1

CMD ["nginx", "-g", "daemon off;"]
50 changes: 49 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,50 @@
# devoops-frontend
Devoops Frontend

Angular frontend for the DevOops accommodation booking system.

## Prerequisites
- Node.js 20+
- npm 10+
- Angular CLI 19

## Development

Install dependencies:
```bash
npm install
```

Start development server:
```bash
npm start
```

The app runs on http://localhost:4200 with API calls proxied to http://localhost:8080.

## Build

Development build:
```bash
npm run build
```

Production build:
```bash
npm run build:prod
```

## Docker

Build Docker image:
```bash
docker build -t devoops-frontend .
```

Run Docker container:
```bash
docker run -p 4200:80 devoops-frontend
```

## License

This project is licensed under the MIT License - see the LICENSE file for details.
109 changes: 109 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"cli": {
"packageManager": "npm",
"analytics": false
},
"newProjectRoot": "projects",
"projects": {
"devoops-frontend": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist/devoops-frontend",
"index": "src/index.html",
"browser": "src/main.ts",
"polyfills": [
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "public"
}
],
"styles": [
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"proxyConfig": "proxy.conf.json"
},
"configurations": {
"production": {
"buildTarget": "devoops-frontend:build:production"
},
"development": {
"buildTarget": "devoops-frontend:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"zone.js",
"zone.js/testing"
],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "public"
}
],
"styles": [
"src/styles.scss"
],
"scripts": []
}
}
}
}
}
}
41 changes: 41 additions & 0 deletions environment/helm/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
fullnameOverride: devoops-frontend
replicaCount: 1

image:
registry: docker.io
repository: cuturic01/devoops-frontend
tag: "latest"
pullPolicy: IfNotPresent

service:
type: ClusterIP
httpPort: 80
grpc:
enabled: false

ingress:
enabled: true
className: nginx
host: "front.devoops.local"
path: /
pathType: Prefix
annotations: {}

resources:
requests:
memory: 64Mi
cpu: 100m
limits:
memory: 128Mi

health:
path: /health
periodSeconds: 10
failureThreshold: 3
startup:
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 12

configData: {}
secretData: {}
38 changes: 38 additions & 0 deletions nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;

# Health check endpoint
location /health {
return 200 "healthy\n";
add_header Content-Type text/plain;
}

# Proxy API calls to gateway
location /api/ {
proxy_pass http://devoops-gateway-service:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

# Angular SPA routing - serve index.html for all routes
location / {
try_files $uri $uri/ /index.html;
}
}
}
Loading