diff --git a/README.md b/README.md index 5dd12b8..57432cf 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Welcome to my personal portfolio project! This repository contains the complete [![Portfolio](https://img.shields.io/badge/Live_Demo-joaoloureiro.dev.br-blue?style=for-the-badge&logo=icloud)](https://joaoloureiro.dev.br) +![Deploy badge](https://gitea.joaoloureiro.dev.br/JoaoLoureiro/portfolio-app/actions/workflows/deploy.yml/badge.svg) + ## 🏛️ Project Architecture The project is organized into two main components in a monorepo-style structure: diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0dfc3d8..170d2c8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,6 +13,7 @@ "next": "15.3.3", "next-intl": "^4.1.0", "react": "^19.0.0", + "react-country-flag": "^3.1.0", "react-dom": "^19.0.0", "react-hot-toast": "^2.5.2", "react-icons": "^5.5.0", @@ -218,19 +219,32 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@formatjs/ecma402-abstract": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", @@ -1596,9 +1610,9 @@ } }, "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": { @@ -2228,9 +2242,9 @@ "license": "MIT" }, "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": { @@ -5240,6 +5254,18 @@ "node": ">=0.10.0" } }, + "node_modules/react-country-flag": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-country-flag/-/react-country-flag-3.1.0.tgz", + "integrity": "sha512-JWQFw1efdv9sTC+TGQvTKXQg1NKbDU2mBiAiRWcKM9F1sK+/zjhP2yGmm8YDddWyZdXVkR8Md47rPMJmo4YO5g==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": ">=16" + } + }, "node_modules/react-dom": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9dd61f4..1b5ec69 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,6 +14,7 @@ "next": "15.3.3", "next-intl": "^4.1.0", "react": "^19.0.0", + "react-country-flag": "^3.1.0", "react-dom": "^19.0.0", "react-hot-toast": "^2.5.2", "react-icons": "^5.5.0", diff --git a/frontend/public/Happy.png b/frontend/public/Happy.png new file mode 100644 index 0000000..f62b232 Binary files /dev/null and b/frontend/public/Happy.png differ diff --git a/frontend/public/Portfolio.png b/frontend/public/Portfolio.png new file mode 100644 index 0000000..7e71bcb Binary files /dev/null and b/frontend/public/Portfolio.png differ diff --git a/frontend/public/ProxmoxServer.png b/frontend/public/ProxmoxServer.png new file mode 100644 index 0000000..6bf14f7 Binary files /dev/null and b/frontend/public/ProxmoxServer.png differ diff --git a/frontend/public/pattern-randomized (1).svg b/frontend/public/pattern-randomized (1).svg deleted file mode 100644 index 3f366e6..0000000 --- a/frontend/public/pattern-randomized (1).svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/pattern-randomized (2).svg b/frontend/public/pattern-randomized (2).svg deleted file mode 100644 index 303c8c2..0000000 --- a/frontend/public/pattern-randomized (2).svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/pattern-randomized (3).svg b/frontend/public/pattern-randomized (3).svg deleted file mode 100644 index ef0cfd2..0000000 --- a/frontend/public/pattern-randomized (3).svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/pattern-randomized.svg b/frontend/public/pattern-randomized.svg index ae2c88b..79016e1 100644 --- a/frontend/public/pattern-randomized.svg +++ b/frontend/public/pattern-randomized.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/public/vecteezy_circuit-board-technology-abstract-background_26780676.svg b/frontend/public/vecteezy_circuit-board-technology-abstract-background_26780676.svg deleted file mode 100644 index fd1ce89..0000000 --- a/frontend/public/vecteezy_circuit-board-technology-abstract-background_26780676.svg +++ /dev/null @@ -1,574 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/app/(i18n)/[locale]/layout.tsx b/frontend/src/app/(i18n)/[locale]/layout.tsx index 982a659..6e09e0c 100644 --- a/frontend/src/app/(i18n)/[locale]/layout.tsx +++ b/frontend/src/app/(i18n)/[locale]/layout.tsx @@ -1,10 +1,9 @@ import { Inter, Space_Grotesk } from "next/font/google"; -import Header from "@/app/components/Header"; // Usando o Header que forneci +import Header from "@/app/components/Header"; import Footer from "@/app/components/Footer"; -import "@/app/globals.css"; // Importando o CSS global +import "@/app/globals.css"; import { Toaster } from 'react-hot-toast'; -// Importações importantes do next-intl import {hasLocale, Locale, NextIntlClientProvider} from 'next-intl'; import { ThemeProvider } from "@/configuration/ThemeContext"; import {getTranslations, setRequestLocale} from 'next-intl/server'; @@ -18,12 +17,6 @@ const inter = Inter({ variable: '--font-inter', }); -const space_grotesk = Space_Grotesk({ - subsets: ["latin"], - weight: ['300', '400', '500', '700'], - variable: '--font-space-grotesk', -}); - type Props = { children: ReactNode; params: Promise<{locale: Locale}>; @@ -52,37 +45,34 @@ export default async function RootLayout({children, params}: Props) { setRequestLocale(locale); return ( - - + +
-
+
{children}