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
14 changes: 14 additions & 0 deletions public/projectImages/spring-inventory.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions public/projectImages/spring-leave.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions public/projectImages/spring-library.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 10 additions & 6 deletions src/components/Project.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,16 @@ const Project = ({ technologies, title, image, color, id, github, deployed, desc
<h3 className="modalTitle">{title}</h3>
<p className="projectDescription">{description}</p>
<div className="modalActions">
<button className="btn" onClick={() => (window.location.href = github)}>
GitHub Repo
</button>
<button className="btn" onClick={() => (window.location.href = deployed)}>
Live Link
</button>
{github && (
<button className="btn" onClick={() => (window.location.href = github)}>
GitHub Repo
</button>
)}
{deployed && (
<button className="btn" onClick={() => (window.location.href = deployed)}>
Live Link
</button>
)}
<Link className="btn btn-secondary" to={`/projects/${slug}`} onClick={handleCloseModal}>
Project Details
</Link>
Expand Down
60 changes: 60 additions & 0 deletions src/pages/portfolio/projectsData.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,64 @@
[
{
"id": 7,
"title": "Inventory Management API",
"slug": "inventory-management-api",
"image": "/projectImages/spring-inventory.svg",
"summary": "Spring Boot REST API for tracking products, stock levels, suppliers, and reorder activity.",
"description": "A Java Spring Boot inventory service designed around clean REST endpoints, validation, and persistent data workflows. The project models products, suppliers, stock adjustments, and low-stock reporting so teams can keep warehouse inventory accurate and auditable.",
"highlights": [
"Designed CRUD REST endpoints with layered controller, service, and repository architecture",
"Added request validation and consistent error responses for API consumers",
"Modeled inventory, supplier, and stock movement relationships with Spring Data JPA"
],
"technologies": "Java | Spring Boot | Spring Data JPA | REST API | MySQL",
"github": null,
"deployed": null,
"bgcolor": "#138a3d",
"category": "Spring Boot",
"year": "2024",
"role": "Back-End"
},
{
"id": 8,
"title": "Employee Leave Management",
"slug": "employee-leave-management",
"image": "/projectImages/spring-leave.svg",
"summary": "Java backend for employee leave requests, approvals, balances, and status tracking.",
"description": "A Spring Boot application for managing employee leave workflows from request creation through manager approval. The backend focuses on role-aware business rules, leave balance calculations, and clear status transitions for HR-style operations.",
"highlights": [
"Implemented leave request lifecycle states for pending, approved, and rejected workflows",
"Separated HR, manager, and employee responsibilities through service-level rules",
"Structured APIs for leave balances, request history, and approval queues"
],
"technologies": "Java | Spring Boot | REST API | Hibernate | MySQL",
"github": null,
"deployed": null,
"bgcolor": "#0f766e",
"category": "Spring Boot",
"year": "2024",
"role": "Java Developer"
},
{
"id": 9,
"title": "Library Management System",
"slug": "library-management-system",
"image": "/projectImages/spring-library.svg",
"summary": "Spring Boot service for cataloguing books, members, loans, and returns.",
"description": "A Java library management backend that organizes books, members, borrowing records, and return workflows. The project demonstrates practical Spring Boot patterns for data modeling, business validation, and maintainable API design.",
"highlights": [
"Created domain models for books, members, loans, due dates, and returns",
"Added validation for availability checks before issuing books",
"Organized reusable service methods for catalogue search and lending operations"
],
"technologies": "Java | Spring Boot | Spring Data JPA | REST API | SQL",
"github": null,
"deployed": null,
"bgcolor": "#2563eb",
"category": "Spring Boot",
"year": "2023",
"role": "Back-End"
},
{
"id": 1,
"title": "Bike Buddy",
Expand Down
8 changes: 5 additions & 3 deletions src/pages/projects/ProjectArchive.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@ const ProjectArchive = () => {
<span>{project.technologies}</span>
<span className="archiveLinks">
<Link to={`/projects/${project.slug}`}>Details</Link>
<a href={project.deployed} target="_blank" rel="noreferrer">
Live
</a>
{project.deployed && (
<a href={project.deployed} target="_blank" rel="noreferrer">
Live
</a>
)}
</span>
</div>
))}
Expand Down
16 changes: 10 additions & 6 deletions src/pages/projects/ProjectDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,16 @@ const ProjectDetails = () => {
))}
</ul>
<div className="projectDetailsActions">
<a className="btn" href={project.deployed} target="_blank" rel="noreferrer">
Live Experience
</a>
<a className="btn btn-secondary" href={project.github} target="_blank" rel="noreferrer">
View Source
</a>
{project.deployed && (
<a className="btn" href={project.deployed} target="_blank" rel="noreferrer">
Live Experience
</a>
)}
{project.github && (
<a className="btn btn-secondary" href={project.github} target="_blank" rel="noreferrer">
View Source
</a>
)}
</div>
</div>
</div>
Expand Down
8 changes: 5 additions & 3 deletions src/pages/projects/ProjectsOverview.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,11 @@ const ProjectsOverview = () => {
<Link className="btn" to={`/projects/${project.slug}`}>
View Details
</Link>
<a className="btn btn-secondary" href={project.deployed} target="_blank" rel="noreferrer">
Live Demo
</a>
{project.deployed && (
<a className="btn btn-secondary" href={project.deployed} target="_blank" rel="noreferrer">
Live Demo
</a>
)}
</div>
</div>
</article>
Expand Down
Loading