Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
49 changes: 42 additions & 7 deletions .github/workflows/doc-check-linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,49 @@ jobs:

# ---------- Import GPG Public Key ----------
- name: Import trusted GPG public key
# Run only if this is NOT a forked PR
if: ${{ github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request' }}
env:
GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
GPG_PUBLIC_KEY_1: ${{ secrets.GPG_PUBLIC_KEY_1 }} # Public key from Machine HP
run: |
if [ -z "$GPG_PUBLIC_KEY" ]; then
echo "❌ ERROR: GPG_PUBLIC_KEY secret is missing!"
echo "Please add your exported public keys in GitHub repo settings → Secrets → Actions → GPG_PUBLIC_KEY"
exit 1
# Check for primary GPG key
if [ -z "$GPG_PUBLIC_KEY" ] && [ -z "$GPG_PUBLIC_KEY_1" ]; then
echo "⚠️ Skipping GPG import: No secrets available (forked PR or missing keys)."
exit 0
fi

echo "$GPG_PUBLIC_KEY" | gpg --import
echo "✅ Trusted public GPG keys imported successfully."
# Function to import and trust a GPG key
import_key() {
local key="$1"
local varname="$2"
if [ -n "$key" ]; then
echo "$key" | gpg --import
echo "✅ Imported $varname successfully."

# Extract fingerprint
fingerprint=$(echo "$key" | gpg --with-colons --import-options show-only --import 2>/dev/null \
| awk -F: '$1=="fpr"{print $10; exit}')
if [ -n "$fingerprint" ]; then
# Set ultimate trust
echo "$fingerprint:6:" | gpg --import-ownertrust
echo "🔐 Set $varname (fingerprint $fingerprint) to ultimate trust."
else
echo "⚠️ Could not determine fingerprint for $varname."
fi
fi
}

# Import both keys
import_key "$GPG_PUBLIC_KEY" "GPG_PUBLIC_KEY"
import_key "$GPG_PUBLIC_KEY_1" "GPG_PUBLIC_KEY_1"

echo "🎉 All available GPG public keys imported successfully."

# ---------- Verify latest commit signature ----------
- name: Verify latest commit signature
# Skip verification if forked PR (same condition for consistency)
if: ${{ github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request' }}
run: |
# Only check the latest commit
LATEST_COMMIT=$(git rev-parse HEAD)
Expand All @@ -73,7 +102,7 @@ jobs:
SIG=$(git log --show-signature -1 "$LATEST_COMMIT")
echo "$SIG"

TRUSTED_KEYS="7F4C7CA953E1C09E D432152833DA3244 C97540DA6C9FA85C"
TRUSTED_KEYS="7F4C7CA953E1C09E D432152833DA3244 88F6CD4E295C9062 BE677DAEFE33CB57 C97540DA6C9FA85C"
GITHUB_KEY="4AEE18F83AFDEB23"
TRUSTED="$TRUSTED_KEYS $GITHUB_KEY"

Expand All @@ -88,3 +117,9 @@ jobs:

echo "❌ Commit is not GPG signed with a trusted key!"
exit 1

# ---------- Optional status for skipped forked PRs ----------
- name: Skip GPG checks for external PRs
if: ${{ github.event.pull_request.head.repo.full_name != github.repository && github.event_name == 'pull_request' }}
run: echo "🟡 Skipping GPG verification for external PR (no access to secrets)."

59 changes: 35 additions & 24 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
<!-- Main Stylesheet -->
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="main-service.css">
<link rel="stylesheet" href="mini-services.css">
<link rel="stylesheet" href="whatsapp-floating.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
Expand All @@ -30,16 +30,16 @@
<body>
<!-- Header / Navbar -->
<nav class="navbar">
<div class="logo">VIMAL TECH</div>
<div class="logo">Vimal Tech</div>

<ul class="nav-links" id="nav-links">
<li><a href="#hero" class="active">Home</a></li>
<li><a href="#tech-stack">Tech Stack</a></li>
<li><a href="#about">About</a></li>
<li><a href="#tech-stack">Tech Stack</a></li>
<li><a href="#skills">Skills</a></li>
<li><a href="#projects">Projects</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="services.html">Services</a></li> <!-- New Services link -->
<li><a href="services.html" target="_blank"">Services</a></li> <!-- New Services link -->
</ul>
<!-- hamburger icon -->
<div style="display: flex; align-items: center;">
Expand All @@ -62,23 +62,21 @@ <h2>About Me</h2>
<p>
I am a Java Developer with hands-on experience in building backend systems, REST APIs, and enterprise
applications.
Skilled in <strong>Java, Spring Boot, Hibernate, SQL</strong>, and <strong>Cloud Technologies</strong>.
Skilled in <strong>Java, Spring Boot, Hibernate, Spring Framework, SQL, NoSQL</strong>, and <strong>Cloud Technologies</strong>.
Passionate about writing clean, maintainable, and efficient code.
</p>
</section>

<!-- Tech Stack Section -->
<section id="tech-stack" class="container fade-in">
<section id="tech-stack" class="container fade-in tech-stack">
<h2>Tech Stack Dashboard</h2>
<p>
<a href="https://vimal-java-dev.github.io/" target="_blank">Tap to open page</a>
</p>
<a href="https://vimal-java-dev.github.io/" target="_blank" class="btn">Tap to read Overview</a>
</section>

<!-- Mini Services Preview Section -->
<section id="services-preview" class="container fade-in">
<h2>Services I Offer</h2>
<p>Explore professional services to help build and scale your projects:</p>
<h2>Services I Offer I Preview</h2>
<p>Explore professional services to help build and scale your projects:</p><br>

<div class="services-grid">
<div class="service-card">
Expand All @@ -94,7 +92,7 @@ <h3>Cloud Integration</h3>
<div class="service-card">
<i class="fas fa-database"></i>
<h3>Database Management</h3>
<p>Manage relational and NoSQL databases like MySQL, PostgreSQL, MongoDB.</p>
<p>Manage relational and NoSQL databases like Oracle, MySQL, PostgreSQL, MongoDB, Cassandra.</p>
</div>
<div class="service-card">
<i class="fas fa-project-diagram"></i>
Expand All @@ -103,12 +101,9 @@ <h3>Project Consulting</h3>
</div>
</div>

<div class="cta-section" style="margin-top:20px; text-align:center;">
<a href="services.html" class="btn">View All Services</a>
<p style="margin-top:10px;">
Check my live project:
<a href="https://alexfoodcorner.netlify.app/" target="_blank">Alex Food Corner</a>
</p>
<div class="services-preview" style="margin-top:20px">
<a href="services.html" target="_blank" class="btn">View All Services</a><br/><br/>
<a href="https://alexfoodcorner.netlify.app/" target="_blank" class="btn">Alex Food Corner Live Project</a>
</div>
</section>

Expand Down Expand Up @@ -185,21 +180,37 @@ <h3>Jira</h3>
<section id="projects" class="container fade-in">
<h2>Projects</h2>
<div class="projects-grid">
<div class="project-card">
<h3>PTC Windchill (Java Product)</h3>
<p>Customized Java Client for PTC Windchill PDMLink as Shadow Resource.</p>
</div>
<div class="project-card">
<h3>Parking System (POC)</h3>
<p>Rest API, Microservices, Docker + Swagger-UI, Postman.</p>
</div>
<div class="project-card">
<h3>Data Streaming App (POC)</h3>
<p>Spring Boot + Kafka + Spark + Docker for real-time data processing.</p>
<p>Spring Boot + Kafka + Spark + Docker for Real-Time Data Processing.</p>
</div>
<div class="project-card">
<h3>Health Care Center Management</h3>
<p>Core Java, Spring Framework and Hibernate + JSP + Oracle</p>
</div>
<div class="project-card">
<h3>Library Management System</h3>
<p>Spring Boot & MySQL app to manage books, members, and loans.</p>
<h3>Consultant Return On Investment</h3>
<p>Core Java, JDBC, DAO Design Pattern, Struts 2.0-Framework. + Oracle</p>
</div>
<div class="project-card">
<h3>E-commerce Backend</h3>
<p>REST API backend with Java, Spring Boot, and Hibernate.</p>
<h3>E-commerce Backend Best Practices</h3>
<p>REST API backend with Java, Spring Boot, and Hibernate + Maven, MySQL</p>
</div>
<div class="project-card">
<h3>Chat Application</h3>
<p>Real-time chat with Java WebSocket & Spring Boot.</p>
<p>Real-Time Chat with Java WebSocket & Spring Boot.</p>
</div>
<div class="project-card">
<h3>Desktop Chat Application (Local Area Network)</h3>
<p>Java Remote Method Invocation + Stubs + Skeletons, Swing Framework.</p>
</div>
</div>
</section>
Expand Down
36 changes: 34 additions & 2 deletions main.css
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ h3 {
}

.logo {
font-size: 24px;
font-size: 20px;
font-weight: bold;
}

Expand Down Expand Up @@ -184,9 +184,37 @@ h3 {
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
}

/* ===================================================
===== Teck Stack Section =====
=================================================== */
#tech-stack {
text-align: center;
height: 20vh;
}

.tech-stack .btn {
display: inline-block;
padding: 12px 25px;
border-radius: 30px;
background: #ff9800;
color: #fff;
text-decoration: none;
font-weight: bold;
transition: background 0.3s, transform 0.3s;
}

.tech-stack .btn:hover {
background: #e68900;
transform: translateY(-3px);
}

/* ===================================================
===== Skills Section =====
=================================================== */
#skills {
text-align: center;
}

.skills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
Expand Down Expand Up @@ -216,6 +244,10 @@ h3 {
/* ===================================================
===== Projects Section =====
=================================================== */
#projects {
text-align: center;
}

.projects-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
Expand Down Expand Up @@ -445,4 +477,4 @@ body.dark #darkModeToggle:hover {
transform: scale(1);
box-shadow: 0 0 8px rgba(255, 152, 0, 0.4);
}
}
}
62 changes: 38 additions & 24 deletions main-service.css → mini-services.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
padding: 25px 15px;
border-radius: 12px;
text-align: center;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
cursor: pointer;
}
Expand Down Expand Up @@ -34,39 +35,52 @@
color: #d2691e; /* Darker highlight on hover */
}

/* ============== */
/* Services Preview Animations */
#services-preview .service-card {
background: #f5f5f5;
padding: 25px 15px;
border-radius: 12px;
/* ===================================================
===== Mini Services Preview Section =====
=================================================== */
#services-preview{
text-align: center;
transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
cursor: pointer;
}

#services-preview .service-card:hover {
transform: translateY(-8px) scale(1.03);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
background: #fff3e0; /* Slight highlight color */
.services-preview .btn {
display: inline-block;
padding: 12px 25px;
border-radius: 30px;
background: #ff9800;
color: #fff;
text-decoration: none;
font-weight: bold;
transition: background 0.3s, transform 0.3s;
}

#services-preview .service-card i {
font-size: 2.5rem;
color: sandybrown;
margin-bottom: 12px;
transition: transform 0.3s ease, color 0.3s ease;
.services-preview .btn:hover {
background: #e68900;
transform: translateY(-3px);
}

#services-preview .service-card:hover i {
transform: rotate(10deg) scale(1.1);
color: #ff8c42; /* Slight color change on hover */
/* ===================================================
===== Dark Mode =====
=================================================== */
body.dark {
background: #181818;
color: #e0e0e0;
}

#services-preview .service-card h3 {
transition: color 0.3s ease;
body.dark #services-preview .service-card {
background: #242424;
color: #e0e0e0;
}

#services-preview .service-card:hover h3 {
color: #d2691e; /* Darker highlight on hover */
body.dark #services-preview .service-card:hover {
transform: translateY(-8px) scale(1.03);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
background: #fff3e0; /* Slight highlight color */
}

body.dark #services-preview .service-card p {
transition: color 0.3s ease;
}

body.dark .service-card:hover p {
color: #000000; /* Darker highlight on hover */
}
Loading