Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
5aa5423
cambios en el portfolio
Nehemimosqueda520 Nov 27, 2023
1c5d369
Create README.md
Nehemimosqueda520 Nov 27, 2023
2990170
mejoras y readme
Nehemimosqueda520 Nov 28, 2023
b0b7f59
nuevos cambios
Nehemimosqueda520 Nov 28, 2023
1aec12a
Cambio de curriculum
Nehemimosqueda520 Nov 29, 2023
6d8a540
sitio listo
Nehemimosqueda520 Nov 30, 2023
41d3c56
añadir app del clima
Nehemimosqueda520 Dec 6, 2023
acca877
mini actualización
Nehemimosqueda520 Mar 30, 2024
95dca22
mini cambio en el estilo
Nehemimosqueda520 Dec 18, 2024
cc52b0b
cambio de idioma
Nehemimosqueda520 Dec 19, 2024
d0ade60
update 25/3/2025 22:18ARG
Nehemimosqueda520 Mar 26, 2025
5f2b8c5
added new cv
Nehemimosqueda520 Mar 30, 2025
3438a54
nuevo curriculum
Nehemimosqueda520 May 19, 2025
dda7f95
Update contact section with new form
Nehemimosqueda520 Jul 30, 2025
b361006
Merge pull request #1 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
a1304f0
Secure contact form
Nehemimosqueda520 Jul 30, 2025
5fa80c7
Merge pull request #2 from Nehemimosqueda520/codex/make-form-secure
Nehemimosqueda520 Jul 30, 2025
9552e22
add formulary secure
Nehemimosqueda520 Jul 30, 2025
a43c6dc
Merge pull request #3 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
7a701d0
change form text to english
Nehemimosqueda520 Jul 30, 2025
ac5a62f
Merge pull request #4 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
597a7f4
Add certificates section
Nehemimosqueda520 Jul 30, 2025
a4c60e0
Merge pull request #5 from Nehemimosqueda520/codex/add-my-certificate…
Nehemimosqueda520 Jul 30, 2025
a2eddc2
Merge pull request #6 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
a03dc28
Update services section with service packages
Nehemimosqueda520 Jul 30, 2025
1de3925
modify prices
Nehemimosqueda520 Jul 30, 2025
0a62765
Merge branch 'main' into codex/update-services-section-with-service-c…
Nehemimosqueda520 Jul 30, 2025
37fade7
Merge pull request #7 from Nehemimosqueda520/codex/update-services-se…
Nehemimosqueda520 Jul 30, 2025
3e6e3dd
edit price
Nehemimosqueda520 Jul 30, 2025
085a35d
Merge pull request #8 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
33b1586
Restore certificates section styling
Nehemimosqueda520 Jul 30, 2025
0b8234d
Merge pull request #9 from Nehemimosqueda520/codex/restaurar-seccion-…
Nehemimosqueda520 Jul 30, 2025
bb1c24a
Merge pull request #10 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
1919136
little break
Nehemimosqueda520 Jul 30, 2025
b38b128
Merge pull request #11 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
58f0e22
uwu
Nehemimosqueda520 Jul 30, 2025
be3969c
Merge pull request #13 from Nehemimosqueda520/develop
Nehemimosqueda520 Jul 30, 2025
8ab064f
Add reCAPTCHA to contact form
Nehemimosqueda520 Jul 30, 2025
9bd70b7
captcha added
Nehemimosqueda520 Jul 30, 2025
85f6d84
Merge pull request #14 from Nehemimosqueda520/codex/add-captcha-to-fo…
Nehemimosqueda520 Jul 30, 2025
95a7bee
Improve SEO metadata and image descriptions
Nehemimosqueda520 Jul 30, 2025
edaba95
Merge pull request #16 from Nehemimosqueda520/feature/improve-seo
Nehemimosqueda520 Jul 30, 2025
a2ba93d
added canonical url
Nehemimosqueda520 Jul 30, 2025
6109c68
change a link
Nehemimosqueda520 Jul 31, 2025
5116264
Add new projects to portfolio
Nehemimosqueda520 Aug 4, 2025
d59332c
Replace local technology images with inline icons
Nehemimosqueda520 Aug 7, 2025
68ea289
Changes in tecnologies box height
Nehemimosqueda520 Aug 7, 2025
a3303c9
Merge pull request #20 from Nehemimosqueda520/codex/add-technologies-…
Nehemimosqueda520 Aug 7, 2025
69c7c3b
price Update
Nehemimosqueda520 Aug 10, 2025
57aef2e
Nuevo paquete de servicios
Nehemimosqueda520 Aug 22, 2025
1e18544
new changes
Nehemimosqueda520 Aug 25, 2025
714a27a
take off 'c#'
Nehemimosqueda520 Aug 25, 2025
fe7c532
quito el captcha de la pagina
Nehemimosqueda520 Aug 26, 2025
d4bb77b
new resume
Nehemimosqueda520 Aug 29, 2025
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
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"CodeGPT.apiKey": "CodeGPT Plus Beta"
}
Comment on lines +1 to +3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove API key from source control and workspace settings.

Committing API keys (even placeholders) is a security anti-pattern and can lead to leaks/misuse. Prefer user-level settings or environment variables; do not check secrets into the repo.

Apply this diff to stop tracking the key in the repo:

-{
-    "CodeGPT.apiKey": "CodeGPT Plus Beta"
-}
+{
+  // Intentionally omit API keys from workspace.
+  // Configure the extension via user settings or env vars on each dev machine.
+}

Optionally add this to .gitignore at repo root to prevent future commits:

.vscode/settings.json
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"CodeGPT.apiKey": "CodeGPT Plus Beta"
}
{
// Intentionally omit API keys from workspace.
// Configure the extension via user settings or env vars on each dev machine.
}
🤖 Prompt for AI Agents
.vscode/settings.json lines 1-3: Remove the API key entry from this workspace
settings file and do not commit any secrets; replace the key with a non-secret
placeholder or delete the property entirely, then save the file. Ensure the real
API key is moved to a user-level setting or an environment variable and update
any docs on how developers should configure their local environment. Finally,
add .vscode/settings.json to the repository .gitignore (at repo root) to prevent
future commits of workspace secrets.

45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Nehemías Mosqueda Portfolio

Este repositorio contiene el código fuente para el sitio web del portafolio de Nehemías Mosqueda. El sitio está diseñado para mostrar información sobre habilidades, servicios, proyectos y cómo contactar a Nehemías.

## Estructura del Código

- **index.html**: Archivo principal que define la estructura del sitio web con diferentes secciones como "inicio", "sobre mí", "servicios", "portfolio" y "contacto".
- **css/style.css**: Archivo CSS personalizado para estilos específicos del sitio web.
- **js/script.js**: Archivo JavaScript que proporciona funcionalidades adicionales al sitio web.
- **images**: Carpeta con imágenes utilizadas en el sitio web.
- **documents**: Contiene archivos descargables como currículum y carta de presentación en formato PDF.

## Secciones del Sitio Web

- **Inicio (Home)**: Presentación de Nehemías Mosqueda con información sobre habilidades y estudios. Enlaces a perfiles de correo electrónico y GitHub. Botón de descarga de currículum.
- **Sobre Mí (About)**: Breve información personal, actitud hacia el aprendizaje y objetivo profesional.
- **Servicios (Services)**: Enumeración de servicios ofrecidos con descripciones breves.
- **Portfolio**: Muestra proyectos con imágenes, títulos y descripciones.
- **Contacto**: Formulario de contacto con campos para nombre, correo, teléfono, empresa y mensaje.
- **Contacto**: Formulario de contacto que envía los datos de manera segura a través de HTTPS utilizando el servicio [Formspree](https://formspree.io/).
- **Footer**: Información de derechos de autor y botón de regreso al inicio.

Comment on lines +15 to +22
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix duplicated “Contacto” item and sync section names with the site.

There are two “Contacto” bullets and the list is out of sync with index.html (About Me, Technologies, Certificates, Projects).

Apply this diff to align and dedupe:

-## Secciones del Sitio Web
-
-- **Inicio (Home)**: Presentación de Nehemías Mosqueda con información sobre habilidades y estudios. Enlaces a perfiles de correo electrónico y GitHub. Botón de descarga de currículum.
-- **Sobre Mí (About)**: Breve información personal, actitud hacia el aprendizaje y objetivo profesional.
-- **Servicios (Services)**: Enumeración de servicios ofrecidos con descripciones breves.
-- **Portfolio**: Muestra proyectos con imágenes, títulos y descripciones.
-- **Contacto**: Formulario de contacto con campos para nombre, correo, teléfono, empresa y mensaje.
-- **Contacto**: Formulario de contacto que envía los datos de manera segura a través de HTTPS utilizando el servicio [Formspree](https://formspree.io/).
-- **Footer**: Información de derechos de autor y botón de regreso al inicio.
+## Secciones del Sitio Web
+
+- **Inicio (Home)**: Presentación, enlaces a correo, GitHub y LinkedIn, y botón para descargar el CV.
+- **Sobre mí (About Me)**: Breve información personal, actitud hacia el aprendizaje y objetivos.
+- **Servicios (Services)**: Paquetes y características.
+- **Tecnologías (Technologies)**: Tecnologías de Front‑end, Back‑end y Diseño.
+- **Certificados (Certificates)**: Enlaces a certificados verificados.
+- **Proyectos (Projects)**: Muestra de proyectos con imágenes, títulos y descripciones.
+- **Contacto (Contact me)**: Formulario de contacto que envía datos de forma segura mediante [Formspree](https://formspree.io/).
+- **Footer**: Derechos de autor y botón de regreso al inicio.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- **Inicio (Home)**: Presentación de Nehemías Mosqueda con información sobre habilidades y estudios. Enlaces a perfiles de correo electrónico y GitHub. Botón de descarga de currículum.
- **Sobre Mí (About)**: Breve información personal, actitud hacia el aprendizaje y objetivo profesional.
- **Servicios (Services)**: Enumeración de servicios ofrecidos con descripciones breves.
- **Portfolio**: Muestra proyectos con imágenes, títulos y descripciones.
- **Contacto**: Formulario de contacto con campos para nombre, correo, teléfono, empresa y mensaje.
- **Contacto**: Formulario de contacto que envía los datos de manera segura a través de HTTPS utilizando el servicio [Formspree](https://formspree.io/).
- **Footer**: Información de derechos de autor y botón de regreso al inicio.
## Secciones del Sitio Web
- **Inicio (Home)**: Presentación, enlaces a correo, GitHub y LinkedIn, y botón para descargar el CV.
- **Sobre mí (About Me)**: Breve información personal, actitud hacia el aprendizaje y objetivos.
- **Servicios (Services)**: Paquetes y características.
- **Tecnologías (Technologies)**: Tecnologías de Front-end, Back-end y Diseño.
- **Certificados (Certificates)**: Enlaces a certificados verificados.
- **Proyectos (Projects)**: Muestra de proyectos con imágenes, títulos y descripciones.
- **Contacto (Contact me)**: Formulario de contacto que envía datos de forma segura mediante [Formspree](https://formspree.io/).
- **Footer**: Derechos de autor y botón de regreso al inicio.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~15-~15: Probablemente falta un determinante.
Context: ...electrónico y GitHub. Botón de descarga de currículum. - Sobre Mí (About): Bre...

(AI_ES_GGEC_MISSING_DETERMINER)


[typographical] ~16-~16: Mayúsculas y minúsculas recomendadas.
Context: ...ón de descarga de currículum. - Sobre Mí (About): Breve información personal, ...

(AI_ES_GGEC_REPLACEMENT_CASING_UPPERCASE)

🤖 Prompt for AI Agents
In README.md around lines 15 to 22, the list contains a duplicated "Contacto"
item and does not match the actual site sections; remove the duplicate
"Contacto" bullet, replace the section list so it matches index.html (About Me,
Technologies, Certificates, Projects), ensure the Contact entry describes the
secure Formspree form once, and keep Footer and other items unchanged so the
README and site nav are in sync.

## Recursos Externos Utilizados

- **Swiper**: Librería JavaScript para crear sliders/carousels.
- **Boxicons**: Conjunto de iconos utilizados para redes sociales y servicios.

## Optimización para Motores de Búsqueda (SEO)

El sitio incorpora metadatos descriptivos y etiquetas Open Graph para mejorar la visibilidad en buscadores y redes sociales. Todas las imágenes incluyen atributos `alt` descriptivos para favorecer la accesibilidad y el posicionamiento.

## Uso y Contribución

El código es público y puede ser utilizado o modificado. Para contribuir, hacer un fork, realizar cambios y enviar un pull request.

*Nota: Se recomienda mantener actualizados los recursos externos utilizados en el código.*

Para más detalles o mejoras en la documentación, contactar a Nehemías Mosqueda a través de los enlaces proporcionados en el sitio web.

### Configurar el formulario de contacto

El formulario utiliza Formspree para enviar los mensajes de forma segura. Si deseas recibir los correos en tu propia cuenta, registra un formulario en Formspree y actualiza el atributo `action` en `index.html` con el enlace proporcionado por el servicio.

Se ha incorporado Google reCAPTCHA para prevenir el spam. Registra tu dominio y reemplaza el valor de `data-sitekey` en `index.html` por tu clave de sitio.

140 changes: 139 additions & 1 deletion css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
:root {
--bg-color: #fdfdfd;
--text-color: #333;
--main-color: #754ef9;
--main-color: #8b1414;
--white-color: #fdfdfd;
--shadow-color: rgba(0, 0, 0, .2);
}
Expand Down Expand Up @@ -65,6 +65,8 @@ body {
margin-right: auto;
}



.navbar a {
position: relative;
font-size: 1.7rem;
Expand Down Expand Up @@ -137,6 +139,8 @@ section {
font-size: 5.6rem;
font-weight: 700;
margin-bottom: .3rem;
line-height: 60px;
margin-top: 20px;
}

.home-content p {
Expand Down Expand Up @@ -204,6 +208,7 @@ section {
display: flex;
justify-content: center;
align-items: center;
text-align: center;
animation: professionRotate 13s ease-out infinite;
}

Expand Down Expand Up @@ -382,6 +387,139 @@ span {
margin: 1rem 0 3rem;
}

.services-box ul {
text-align: left;
margin: 1rem 0 2rem 1.5rem;
font-size: 1.6rem;
}

.services-box ul li {
margin-bottom: .5rem;
list-style-type: disc;
}

.technologies {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding: 10rem 7% 2rem;
}

.technologies {
min-height: auto;
padding-bottom: 10rem;
}

.technologies h2 {
margin-bottom: 5rem;
}

.technologies .technologies-container {
display: flex;
justify-content: center;
align-items: flex-start;
flex-wrap: wrap;
gap: 2rem;
}

.technologies-container .technology-box {
flex: 1 1 30rem;
background: var(--bg-color);
padding: 3rem 2rem 4rem;
border-radius: 2rem;
box-shadow: 0 .1rem .5rem var(--shadow-color);
text-align: center;
border-top: .6rem solid var(--main-color);
border-bottom: .6rem solid var(--main-color);
height: 25rem;
}
Comment on lines +426 to +436
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Avoid fixed heights in cards (.technology-box).

Fixed height (25rem) risks overflow with localization or additional icons. Prefer min-height and natural growth.

Apply this diff:

-.technologies-container .technology-box {
+.technologies-container .technology-box {
     flex: 1 1 30rem;
     background: var(--bg-color);
     padding: 3rem 2rem 4rem;
     border-radius: 2rem;
     box-shadow: 0 .1rem .5rem var(--shadow-color);
     text-align: center;
     border-top: .6rem solid var(--main-color);
     border-bottom: .6rem solid var(--main-color);
-    height: 25rem;
+    min-height: 25rem;
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.technologies-container .technology-box {
flex: 1 1 30rem;
background: var(--bg-color);
padding: 3rem 2rem 4rem;
border-radius: 2rem;
box-shadow: 0 .1rem .5rem var(--shadow-color);
text-align: center;
border-top: .6rem solid var(--main-color);
border-bottom: .6rem solid var(--main-color);
height: 25rem;
}
.technologies-container .technology-box {
flex: 1 1 30rem;
background: var(--bg-color);
padding: 3rem 2rem 4rem;
border-radius: 2rem;
box-shadow: 0 .1rem .5rem var(--shadow-color);
text-align: center;
border-top: .6rem solid var(--main-color);
border-bottom: .6rem solid var(--main-color);
min-height: 25rem;
}
🤖 Prompt for AI Agents
In css/style.css around lines 426 to 436, the .technologies-container
.technology-box currently uses a fixed height: 25rem which can cause overflow
with translations or extra content; change this to use min-height: 25rem and
remove the fixed height so the card can grow naturally (ensure any layout
relying on equal heights switches to flex alignment or use align-items/stretch
if needed), and verify that padding and box-sizing produce the intended spacing.


.technologies-container .technology-box:hover {
box-shadow: 0 .1rem 2rem var(--shadow-color);
transform: scale(1.02);
transition: .5s ease;
}

.technology-box:hover h3 {
color: var(--main-color);
}

.technology-box h3 {
font-size: 2.6rem;
margin-bottom: 2rem;
}

.tech-icons {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 1.5rem;
}

.tech-icons i {
font-size: 5rem;
color: var(--main-color);
}

.tech-icons svg {
width: 5rem;
height: 5rem;
}

.certificates {
min-height: auto;
padding-bottom: 10rem;
}

.certificates h2 {
margin-bottom: 5rem;
}

.certificates .certificates-container {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 2rem;
}

.certificates-container .certificates-box {
flex: 1 1 30rem;
background: var(--bg-color);
padding: 3rem 2rem 4rem;
border-radius: 2rem;
box-shadow: 0 .1rem .5rem var(--shadow-color);
text-align: center;
border-top: .6rem solid var(--main-color);
border-bottom: .6rem solid var(--main-color);
transition: .5s ease;
}

.certificates-container .certificates-box:hover {
box-shadow: 0 .1rem 2rem var(--shadow-color);
transform: scale(1.02);
}

.certificates-box i {
font-size: 7rem;
color: var(--main-color);
}

.certificates-box h3 {
font-size: 2.6rem;
transition: .5s ease;
}

.certificates-box:hover h3 {
color: var(--main-color);
}

.certificates-box p {
font-size: 1.6rem;
margin: 1rem 0 3rem;
}

.portfolio {
min-height: auto;
padding-bottom: 10rem;
Expand Down
Binary file added documents/coverletter.pdf
Binary file not shown.
Binary file added documents/curriculum.pdf
Binary file not shown.
Binary file modified images/about.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/calculator.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/clima.webp
Binary file not shown.
Binary file added images/drumPad.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/markdown.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/portada.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/portada2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/sun.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading