Compare commits

...

10 Commits

Author SHA1 Message Date
Raghu Chagarlamudi
7886d13405 add rc-portfolio and gitea actions
Some checks failed
Deploy Portfolio / deploy (push) Has been cancelled
2025-12-13 17:38:57 -05:00
Raghu Chagarlamudi
ac35fdb693 Update .drone.yml 2025-12-12 15:15:25 -05:00
Raghu Chagarlamudi
8a64907446 add BIOMEJS 2025-12-12 15:11:11 -05:00
Raghu Chagarlamudi
84d99fcc3d add BIOMEJS & update animations 2025-12-12 15:10:51 -05:00
2de779d90c refator style defs for home template 2025-04-03 23:08:32 -04:00
6d9a9a2439 add animations to template 2025-04-03 23:08:02 -04:00
e6ea47d764 import animations to home comp 2025-04-03 23:07:25 -04:00
404809025d add slideIn and wobble animations 2025-04-03 23:06:50 -04:00
ed1eb5ed19 update home, app, components 2025-02-27 20:44:29 -05:00
45558625fe move custome theme scss inside app 2025-02-27 20:42:29 -05:00
16 changed files with 521 additions and 160 deletions

View File

@@ -30,6 +30,6 @@ steps:
- /usr/local/bin/docker rm rc-portfolio-container || true # Remove the container
- /usr/local/bin/docker run -d -p 8080:80 --name rc-portfolio-container hub.chagarlamudi.net/rc-portfolio:latest # Start the container
when:
trigger:
branch:
- main # Trigger this pipeline only for the main branch

View File

@@ -0,0 +1,31 @@
name: Deploy Portfolio
on:
push:
branches: [main]
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Build Angular
run: npm run build -- --configuration production
- name: Deploy to NAS
run: |
echo "Deploy started at $(date)"
rm -rf /volume1/web/www/rc-portfolio/*
cp -r dist/* /volume1/web/www/rc-portfolio/
echo "Deploy finished at $(date)"

View File

@@ -1,137 +0,0 @@
// This file was generated by running 'ng generate @angular/material:theme-color'.
// Proceed with caution if making changes to this file.
@use 'sass:map';
@use '@angular/material' as mat;
// Note: Color palettes are generated from primary: f4acb7
$_palettes: (
primary: (
0: #000000,
10: #360c17,
20: #50212b,
25: #5e2c36,
30: #6b3741,
35: #79424c,
40: #874e58,
50: #a36670,
60: #c07f89,
70: #de98a3,
80: #fcb3be,
90: #ffd9de,
95: #ffecee,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
),
secondary: (
0: #000000,
10: #2b1519,
20: #422a2e,
25: #4e3538,
30: #5a4044,
35: #674b4f,
40: #74575b,
50: #8e6f73,
60: #aa888d,
70: #c6a2a7,
80: #e3bdc2,
90: #ffd9de,
95: #ffecee,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
),
tertiary: (
0: #000000,
10: #2b1700,
20: #472a00,
25: #563403,
30: #633f0e,
35: #704b1a,
40: #7e5624,
50: #9a6f3a,
60: #b68851,
70: #d4a269,
80: #f2bd81,
90: #ffddb9,
95: #ffeedf,
98: #fff8f4,
99: #fffbff,
100: #ffffff,
),
neutral: (
0: #000000,
10: #201a1b,
20: #352f2f,
25: #413a3a,
30: #4c4546,
35: #585151,
40: #645c5d,
50: #7e7575,
60: #988e8f,
70: #b3a9a9,
80: #cfc4c4,
90: #ece0e0,
95: #faeeee,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
4: #120d0e,
6: #171213,
12: #241e1f,
17: #2f2829,
22: #3a3334,
24: #3e3838,
87: #e3d7d8,
92: #f1e5e6,
94: #f7ebeb,
96: #fdf1f1,
),
neutral-variant: (
0: #000000,
10: #24191a,
20: #3a2d2f,
25: #46383a,
30: #514345,
35: #5e4f50,
40: #6a5b5c,
50: #847375,
60: #9e8c8e,
70: #baa7a8,
80: #d6c2c3,
90: #f3dddf,
95: #ffecee,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
),
error: (
0: #000000,
10: #410002,
20: #690005,
25: #7e0007,
30: #93000a,
35: #a80710,
40: #ba1a1a,
50: #de3730,
60: #ff5449,
70: #ff897d,
80: #ffb4ab,
90: #ffdad6,
95: #ffedea,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
),
);
$_rest: (
secondary: map.get($_palettes, secondary),
neutral: map.get($_palettes, neutral),
neutral-variant: map.get($_palettes, neutral-variant),
error: map.get($_palettes, error),
);
$primary-palette: map.merge(map.get($_palettes, primary), $_rest);
$tertiary-palette: map.merge(map.get($_palettes, tertiary), $_rest);

34
biome.json Normal file
View File

@@ -0,0 +1,34 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}

207
package-lock.json generated
View File

@@ -26,6 +26,7 @@
"@angular-devkit/build-angular": "^19.1.8",
"@angular/cli": "^19.1.8",
"@angular/compiler-cli": "^19.1.0",
"@biomejs/biome": "2.3.8",
"@types/jasmine": "~5.1.0",
"angular-eslint": "19.1.0",
"eslint": "^9.20.0",
@@ -413,6 +414,7 @@
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.1.7.tgz",
"integrity": "sha512-EnyQTCNc1nWnjc5V3HPlClpJIS2R2XAfIEUCyI3lE4FLQxcXyhIsM9NmacAZT3Ai8RL+8JVCttPmBZXMpjP6Ug==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -582,6 +584,7 @@
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.1.5.tgz",
"integrity": "sha512-+g20LIvYHThKBD6oXTYWVL6+ecaOWtPJu08R5xIfGrwXoj0l/9prLwuSW8GlIATI3mDkSesyhQsomb9jAUzKwQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -633,6 +636,7 @@
"resolved": "https://registry.npmjs.org/@angular/common/-/common-19.1.7.tgz",
"integrity": "sha512-MXfUGfWeesTQ12HXgeoVIXsS+r1jZxT2FkLQtqS+NRsRD4T1vlyvD7kTI+Ku1NAjdt3mB8TJ0cZHubvmml8I+Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -649,6 +653,7 @@
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.1.7.tgz",
"integrity": "sha512-Q3eqqIhMEzrnmFJtUO0K+WPpCfP/JTl9lJXZKe0zgNPdRFUufjSUcPHGzd7OjN2gPpiAvS1yBvENvqs+g/MejQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -670,6 +675,7 @@
"integrity": "sha512-Uu/TxfIcE1lStlCLmOPbghG1Y5o83odES89sr7bYNJz2mcG7TEonatf6GTOMzbJNil9FBJt6qnJkDkSjn4nUKw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "7.26.0",
"@jridgewell/sourcemap-codec": "^1.4.14",
@@ -698,6 +704,7 @@
"resolved": "https://registry.npmjs.org/@angular/core/-/core-19.1.7.tgz",
"integrity": "sha512-P+e4ekJYWMFhWSzJav0R51bFAfUhIOmnqmG9mlI/ZONu2qcTTmyIG9AW5x1qhrMHEH42RaeK60RkKyqgcHaGDg==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -714,6 +721,7 @@
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.1.7.tgz",
"integrity": "sha512-GVOCwqIXTpZt+bE3cqkasqpEs5n/aVq04yXLgM+mvVEbmAMibZYpzfg8NARlXCH3zveqhOSTJgsllfbbb7sdDw==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -750,6 +758,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.1.7.tgz",
"integrity": "sha512-QKakWl+CeVVwn22yjRHBXm6BvDsHoo+9u1pJGGk2smKSYjHW6qAly28+P7FUfVXUQI7rg++M66JwzNOFfYMDQA==",
"license": "MIT",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -834,6 +843,7 @@
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
@@ -2418,6 +2428,169 @@
"node": ">=6.9.0"
}
},
"node_modules/@biomejs/biome": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.3.8.tgz",
"integrity": "sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==",
"dev": true,
"license": "MIT OR Apache-2.0",
"bin": {
"biome": "bin/biome"
},
"engines": {
"node": ">=14.21.3"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/biome"
},
"optionalDependencies": {
"@biomejs/cli-darwin-arm64": "2.3.8",
"@biomejs/cli-darwin-x64": "2.3.8",
"@biomejs/cli-linux-arm64": "2.3.8",
"@biomejs/cli-linux-arm64-musl": "2.3.8",
"@biomejs/cli-linux-x64": "2.3.8",
"@biomejs/cli-linux-x64-musl": "2.3.8",
"@biomejs/cli-win32-arm64": "2.3.8",
"@biomejs/cli-win32-x64": "2.3.8"
}
},
"node_modules/@biomejs/cli-darwin-arm64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.3.8.tgz",
"integrity": "sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-darwin-x64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.3.8.tgz",
"integrity": "sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-linux-arm64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.3.8.tgz",
"integrity": "sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-linux-arm64-musl": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.3.8.tgz",
"integrity": "sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-linux-x64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.3.8.tgz",
"integrity": "sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-linux-x64-musl": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.3.8.tgz",
"integrity": "sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-win32-arm64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.3.8.tgz",
"integrity": "sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@biomejs/cli-win32-x64": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.3.8.tgz",
"integrity": "sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT OR Apache-2.0",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=14.21.3"
}
},
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -3290,6 +3463,7 @@
"integrity": "sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@inquirer/checkbox": "^4.0.4",
"@inquirer/confirm": "^5.1.1",
@@ -5420,6 +5594,7 @@
"integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~6.20.0"
}
@@ -5694,6 +5869,7 @@
"integrity": "sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.23.0",
"@typescript-eslint/types": "8.23.0",
@@ -6017,6 +6193,7 @@
"integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -6084,6 +6261,7 @@
"integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "8.24.1",
@@ -6368,6 +6546,7 @@
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -6430,6 +6609,7 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -6936,6 +7116,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73",
@@ -8443,6 +8624,7 @@
"integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -8503,6 +8685,7 @@
"integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"eslint-config-prettier": "build/bin/cli.js"
},
@@ -10363,7 +10546,8 @@
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.5.0.tgz",
"integrity": "sha512-NHOvoPO6o9gVR6pwqEACTEpbgcH+JJ6QDypyymGbSUIFIFsMMbBJ/xsFNud8MSClfnWclXd7RQlAZBz7yVo5TQ==",
"dev": true,
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/jest-worker": {
"version": "27.5.1",
@@ -10402,6 +10586,7 @@
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"jiti": "bin/jiti.js"
}
@@ -10523,6 +10708,7 @@
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@colors/colors": "1.5.0",
"body-parser": "^1.19.0",
@@ -10891,6 +11077,7 @@
"integrity": "sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"copy-anything": "^2.0.1",
"parse-node-version": "^1.0.1",
@@ -12900,6 +13087,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.1",
@@ -13048,6 +13236,7 @@
"integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -13598,6 +13787,7 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -13654,6 +13844,7 @@
"integrity": "sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
@@ -14819,6 +15010,7 @@
"integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -14967,7 +15159,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
"license": "0BSD",
"peer": true
},
"node_modules/tuf-js": {
"version": "3.0.1",
@@ -15037,6 +15230,7 @@
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -15051,6 +15245,7 @@
"integrity": "sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/eslint-plugin": "8.23.0",
"@typescript-eslint/parser": "8.23.0",
@@ -15460,7 +15655,6 @@
"integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.24.2",
"postcss": "^8.5.2",
@@ -15547,7 +15741,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.8",
"picocolors": "^1.1.1",
@@ -15615,6 +15808,7 @@
"integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.6",
@@ -15692,6 +15886,7 @@
"integrity": "sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/bonjour": "^3.5.13",
"@types/connect-history-api-fallback": "^1.5.4",
@@ -15907,6 +16102,7 @@
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -16320,7 +16516,8 @@
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz",
"integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==",
"license": "MIT"
"license": "MIT",
"peer": true
}
}
}

View File

@@ -30,6 +30,7 @@
"@angular-devkit/build-angular": "^19.1.8",
"@angular/cli": "^19.1.8",
"@angular/compiler-cli": "^19.1.0",
"@biomejs/biome": "2.3.8",
"@types/jasmine": "~5.1.0",
"angular-eslint": "19.1.0",
"eslint": "^9.20.0",
@@ -45,4 +46,4 @@
"typescript": "~5.7.2",
"typescript-eslint": "8.23.0"
}
}
}

View File

@@ -0,0 +1,42 @@
import { animate, keyframes, query, stagger, style, transition, trigger } from '@angular/animations';
export const slidInAnimations = [
trigger('slideIn', [
transition(':enter', [
style({ overflow: 'hidden' }),
query('p, h1, h2, h3, h4, h5, h6, span, a', [
style({ opacity: 0, transform: 'translateY(20px)' }),
stagger(100, [animate('800ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),
]),
]),
]),
];
export const wobbleAnimation = [
trigger('wobble', [
transition('* => *', [
animate(
'5s',
keyframes([
style({ borderRadius: '50%', offset: 0 }),
style({ borderRadius: '80% 10%', offset: 0.2 }),
style({ borderRadius: '60% 30%', offset: 0.3 }),
style({ borderRadius: '50%', offset: 0.5 }),
style({ borderRadius: '30% 60%', offset: 0.7 }),
style({ borderRadius: '10% 80%', offset: 0.8 }),
style({ borderRadius: '50%', offset: 1 }),
])
// keyframes([
// style({ borderRadius: '50%', offset: 0 }),
// style({ borderRadius: '10% 20%', offset: 0.15 })
// style({ borderRadius: '30% 10%', offset: 0.3 }),
// style({ borderRadius: '20% ', offset: 0.45 }),
// style({ borderRadius: '30% 10% ', offset: 0.6 }),
// style({ borderRadius: '30% ', offset: 0.75 }),
// style({ borderRadius: '70% 20%', offset: 0.9 }),
// style({ borderRadius: '50%', offset: 1 }),
// ])
),
]),
]),
];

View File

@@ -8,4 +8,9 @@ main {
flex: 1;
overflow-y: auto;
margin-top: 3.5rem;
//set content always center
display: flex;
justify-content: center;
align-items: center;
}

View File

@@ -1,6 +1,6 @@
<header class="header">
<span class="header__avatar" mat-card-avatar></span>
<span class="header__logo">Raghu Ch</span>
<span class="header__logo">{{title}}</span>
<span class="header__spacer"></span>
<nav class="header__nav">
<mat-icon aria-hidden="false" aria-label="menu icon" fontIcon="menu"></mat-icon>

View File

@@ -6,6 +6,8 @@
}
.header {
// background-color: var(--mat-sys-primary-container);
// color: var(--mat-sys-on-primary-container);
color: var(--mat-sys-on-primary);
background-color: var(--mat-sys-primary);
padding: 0.5rem 1rem;

View File

@@ -10,4 +10,6 @@ import { MatIconModule } from '@angular/material/icon';
templateUrl: './header.component.html',
styleUrl: './header.component.scss',
})
export class HeaderComponent {}
export class HeaderComponent {
title = 'Raghu Ch';
}

View File

@@ -1,5 +1,10 @@
<section class="intro">
<span class="intro__img"></span>
<h1 class="intro__header">Hey, I'm Raghu Chagarlamudi</h1>
<p class="intro__sub-head">A front end focused web developer</p>
<section class="intro" [@slideIn]>
<div class="intro__img-container">
<!-- <div class="intro__circle intro__circle--large"></div> -->
<div class="intro__circle intro__circle--large" [@wobble]="isWobbling" (@wobble.done)="onwobbleDone()"></div>
<div class="intro__circle intro__circle--small"></div>
</div>
<h1 class="intro__header">Hi 👋, I'm Raghu Chagarlamudi</h1>
<p class="intro__sub-head">I am a well-versed front-end web developer with extensive experience in building delightful and scalable web applications.</p>
<a mat-fab extended href="https://www.google.com/" target="_blank" class="intro__button">Get to Know More About Me</a>
</section>

View File

@@ -3,19 +3,49 @@
justify-content: center;
flex-direction: column;
align-items: center;
margin-top: 6rem;
padding: 1rem;
&__img {
display: block;
height: 200px;
width: 200px;
&__img-container {
position: relative;
width: 208px;
height: 208px;
}
&__circle {
position: absolute;
border-radius: 50%;
background-image: url('../../assests/images/rc-logo.jpeg');
background-size: cover;
&--large {
height: 208px;
width: 208px;
background-color: var(--mat-sys-primary);
}
&--small {
height: 200px;
width: 200px;
background-image: url("../../assests/images/rc-logo.jpeg");
background-size: cover;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
&__header {
text-transform: uppercase;
color: var(--mat-sys-primary);
font-size: 3rem;
}
&__sub-head {
font-size: 1.5rem;
text-align: center;
max-width: 760px;
}
&__button {
font-size: var(--mdc-extended-fab-label-text-size, 1rem);
}
}
@@ -24,5 +54,9 @@
&__header {
text-align: center;
}
&__sub-head {
font-size: 1.375rem;
}
}
}
}

View File

@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { slidInAnimations, wobbleAnimation } from '../animations/animations';
@Component({
standalone: true,
@@ -9,5 +10,12 @@ import { MatIconModule } from '@angular/material/icon';
imports: [MatButtonModule, MatIconModule],
templateUrl: './home.component.html',
styleUrl: './home.component.scss',
animations: [slidInAnimations, wobbleAnimation],
})
export class HomeComponent {}
export class HomeComponent {
isWobbling = true;
onwobbleDone() {
this.isWobbling = !this.isWobbling;
}
}

View File

@@ -0,0 +1,137 @@
// This file was generated by running 'ng generate @angular/material:theme-color'.
// Proceed with caution if making changes to this file.
@use 'sass:map';
@use '@angular/material' as mat;
// Note: Color palettes are generated from primary: 3c096c
$_palettes: (
primary: (
0: #000000,
10: #2b0053,
20: #441573,
25: #4f237f,
30: #5b308c,
35: #683d98,
40: #7449a5,
50: #8e62c0,
60: #a97cdc,
70: #c597f9,
80: #dbb8ff,
90: #efdbff,
95: #f9edff,
98: #fff7ff,
99: #fffbff,
100: #ffffff,
),
secondary: (
0: #000000,
10: #241435,
20: #39294c,
25: #453457,
30: #513f64,
35: #5d4b70,
40: #69577d,
50: #826f97,
60: #9d89b1,
70: #b8a3cd,
80: #d4bee9,
90: #efdbff,
95: #f9edff,
98: #fff7ff,
99: #fffbff,
100: #ffffff,
),
tertiary: (
0: #000000,
10: #3b002e,
20: #5c0a4a,
25: #6a1956,
30: #782562,
35: #86326e,
40: #953e7b,
50: #b25795,
60: #d070b0,
70: #ee8acc,
80: #ffade0,
90: #ffd8ed,
95: #ffecf4,
98: #fff8f9,
99: #fffbff,
100: #ffffff,
),
neutral: (
0: #000000,
10: #1e1a20,
20: #332f36,
25: #3e3a41,
30: #4a454c,
35: #555158,
40: #625d64,
50: #7b757d,
60: #958f97,
70: #b0a9b1,
80: #cbc4cd,
90: #e8e0e9,
95: #f6eef7,
98: #fff7ff,
99: #fffbff,
100: #ffffff,
4: #100d13,
6: #151218,
12: #221e24,
17: #2c292f,
22: #37333a,
24: #3c383e,
87: #dfd8e0,
92: #eee6ee,
94: #f3ebf4,
96: #f9f1fa,
),
neutral-variant: (
0: #000000,
10: #1f1924,
20: #342e3a,
25: #3f3945,
30: #4b4450,
35: #57505c,
40: #635c68,
50: #7c7482,
60: #968e9c,
70: #b1a8b6,
80: #cdc3d2,
90: #eadfee,
95: #f8edfd,
98: #fff7ff,
99: #fffbff,
100: #ffffff,
),
error: (
0: #000000,
10: #410002,
20: #690005,
25: #7e0007,
30: #93000a,
35: #a80710,
40: #ba1a1a,
50: #de3730,
60: #ff5449,
70: #ff897d,
80: #ffb4ab,
90: #ffdad6,
95: #ffedea,
98: #fff8f7,
99: #fffbff,
100: #ffffff,
),
);
$_rest: (
secondary: map.get($_palettes, secondary),
neutral: map.get($_palettes, neutral),
neutral-variant: map.get($_palettes, neutral-variant),
error: map.get($_palettes, error),
);
$primary-palette: map.merge(map.get($_palettes, primary), $_rest);
$tertiary-palette: map.merge(map.get($_palettes, tertiary), $_rest);

View File

@@ -1,7 +1,7 @@
// Custom Theming for Angular Material
// For more information: https://material.angular.io/guide/theming
@use "@angular/material" as mat;
@use "../theme-colors" as rc-theme;
@use "./app/styles/theme-colors" as rc-theme;
html {
@include mat.theme(