Add Stock Manager App project with description and image

- Introduced a new project entry for the Stock Manager App in the projects data.
- Updated the Projects component to handle multi-line descriptions.
- Added a new image for the Stock Manager App.
- Replaced the link icon with a new source icon in the Projects component.
- Added new SVG icons for PostgreSQL and source.
- Updated the Prisma icon SVG file.
This commit is contained in:
2025-11-12 19:29:57 +00:00
parent 07eaff0e65
commit cb21f91bc1
7 changed files with 50 additions and 47 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

+19 -17
View File
@@ -30,7 +30,13 @@ interface ProjectProps {
<h4 class="text-xl font-bold text-gray-200 mb-2">
{project.title}
</h4>
<p class="text-gray-300 text-wrap mb-4">{project.description}</p>
{project.description && (
<div class="text-gray-300 text-wrap mb-4">
{project.description.split('\n').map((line, index) => (
<p >{line}</p>
))}
</div>
)}
<div class="flex flex-wrap gap-2 mb-6">
{project.tags.map((tag: ProjectTag) => (
<span class="inline-flex items-center px-3 py-1 bg-gray-800 text-gray-300 text-sm rounded-full">
@@ -52,26 +58,22 @@ interface ProjectProps {
name="link"
class="w-6 h-6 mr-2 hover:scale-110 hover:text-gray-100 transition-transform duration-300"
data-inline="false"
fill={"bg-white"}
/>
</a>
)}
</div>
<div class="flex items-center gap-4">
{project.repoUrl && (
<a
href={project.repoUrl}
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 text-sky-400 hover:text-sky-300 transition-colors"
>
<span
class="iconify"
data-icon="mdi:github"
data-inline="false"
/>
Source Code
</a>
<a
href={project.repoUrl}
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 text-sky-400 hover:text-sky-300 transition-colors"
>
<Icon
name="source"
class="w-6 h-6 mr-2 hover:scale-110 hover:text-gray-100 transition-transform duration-300"
data-inline="false"
/>
</a>
)}
</div>
</div>
+17 -24
View File
@@ -75,28 +75,21 @@ export const projects = [
liveUrl: "https://hamitalia.com",
repoUrl: null,
},
// {
// title: "E-Commerce Analytics Dashboard",
// description:
// "A full-stack web application using Next.js and TypeScript for the frontend, and a Python backend to process and display sales data. Features data visualization and user authentication.",
// tags: ["Next.js", "TypeScript", "Python", "React", "Data Visualization"],
// liveUrl: "#",
// repoUrl: "#",
// },
// {
// title: "Automated Server Provisioning",
// description:
// "Developed a suite of Ansible playbooks and shell scripts to automate the setup and configuration of Linux web servers, reducing deployment time by over 80%.",
// tags: ["SysAdmin", "Ansible", "Bash", "Linux"],
// liveUrl: null,
// repoUrl: "#",
// },
// {
// title: "Containerized Microservices Platform",
// description:
// "Designed and implemented a Docker-based microservices architecture for a suite of internal tools, improving scalability and simplifying maintenance.",
// tags: ["Docker", "Microservices", "System Design"],
// liveUrl: null,
// repoUrl: "#",
// },
{
title: "Stock Manager App",
description:
`Aplicación full stack completa para la gestión de inventarios, activos y asignaciones de equipamiento desarrollada con Next.js, TypeScript, Prisma y PostgreSQL. \n
- Usuario: admin
- Contraseña: admin
`,
tags: [
{ name: "Next.js", icon: "nextjs" },
{ name: "TypeScript", icon: "ts" },
{ name: "Prisma", icon: "prisma" },
{ name: "PostgreSQL", icon: "postgresql" },
],
imageUrl: "/stock-manager.webp",
liveUrl: "https://stock.aferrer.dev",
repoUrl: "https://git.aferrer.dev/aferrer/stock-manager",
}
];
+2 -6
View File
@@ -1,6 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 2.00001L11.75 12.25" stroke="#d1d5dc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.9998 6.49999L21.9998 1.99999L17.0568 1.99999" stroke="#d1d5dc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 2H4C2.89543 2 2 2.89543 2 4V20C2 21.1046 2.89543 22 4 22H20C21.1046 22 22 21.1046 22 20V12.75" stroke="#d1d5dc" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#000000"><path d="M1.5 1H6v1H2v12h12v-4h1v4.5l-.5.5h-13l-.5-.5v-13l.5-.5z"/><path d="M15 1.5V8h-1V2.707L7.243 9.465l-.707-.708L13.293 2H8V1h6.5l.5.5z"/></svg>

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 372 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="-27 0 310 310" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M254.312882,235.518775 L148.000961,9.74987264 C145.309805,4.08935083 139.731924,0.359884549 133.472618,0.0359753113 C127.198908,-0.384374336 121.212054,2.71925839 117.939655,8.08838662 L2.63252565,194.847143 C-0.947129465,200.604248 -0.871814894,207.912774 2.8257217,213.594888 L59.2003287,300.896318 C63.5805009,307.626626 71.8662281,310.673635 79.5631922,308.384597 L243.161606,259.992851 C248.145475,258.535702 252.252801,254.989363 254.421072,250.271225 C256.559881,245.57581 256.523135,240.176915 254.32061,235.511047 L254.312882,235.518775 Z M230.511129,245.201761 L91.6881763,286.252058 C87.4533189,287.511696 83.388474,283.840971 84.269448,279.567474 L133.866738,42.0831633 C134.794079,37.6396542 140.929985,36.9364206 142.869673,41.0476325 L234.684164,236.021085 C235.505704,237.779423 235.515611,239.809427 234.711272,241.575701 C233.906934,243.341974 232.369115,244.667163 230.503401,245.201761 L230.511129,245.201761 Z" fill="#000000" fill-rule="nonzero">
</path>
</g>

After

Width:  |  Height:  |  Size: 1.3 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#000000"><path d="M21.007 8.222A3.738 3.738 0 0 0 15.045 5.2a3.737 3.737 0 0 0 1.156 6.583 2.988 2.988 0 0 1-2.668 1.67h-2.99a4.456 4.456 0 0 0-2.989 1.165V7.4a3.737 3.737 0 1 0-1.494 0v9.117a3.776 3.776 0 1 0 1.816.099 2.99 2.99 0 0 1 2.668-1.667h2.99a4.484 4.484 0 0 0 4.223-3.039 3.736 3.736 0 0 0 3.25-3.687zM4.565 3.738a2.242 2.242 0 1 1 4.484 0 2.242 2.242 0 0 1-4.484 0zm4.484 16.441a2.242 2.242 0 1 1-4.484 0 2.242 2.242 0 0 1 4.484 0zm8.221-9.715a2.242 2.242 0 1 1 0-4.485 2.242 2.242 0 0 1 0 4.485z"/></svg>

After

Width:  |  Height:  |  Size: 731 B