From 9afe18fa824509fb239b7dbcd94bfaad354b4ea8 Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Fri, 5 Sep 2025 23:58:14 -0600 Subject: [PATCH 1/6] feat: Update license to Apache 2.0 and modify resume data with new job experiences and links --- LICENSE | 222 +++++++++++++++++++++++++++++--- public/agrivanna-logo.jpeg | Bin 0 -> 3326 bytes public/microsoft-az900-logo.png | Bin 0 -> 28580 bytes public/microsoft-logo.jpeg | Bin 0 -> 2464 bytes src/data/resume.tsx | 92 ++++++++----- 5 files changed, 261 insertions(+), 53 deletions(-) create mode 100644 public/agrivanna-logo.jpeg create mode 100644 public/microsoft-az900-logo.png create mode 100644 public/microsoft-logo.jpeg diff --git a/LICENSE b/LICENSE index 8e08b0c..a8f3691 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,201 @@ -MIT License - -Copyright (c) 2024 Axel Sanchez - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2025 Axel Omar Sanchez Peralta + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/public/agrivanna-logo.jpeg b/public/agrivanna-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b9f325765ca463934279b127663acc1f02c05870 GIT binary patch literal 3326 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 o(Yd5q?fTq-X4@l4!Y5, + }, + ], + }, ], } as const; From 038f54294758c4b1c279f273b216709646a04ff0 Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Sat, 6 Sep 2025 00:19:31 -0600 Subject: [PATCH 2/6] feat: Add @vercel/speed-insights package and integrate SpeedInsights component in layout --- package-lock.json | 36 ++++++++++++++++++++++++++++++++++++ package.json | 1 + src/app/layout.tsx | 2 ++ 3 files changed, 39 insertions(+) diff --git a/package-lock.json b/package-lock.json index ca32c9d..7426b6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@radix-ui/react-tooltip": "^1.0.7", "@types/mdx": "^2.0.13", "@vercel/analytics": "^1.3.2", + "@vercel/speed-insights": "^1.2.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "framer-motion": "^11.2.10", @@ -1233,6 +1234,41 @@ } } }, + "node_modules/@vercel/speed-insights": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.2.0.tgz", + "integrity": "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peerDependencies": { + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", diff --git a/package.json b/package.json index 57b851c..4f02240 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@radix-ui/react-tooltip": "^1.0.7", "@types/mdx": "^2.0.13", "@vercel/analytics": "^1.3.2", + "@vercel/speed-insights": "^1.2.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "framer-motion": "^11.2.10", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 714f8fb..6a1bc42 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,6 +4,7 @@ import { ThemeProvider } from "@/components/theme-provider"; import { TooltipProvider } from "@/components/ui/tooltip"; import { DATA } from "@/data/resume"; import { cn } from "@/lib/utils"; +import { SpeedInsights } from "@vercel/speed-insights/next"; import type { Metadata } from "next"; import { Inter as FontSans } from "next/font/google"; import "./globals.css"; @@ -65,6 +66,7 @@ export default function RootLayout({ {children} + From bcbb664b9496f2ee578ecf13464c8fd937f08b00 Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Sat, 6 Sep 2025 15:44:38 -0600 Subject: [PATCH 3/6] feat: Add CI and Release workflows, configure semantic release, and update Next.js version --- .github/workflows/ci.yml | 30 ++++++++ .github/workflows/release.yml | 38 ++++++++++ .releaserc | 10 +++ package-lock.json | 134 +++++++++++++++++++--------------- package.json | 2 +- 5 files changed, 154 insertions(+), 60 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100644 .releaserc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e47d613 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: CI + +on: + pull_request: + branches: + - main + - devel + workflow_dispatch: + +jobs: + check: + name: Portfolio Check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Install dependencies + run: npm clean-install + + - name: Lint + run: npm run lint + + - name: Build + run: npm run build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f0b2788 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,38 @@ +name: Release + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + release: + name: Release + runs-on: ubuntu-latest + permissions: + contents: write + issues: write + pull-requests: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Initialize package.json + run: npm init -y + + - name: Install dependencies + run: npm install -D semantic-release + + - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies + run: npm audit signatures + + - name: Run semantic release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npx semantic-release diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..548e644 --- /dev/null +++ b/.releaserc @@ -0,0 +1,10 @@ +{ + "branches": [ + "main" + ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/github" + ] +} diff --git a/package-lock.json b/package-lock.json index 7426b6e..71f20a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "framer-motion": "^11.2.10", "gray-matter": "^4.0.3", "lucide-react": "^0.395.0", - "next": "14.2.4", + "next": "^14.2.32", "next-themes": "^0.3.0", "react": "^18", "react-dom": "^18", @@ -268,9 +268,10 @@ } }, "node_modules/@next/env": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", - "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==" + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.32.tgz", + "integrity": "sha512-n9mQdigI6iZ/DF6pCTwMKeWgF2e8lg7qgt5M7HXMLtyhZYMnf/u905M18sSpPmHL9MKp9JHo56C6jrD2EvWxng==", + "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { "version": "14.2.4", @@ -282,12 +283,13 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.32.tgz", + "integrity": "sha512-osHXveM70zC+ilfuFa/2W6a1XQxJTvEhzEycnjUaVE8kpUS09lDpiDDX2YLdyFCzoUbvbo5r0X1Kp4MllIOShw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -297,12 +299,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.32.tgz", + "integrity": "sha512-P9NpCAJuOiaHHpqtrCNncjqtSBi1f6QUdHK/+dNabBIXB2RUFWL19TY1Hkhu74OvyNQEYEzzMJCMQk5agjw1Qg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -312,12 +315,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.32.tgz", + "integrity": "sha512-v7JaO0oXXt6d+cFjrrKqYnR2ubrD+JYP7nQVRZgeo5uNE5hkCpWnHmXm9vy3g6foMO8SPwL0P3MPw1c+BjbAzA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -327,12 +331,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.32.tgz", + "integrity": "sha512-tA6sIKShXtSJBTH88i0DRd6I9n3ZTirmwpwAqH5zdJoQF7/wlJXR8DkPmKwYl5mFWhEKr5IIa3LfpMW9RRwKmQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -342,12 +347,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.32.tgz", + "integrity": "sha512-7S1GY4TdnlGVIdeXXKQdDkfDysoIVFMD0lJuVVMeb3eoVjrknQ0JNN7wFlhCvea0hEk0Sd4D1hedVChDKfV2jw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -357,12 +363,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.32.tgz", + "integrity": "sha512-OHHC81P4tirVa6Awk6eCQ6RBfWl8HpFsZtfEkMpJ5GjPsJ3nhPe6wKAJUZ/piC8sszUkAgv3fLflgzPStIwfWg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -372,12 +379,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.32.tgz", + "integrity": "sha512-rORQjXsAFeX6TLYJrCG5yoIDj+NKq31Rqwn8Wpn/bkPNy5rTHvOXkW8mLFonItS7QC6M+1JIIcLe+vOCTOYpvg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -387,12 +395,13 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.32.tgz", + "integrity": "sha512-jHUeDPVHrgFltqoAqDB6g6OStNnFxnc7Aks3p0KE0FbwAvRg6qWKYF5mSTdCTxA3axoSAUwxYdILzXJfUwlHhA==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -402,12 +411,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", - "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.32.tgz", + "integrity": "sha512-2N0lSoU4GjfLSO50wvKpMQgKd4HdI2UHEhQPPPnlgfBJlOgJxkjpkYBqzk08f1gItBB6xF/n+ykso2hgxuydsA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1169,10 +1179,11 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1589,10 +1600,11 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1842,9 +1854,10 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3061,9 +3074,10 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -4813,15 +4827,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4836,11 +4851,12 @@ "dev": true }, "node_modules/next": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz", - "integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==", + "version": "14.2.32", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.32.tgz", + "integrity": "sha512-fg5g0GZ7/nFc09X8wLe6pNSU8cLWbLRG3TZzPJ1BJvi2s9m7eF991se67wliM9kR5yLHRkyGKU49MMx58s3LJg==", + "license": "MIT", "dependencies": { - "@next/env": "14.2.4", + "@next/env": "14.2.32", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -4855,15 +4871,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.4", - "@next/swc-darwin-x64": "14.2.4", - "@next/swc-linux-arm64-gnu": "14.2.4", - "@next/swc-linux-arm64-musl": "14.2.4", - "@next/swc-linux-x64-gnu": "14.2.4", - "@next/swc-linux-x64-musl": "14.2.4", - "@next/swc-win32-arm64-msvc": "14.2.4", - "@next/swc-win32-ia32-msvc": "14.2.4", - "@next/swc-win32-x64-msvc": "14.2.4" + "@next/swc-darwin-arm64": "14.2.32", + "@next/swc-darwin-x64": "14.2.32", + "@next/swc-linux-arm64-gnu": "14.2.32", + "@next/swc-linux-arm64-musl": "14.2.32", + "@next/swc-linux-x64-gnu": "14.2.32", + "@next/swc-linux-x64-musl": "14.2.32", + "@next/swc-win32-arm64-msvc": "14.2.32", + "@next/swc-win32-ia32-msvc": "14.2.32", + "@next/swc-win32-x64-msvc": "14.2.32" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", diff --git a/package.json b/package.json index 4f02240..4e97d46 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "framer-motion": "^11.2.10", "gray-matter": "^4.0.3", "lucide-react": "^0.395.0", - "next": "14.2.4", + "next": "^14.2.32", "next-themes": "^0.3.0", "react": "^18", "react-dom": "^18", From 44dc181dda39a694260bba9906a76770b94f300b Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Sat, 6 Sep 2025 16:58:05 -0600 Subject: [PATCH 4/6] feat: Add dark and light favicons, Schulich and UCalgary logos, and implement favicon switcher component --- public/favicon-dark.ico | Bin 0 -> 4317 bytes public/favicon-light.ico | Bin 0 -> 2640 bytes public/schulich-uofc-logo.jpeg | Bin 0 -> 10038 bytes public/ucalgary-logo.jpeg | Bin 0 -> 11124 bytes src/app/favicon.ico | Bin 25931 -> 0 bytes src/app/layout.tsx | 8 +++ src/app/page.tsx | 6 +- src/components/favicon-switcher.tsx | 29 ++++++++ src/data/resume.tsx | 104 +++++++++++++++++++--------- 9 files changed, 110 insertions(+), 37 deletions(-) create mode 100644 public/favicon-dark.ico create mode 100644 public/favicon-light.ico create mode 100644 public/schulich-uofc-logo.jpeg create mode 100644 public/ucalgary-logo.jpeg delete mode 100644 src/app/favicon.ico create mode 100644 src/components/favicon-switcher.tsx diff --git a/public/favicon-dark.ico b/public/favicon-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..d0babef8f6b0c32fbca90a0999b47feedcd5a69b GIT binary patch literal 4317 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 SF(V@Uwc1=duk`=5x&Hx*PyXHj literal 0 HcmV?d00001 diff --git a/public/favicon-light.ico b/public/favicon-light.ico new file mode 100644 index 0000000000000000000000000000000000000000..4ffb1978746fbf4f73b85bcd93aa0a22b1377512 GIT binary patch literal 2640 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 K@yLH~&c6VbgRzMK literal 0 HcmV?d00001 diff --git a/public/schulich-uofc-logo.jpeg b/public/schulich-uofc-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d55192e989358084b92a807563746eba7e636f88 GIT binary patch literal 10038 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 literal 0 HcmV?d00001 diff --git a/public/ucalgary-logo.jpeg b/public/ucalgary-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e5dfb1a1d8f50ae8c361d0961559f442a2201e8e GIT binary patch literal 11124 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 literal 0 HcmV?d00001 diff --git a/src/app/favicon.ico b/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 6a1bc42..533e2b0 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import Navbar from "@/components/navbar"; +import FaviconSwitcher from "@/components/favicon-switcher"; import { Analytics } from "@vercel/analytics/react"; import { ThemeProvider } from "@/components/theme-provider"; import { TooltipProvider } from "@/components/ui/tooltip"; @@ -21,6 +22,12 @@ export const metadata: Metadata = { template: `%s | ${DATA.name}`, }, description: DATA.description, + icons: { + icon: [ + { url: "/favicon-light.ico", media: "(prefers-color-scheme: light)" }, + { url: "/favicon-dark.ico", media: "(prefers-color-scheme: dark)" }, + ], + }, openGraph: { title: `${DATA.name}`, description: DATA.description, @@ -65,6 +72,7 @@ export default function RootLayout({ > + {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index 19f2aa3..1edac89 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -20,9 +20,9 @@ export default function Page() {
- Certificates + Certifications

Always eager to learn and grow diff --git a/src/components/favicon-switcher.tsx b/src/components/favicon-switcher.tsx new file mode 100644 index 0000000..a11e875 --- /dev/null +++ b/src/components/favicon-switcher.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { useTheme } from "next-themes"; +import { useEffect } from "react"; + +export default function FaviconSwitcher() { + const { theme, resolvedTheme } = useTheme(); + + useEffect(() => { + const updateFavicon = () => { + const link = document.querySelector( + "link[rel~='icon']" + ) as HTMLLinkElement; + if (!link) return; + + const currentTheme = resolvedTheme || theme; + const faviconPath = + currentTheme === "dark" ? "/favicon-dark.ico" : "/favicon-light.ico"; + + if (link.href !== faviconPath) { + link.href = faviconPath; + } + }; + + updateFavicon(); + }, [theme, resolvedTheme]); + + return null; +} diff --git a/src/data/resume.tsx b/src/data/resume.tsx index c2fc31b..894de3e 100644 --- a/src/data/resume.tsx +++ b/src/data/resume.tsx @@ -7,30 +7,66 @@ export const DATA = { url: "https://axelsanchez.me", location: "Calgary, Alberta", locationLink: "https://www.google.com/maps/place/calgary", - description: "", - summary: "", + description: "hello", + summary: "world", avatarUrl: "/me.png", skills: [ + // Programming Languages + "C", + "C++", + "C#", + "Java", + "JavaScript", + "TypeScript", + "Python", + "Go", + "Rust", + "Dart", + "SQL", + "Solidity", + + // Cloud & Infrastructure + "Azure", "AWS", "GCP", - "Azure", - "Terrform", - "Jenkins", + "Blockchain", + "Kubernetes", + "Docker", + "Helm", + "Terraform", + "Kafka", + "RabbitMQ", + + // Databases + "MySQL", + "PostgreSQL", + + // Frameworks & Platforms + ".NET", "Spring Boot", + "Express", + "Django", + + // Frontend "React", - "Flutter", "Next.js", - "Typescript", - "Express", - "Node.js", - "Vue", - "Dart", - "Python", - "MySQL", - "Docker", - "Kubernetes", - "Java", - "C++/C", + "Vue.js", + "Redux", + "Expo", + "Flutter", + "Vite", + "Tailwind", + + // APIs & Tools + "gRPC", + + // Machine Learning / HPC + "PyTorch", + "CUDA", + + // CI/CD + "Jenkins", + "GitHub Actions", ], navbar: [ { href: "/", icon: HomeIcon, label: "Home" }, @@ -69,7 +105,7 @@ export const DATA = { title: "Software Engineer Intern", logoUrl: "/microsoft-logo.jpeg", start: "May 2025", - end: "August 2025", + end: "Aug. 2025", description: "", }, { @@ -79,8 +115,8 @@ export const DATA = { location: "Calgary, Alberta", title: "Full Stack Engineer Part-Time", logoUrl: "/agrivanna-logo.jpeg", - start: "September 2024", - end: "April 2025", + start: "Sept. 2024", + end: "Apr. 2025", description: "", }, { @@ -91,7 +127,7 @@ export const DATA = { title: "Cloud Developer Intern", logoUrl: "/aptum-logo.png", start: "May 2024", - end: "April 2025", + end: "Apr. 2025", description: "", }, { @@ -101,8 +137,8 @@ export const DATA = { location: "Calgary, Alberta", title: "Vice-President Software Development", logoUrl: "/seuc-logo.png", - start: "September 2023", - end: "April 2024", + start: "Sept. 2023", + end: "Apr. 2024", description: "", }, { @@ -112,19 +148,19 @@ export const DATA = { location: "Calgary, Alberta", title: "Backend Engineer Part-Time", logoUrl: "/rethread-logo.png", - start: "September 2023", - end: "April 2024", + start: "Sept. 2023", + end: "Apr. 2024", description: "", }, { - company: "Sigma", + company: "Sigma Foodservice", href: "https://www.sigma-alimentos.com/en/", badges: [], location: "Remote", title: "Software Engineer Intern", logoUrl: "/sigma-logo.png", start: "May 2023", - end: "August 2023", + end: "Aug. 2023", description: "", }, { @@ -134,19 +170,19 @@ export const DATA = { location: "Calgary, AB", title: "Frontend Engineer Part-Time", logoUrl: "/bandist-logo.png", - start: "September 2022", - end: "April 2023", + start: "Sept.2022", + end: "Apr. 2023", description: "", }, ], education: [ { - school: "University of Calgary", - href: "https://www.ucalgary.ca/", + school: "Schulich School of Engineering, University of Calgary", + href: "https://schulich.ucalgary.ca/", degree: "Bachelor of Science in Software Engineering", - logoUrl: "/uofc-logo.png", - start: "2021", - end: "2026", + logoUrl: "/ucalgary-logo.jpeg", + start: "Sept. 2021", + end: "Apr. 2026", }, ], projects: [ From 4a718d349093eff0595558bfbb79973e6d27485c Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Sun, 7 Sep 2025 16:23:42 -0600 Subject: [PATCH 5/6] feat: Add resume PDF, update navbar for resume download, and enhance resume data with detailed descriptions --- public/Resume.pdf | Bin 0 -> 48257 bytes src/components/icons.tsx | 3 +- src/components/navbar.tsx | 33 ++++++++++++++------- src/data/resume.tsx | 61 ++++++++++++++++++++++++-------------- 4 files changed, 63 insertions(+), 34 deletions(-) create mode 100644 public/Resume.pdf diff --git a/public/Resume.pdf b/public/Resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..418ccd76a24c85232a869339041559d71c8586f2 GIT binary patch literal 48257 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

$Lh%wI=*EOcXO2OFr^D#c+>cSFV1 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%0D&IZ(O~=t9max$E9< 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 k9Y`xYd z!E;5+KyvDn6gB$l_gSHxl!kursLN;&TUiD|o zkRIJJ{>5m80QXplrtIBO@E@n?_KLc8LOZMthuGKU98&EDWV6HOg0S0zkbS4l6(yq+ z!VIF~mh=1v1+x=EHPvS8;}l;VEzlC(yMhnsih29me?!aug_Q}px>(pd0eHwm1Xn|{v!F8`wqhv7fAf7bbH z<8S@H?f%;0VEenw4`38_GBtFuw6_!aBzpiV5pEVH79bPXr*BRsHdZDr>VMSum#98l z|Fr`AYvI!>@YCDhC^$Gi*SY>-`5$G#zaIZa|2MLK)c+gBr)4G}`=@tlQ%`q$ClhA? z)u$s_dz1h7C=^sgH5kNPZETDT?d(43DV2(ar8D63>tJH0VyZz0P&0LM{@f1$D+4nd zGmz^uyOx!ng@K)(nSqUofrTCLnYwDK0g$nDGX;F^BbyF2z}msk#lqRt5a9NYrtA!C z3{0PaC^*@hxElX;@*l?k)5hl}Wmh9BQ)8F^J6;t_7aP<6ug?1a>zIH33@T2B4i2U! zp9I^`#@X~Qx&BAa@xLZ${0C*%P%<_9e+c_$V)4JF>;FO96%3thodLYOpM7X=<7#W? z4ERjjP;fFeu{3u1>`-QwPfq|wb$~X28St6a0nq*2KT9uD04sn|QUsvQ%f-pgWyEA? zWWvF0XlBS^%*w{a%xq%H&c$KOVPXPg;pgRG<6verIoW_* z>@0@H9PIqM|K&=-*a!rSVkny*K?Xsl9svZ#0hI241q9%~em?V~4V_#(oJ`H&SeV)2 L$jL?J#o+!gws<%L literal 0 HcmV?d00001 diff --git a/src/components/icons.tsx b/src/components/icons.tsx index c4984e8..6e5134f 100644 --- a/src/components/icons.tsx +++ b/src/components/icons.tsx @@ -1,10 +1,11 @@ -import { GlobeIcon, MailIcon } from "lucide-react"; +import { GlobeIcon, MailIcon, DownloadIcon } from "lucide-react"; export type IconProps = React.HTMLAttributes; export const Icons = { globe: (props: IconProps) => , email: (props: IconProps) => , + download: (props: IconProps) => , linkedin: (props: IconProps) => ( LinkedIn diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx index a815e22..de9e9a6 100644 --- a/src/components/navbar.tsx +++ b/src/components/navbar.tsx @@ -43,18 +43,31 @@ export default function Navbar() { - - - + {name === "resume" ? ( + + + + ) : ( + + + + )} -

{name}

+

{social.name}

diff --git a/src/data/resume.tsx b/src/data/resume.tsx index 894de3e..4efb1d1 100644 --- a/src/data/resume.tsx +++ b/src/data/resume.tsx @@ -2,13 +2,15 @@ import { Icons } from "@/components/icons"; import { HomeIcon, NotebookIcon } from "lucide-react"; export const DATA = { - name: "Axel Sanchez", + name: "Axel Sanchez Portfolio", initials: "AOSP", url: "https://axelsanchez.me", location: "Calgary, Alberta", locationLink: "https://www.google.com/maps/place/calgary", - description: "hello", - summary: "world", + description: + "Software Engineer, Researcher, and Entrepreneur. On my free time I enjoy football, lifting weights and muay thai.", + summary: + "I’m Axel Sanchez, a Software Engineer from Mexico. Welcome to my portfolio website, where you’ll find my latest work, research, blogs, and projects. I specialize in building high-performance systems, from GPU computing and cloud microservices to dApps and DeFi solutions on blockchain.", avatarUrl: "/me.png", skills: [ // Programming Languages @@ -94,6 +96,12 @@ export const DATA = { icon: Icons.email, navbar: false, }, + resume: { + name: "Download Resume", + url: "/Resume.pdf", + icon: Icons.download, + navbar: true, + }, }, }, work: [ @@ -106,18 +114,20 @@ export const DATA = { logoUrl: "/microsoft-logo.jpeg", start: "May 2025", end: "Aug. 2025", - description: "", + description: + "Built a custom CUDA all-reduce (TRT plugin) on H200s with NVLink/P2P fallback; optimized GPU comms/GEMM and integrated research into production experiments.", }, { company: "Agrivanna", href: "https://www.agrivanna.com/", badges: [], location: "Calgary, Alberta", - title: "Full Stack Engineer Part-Time", + title: "Full Stack Engineer (Part-Time)", logoUrl: "/agrivanna-logo.jpeg", - start: "Sept. 2024", + start: "Sep. 2024", end: "Apr. 2025", - description: "", + description: + "Shipped Go/Java microservices and ML features (scikit-learn + PyTorch) for personalized health; deployed FastAPI on Kubernetes and mentored teammates on Docker/K8s.", }, { company: "Aptum", @@ -128,7 +138,8 @@ export const DATA = { logoUrl: "/aptum-logo.png", start: "May 2024", end: "Apr. 2025", - description: "", + description: + "Scaled Kubernetes infra with Terraform/Helm and Jenkins CI, doubling throughput; migrated a monolith to gRPC microservices (Java/Spring/MySQL) with a 66% perf lift.", }, { company: "Student Energy UCalgary", @@ -137,20 +148,22 @@ export const DATA = { location: "Calgary, Alberta", title: "Vice-President Software Development", logoUrl: "/seuc-logo.png", - start: "Sept. 2023", + start: "Sep. 2023", end: "Apr. 2024", - description: "", + description: + "Launched a Next.js/TypeScript news app (+70% engagement) and automated AWS infra with Terraform + GitHub Actions; led hiring and set engineering standards.", }, { company: "ReThread", badges: [], href: "#", location: "Calgary, Alberta", - title: "Backend Engineer Part-Time", + title: "Backend Engineer (Part-Time)", logoUrl: "/rethread-logo.png", - start: "Sept. 2023", + start: "Sep. 2023", end: "Apr. 2024", - description: "", + description: + "Designed TypeScript/Express microservices with Redis caching on AWS/Kubernetes; prototyped a PyTorch CNN for fabric classification and set CI/code-review practices.", }, { company: "Sigma Foodservice", @@ -161,18 +174,20 @@ export const DATA = { logoUrl: "/sigma-logo.png", start: "May 2023", end: "Aug. 2023", - description: "", + description: + "Integrated Copomex API in .NET/C# for 10k+ locations (↑ address accuracy 80%); added Playwright E2E + Jenkins to slash QA time and speed deployments.", }, { company: "Bandist", href: "#", badges: [], location: "Calgary, AB", - title: "Frontend Engineer Part-Time", + title: "Frontend Engineer (Part-Time)", logoUrl: "/bandist-logo.png", - start: "Sept.2022", + start: "Sep.2022", end: "Apr. 2023", - description: "", + description: + "Connected Django app to Ticketmaster/Spotify, cut costs 20%, and managed PostgreSQL/GCP for 10k+ MAU; shipped a Flutter mobile app with 99.95% uptime on Firebase.", }, ], education: [ @@ -181,7 +196,7 @@ export const DATA = { href: "https://schulich.ucalgary.ca/", degree: "Bachelor of Science in Software Engineering", logoUrl: "/ucalgary-logo.jpeg", - start: "Sept. 2021", + start: "Sep. 2021", end: "Apr. 2026", }, ], @@ -189,7 +204,7 @@ export const DATA = { { title: "ChoreShare", href: "#", - dates: "January 2024 - April 2024", + dates: "Jan. 2024 - Apr. 2024", active: true, description: "A cross-platform application for household roommates to coordinate tasks.", @@ -222,7 +237,7 @@ export const DATA = { { title: "MyNotes", href: "#", - dates: "December 2023 - January 2024", + dates: "Dec. 2023 - Jan. 2024", active: true, description: "A simple note-taking mobile app designed for capturing important ideas and reminders.", @@ -240,7 +255,7 @@ export const DATA = { { title: "The Last Show", href: "#", - dates: "January 2023 - April 2023", + dates: "Jan. 2023 - Apr. 2023", active: true, description: "A serverless web app that automatically generates personalized obituaries for people.", @@ -269,7 +284,7 @@ export const DATA = { { title: "Game Heaven", href: "#", - dates: "January 2023 - August 2023", + dates: "Jan. 2023 - Aug. 2023", active: true, description: "Developed an AI Customer Support Chatbot which automatically responds to customer support tickets using the latest GPT models.", @@ -319,7 +334,7 @@ export const DATA = { }, { title: "Microsoft Certified Azure Fundamentals", - dates: "February 2025", + dates: "Feb. 2025", image: "microsoft-az900-logo.png", mlh: "https://s3.amazonaws.com/logged-assets/trust-badge/2019/mlh-trust-badge-2019-white.svg", links: [ From 25079048400e6176f781c1665db9eb85125ce23b Mon Sep 17 00:00:00 2001 From: Axel Omar Sanchez Peralta Date: Sun, 7 Sep 2025 16:25:45 -0600 Subject: [PATCH 6/6] fix: Correct spacing in resume start date for consistency --- src/data/resume.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/resume.tsx b/src/data/resume.tsx index 4efb1d1..c5f4388 100644 --- a/src/data/resume.tsx +++ b/src/data/resume.tsx @@ -184,7 +184,7 @@ export const DATA = { location: "Calgary, AB", title: "Frontend Engineer (Part-Time)", logoUrl: "/bandist-logo.png", - start: "Sep.2022", + start: "Sep. 2022", end: "Apr. 2023", description: "Connected Django app to Ticketmaster/Spotify, cut costs 20%, and managed PostgreSQL/GCP for 10k+ MAU; shipped a Flutter mobile app with 99.95% uptime on Firebase.",