diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 47405d7..5519314 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose { - "name": "m-tartari.github.io", + "name": "website", // Update the 'dockerComposeFile' list if you have more compose files or use different names. // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. "dockerComposeFile": [ diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index d16356e..0830348 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -1,18 +1,18 @@ services: devcontainer: - image: m-tartari.github.io-dev + image: website-dev build: context: .. dockerfile: Dockerfile target: development - container_name: devcontainer-m-tartari.github.io - hostname: m-tartari.github.io-dev + container_name: devcontainer-website + hostname: website-dev command: sleep infinity # ports: # - '5173:5173' # - '4173:4173' volumes: - - ..:/workspaces/m-tartari.github.io:cached + - ..:/workspaces/website:cached # Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust. # cap_add: # - SYS_PTRACE diff --git a/.env.example b/.env.example index 326f506..8d70e89 100644 --- a/.env.example +++ b/.env.example @@ -4,4 +4,4 @@ VITE_BC_POSITION=XXXXXXXXXX VITE_BC_VAT=ITXXXXXXXXXX VITE_BC_PHONE=+39XXXXXXXXXX VITE_BC_EMAIL=XXXX@XXXX.XX -VITE_BC_LINKEDIN=XXXXXXXXXX +VITE_BC_FACEBOOK=XXXXXXXXXX diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4ee4c64..1133e1a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -49,8 +49,8 @@ jobs: if [[ -n "${{ vars.VITE_BC_VAT }}" ]]; then echo "VITE_BC_VAT=${{ vars.VITE_BC_VAT }}" >> .env fi - if [[ -n "${{ vars.VITE_BC_LINKEDIN }}" ]]; then - echo "VITE_BC_LINKEDIN=${{ vars.VITE_BC_LINKEDIN }}" >> .env + if [[ -n "${{ vars.VITE_BC_FACEBOOK }}" ]]; then + echo "VITE_BC_FACEBOOK=${{ vars.VITE_BC_FACEBOOK }}" >> .env fi if [[ -n "${{ secrets.VITE_BC_PHONE }}" ]]; then echo "VITE_BC_PHONE=${{ secrets.VITE_BC_PHONE }}" >> .env diff --git a/CNAME b/CNAME deleted file mode 100644 index 8742d63..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -www.m-tartari.eu diff --git a/Dockerfile b/Dockerfile index cfb43f9..72bc86d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,8 @@ ARG BASE_IMAGE=node:lts FROM $BASE_IMAGE AS development ENV NODE_ENV=development -COPY --chown=1000:1000 . /workspaces/m-tartari.github.io -WORKDIR /workspaces/m-tartari.github.io +COPY --chown=1000:1000 . /workspaces/website +WORKDIR /workspaces/website USER 1000:1000 CMD [ "sleep", "infinity" ] diff --git a/docker-compose.yml b/docker-compose.yml index 2ba39d1..d8538b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,13 @@ -version: '3.8' +version: "3.8" services: app: - image: git.m-tartari.eu/m-tartari.github.io + image: git.m-tartari.eu/website build: context: . dockerfile: Dockerfile target: production - container_name: m-tartari.github.io + container_name: website restart: unless-stopped ports: - - '8080:8080' + - "8080:8080" diff --git a/index.html b/index.html index 4d1ccd7..af9a35e 100644 --- a/index.html +++ b/index.html @@ -1,44 +1,49 @@ - - - - + + - - - - + + - + + + + - - - - + - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + Compagnia d'Arme del Santo Luca + + + + + + + +
+ + - - - - Michele Tartari - - - -
- - diff --git a/public/fav-icon.png b/public/fav-icon.png new file mode 100644 index 0000000..19f1d01 Binary files /dev/null and b/public/fav-icon.png differ diff --git a/public/fonts/cloister-black/1001fonts-cloister-black-eula.txt b/public/fonts/cloister-black/1001fonts-cloister-black-eula.txt new file mode 100644 index 0000000..f8e2df1 --- /dev/null +++ b/public/fonts/cloister-black/1001fonts-cloister-black-eula.txt @@ -0,0 +1,31 @@ +1001Fonts Free For Commercial Use License (FFC) + +Preamble +In this license, 'Cloister Black' refers to the given .zip file, which may contain one or numerous fonts. These fonts can be of any type (.ttf, .otf, ...) and together they form a 'font family' or in short a 'typeface'. + +1. Copyright +Cloister Black is the intellectual property of its respective author, provided it is original, and is protected by copyright laws in many parts of the world. + +2. Usage +Cloister Black may be downloaded and used free of charge for both personal and commercial use, as long as the usage is not racist or illegal. Personal use refers to all usage that does not generate financial income in a business manner, for instance: + + - personal scrapbooking for yourself + - recreational websites and blogs for friends and family + - prints such as flyers, posters, t-shirts for churches, charities, and non-profit organizations + +Commercial use refers to usage in a business environment, including: + + - business cards, logos, advertising, websites for companies + - t-shirts, books, apparel that will be sold for money + - flyers, posters for events that charge admission + - freelance graphic design work + - anything that will generate direct or indirect income + +3. Modification +Cloister Black may not be modified, altered, adapted or built upon without written permission by its respective author. This pertains all files within the downloadable font zip-file. + +4. Distribution +While Cloister Black may freely be copied and passed along to other individuals for private use as its original downloadable zip-file, it may not be sold or published without written permission by its respective author. + +5. Disclaimer +Cloister Black is offered 'as is' without any warranty. 1001fonts.com and the respective author of Cloister Black shall not be liable for any damage derived from using this typeface. By using Cloister Black you agree to the terms of this license. \ No newline at end of file diff --git a/public/fonts/cloister-black/CloisterBlack.ttf b/public/fonts/cloister-black/CloisterBlack.ttf new file mode 100644 index 0000000..d1a6282 Binary files /dev/null and b/public/fonts/cloister-black/CloisterBlack.ttf differ diff --git a/public/images/IIT_Linfa.png b/public/images/IIT_Linfa.png deleted file mode 100644 index 4ea01e8..0000000 Binary files a/public/images/IIT_Linfa.png and /dev/null differ diff --git a/public/images/IIT_Linfa.webp b/public/images/IIT_Linfa.webp deleted file mode 100644 index 2c69b8f..0000000 Binary files a/public/images/IIT_Linfa.webp and /dev/null differ diff --git a/public/images/IIT_Modular.png b/public/images/IIT_Modular.png deleted file mode 100644 index 6255528..0000000 Binary files a/public/images/IIT_Modular.png and /dev/null differ diff --git a/public/images/IIT_Modular.webp b/public/images/IIT_Modular.webp deleted file mode 100644 index b3f4d90..0000000 Binary files a/public/images/IIT_Modular.webp and /dev/null differ diff --git a/public/images/IIT_Modular_Mobile.png b/public/images/IIT_Modular_Mobile.png deleted file mode 100644 index 3163565..0000000 Binary files a/public/images/IIT_Modular_Mobile.png and /dev/null differ diff --git a/public/images/IIT_Modular_Mobile.webp b/public/images/IIT_Modular_Mobile.webp deleted file mode 100644 index 87d977d..0000000 Binary files a/public/images/IIT_Modular_Mobile.webp and /dev/null differ diff --git a/public/images/IIT_Modules.jpg b/public/images/IIT_Modules.jpg deleted file mode 100644 index 035323f..0000000 Binary files a/public/images/IIT_Modules.jpg and /dev/null differ diff --git a/public/images/IIT_Modules.webp b/public/images/IIT_Modules.webp deleted file mode 100644 index da13051..0000000 Binary files a/public/images/IIT_Modules.webp and /dev/null differ diff --git a/public/images/about-us.png b/public/images/about-us.png new file mode 100644 index 0000000..8d01d5d Binary files /dev/null and b/public/images/about-us.png differ diff --git a/public/images/attivit_didattiche.png b/public/images/attivit_didattiche.png new file mode 100644 index 0000000..20bc33a Binary files /dev/null and b/public/images/attivit_didattiche.png differ diff --git a/public/images/banner-blur.jpg b/public/images/banner-blur.jpg deleted file mode 100644 index 9c09552..0000000 Binary files a/public/images/banner-blur.jpg and /dev/null differ diff --git a/public/images/banner-blur.webp b/public/images/banner-blur.webp deleted file mode 100644 index 00d20fe..0000000 Binary files a/public/images/banner-blur.webp and /dev/null differ diff --git a/public/images/banner.jpg b/public/images/banner.jpg deleted file mode 100644 index 8996ac6..0000000 Binary files a/public/images/banner.jpg and /dev/null differ diff --git a/public/images/banner.png b/public/images/banner.png new file mode 100644 index 0000000..6f67fc8 Binary files /dev/null and b/public/images/banner.png differ diff --git a/public/images/banner.webp b/public/images/banner.webp deleted file mode 100644 index e0bd7a7..0000000 Binary files a/public/images/banner.webp and /dev/null differ diff --git a/public/images/banner1.png b/public/images/banner1.png new file mode 100644 index 0000000..7d9ae45 Binary files /dev/null and b/public/images/banner1.png differ diff --git a/public/images/banner2.png b/public/images/banner2.png new file mode 100644 index 0000000..02299a0 Binary files /dev/null and b/public/images/banner2.png differ diff --git a/public/images/battle.png b/public/images/battle.png new file mode 100644 index 0000000..ab413e8 Binary files /dev/null and b/public/images/battle.png differ diff --git a/public/images/battle2.png b/public/images/battle2.png new file mode 100644 index 0000000..1bb7b74 Binary files /dev/null and b/public/images/battle2.png differ diff --git a/public/images/credits b/public/images/credits deleted file mode 100644 index 7775ac9..0000000 --- a/public/images/credits +++ /dev/null @@ -1 +0,0 @@ -banner.jpg - Photo by Lawrence Hookham on Unsplash diff --git a/public/images/didattica.png b/public/images/didattica.png new file mode 100644 index 0000000..8fb9da7 Binary files /dev/null and b/public/images/didattica.png differ diff --git a/public/images/me.jpg b/public/images/me.jpg deleted file mode 100644 index e344c65..0000000 Binary files a/public/images/me.jpg and /dev/null differ diff --git a/public/images/me.webp b/public/images/me.webp deleted file mode 100644 index c0f724f..0000000 Binary files a/public/images/me.webp and /dev/null differ diff --git a/public/images/recharge_car.png b/public/images/recharge_car.png deleted file mode 100644 index 63819b0..0000000 Binary files a/public/images/recharge_car.png and /dev/null differ diff --git a/public/images/recharge_car.webp b/public/images/recharge_car.webp deleted file mode 100644 index 3357c57..0000000 Binary files a/public/images/recharge_car.webp and /dev/null differ diff --git a/public/images/scuola_darme.png b/public/images/scuola_darme.png new file mode 100644 index 0000000..97da411 Binary files /dev/null and b/public/images/scuola_darme.png differ diff --git a/public/images/thesis.jpg b/public/images/thesis.jpg deleted file mode 100644 index 6078d82..0000000 Binary files a/public/images/thesis.jpg and /dev/null differ diff --git a/public/images/thesis.webp b/public/images/thesis.webp deleted file mode 100644 index fbdcc69..0000000 Binary files a/public/images/thesis.webp and /dev/null differ diff --git a/public/logo.png b/public/logo.png index b9184af..705881e 100644 Binary files a/public/logo.png and b/public/logo.png differ diff --git a/public/logo_text.png b/public/logo_text.png new file mode 100644 index 0000000..b8a5c9f Binary files /dev/null and b/public/logo_text.png differ diff --git a/public/manifest.json b/public/manifest.json index a143bac..ca339c5 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "m-tartari", - "name": "Michele Tartari", - "version": "1.3.0", + "name": "Compagnia d'Arme del Santo Luca", + "version": "1.0.0", "description": "Robotics/Full Stack Software Engineer", "icons": [ { @@ -19,6 +19,6 @@ ], "start_url": ".", "display": "standalone", - "theme_color": "#1b1d27", - "background_color": "#1b1d27" + "theme_color": "#1b271d", + "background_color": "#1b271d" } diff --git a/src/App.tsx b/src/App.tsx index 3b7fb4f..353daed 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,8 +6,6 @@ import RootLayout from 'components/templates/RouteTracker/index.js' import Loading from 'components/molecules/LoadingScreen/index.js' const MainPage = React.lazy(() => import('components/pages/MainPage/index.js')) -const ProjectsPage = React.lazy(() => import('components/pages/ProjectsPage/index.js')) -const CurriculumPage = React.lazy(() => import('components/pages/CurriculumPage/index.js')) const ContactPage = React.lazy(() => import('components/pages/ContactPage/index.js')) const PrivacyPage = React.lazy(() => import('components/pages/PrivacyPage/index.js')) const BusinessCardPage = React.lazy(() => import('components/pages/BusinessCardPage/index.js')) @@ -26,22 +24,6 @@ const router = createBrowserRouter([ ), }, - { - path: 'projects', - element: ( - }> - - - ), - }, - { - path: 'curriculum', - element: ( - }> - - - ), - }, { path: 'contacts', element: ( diff --git a/src/components/molecules/Footer/index.tsx b/src/components/molecules/Footer/index.tsx index ec145fc..f79d598 100644 --- a/src/components/molecules/Footer/index.tsx +++ b/src/components/molecules/Footer/index.tsx @@ -4,7 +4,7 @@ import { Box, Link, Stack, Typography } from '@mui/material' import PolicyIcon from '@mui/icons-material/Policy' import CookieIcon from '@mui/icons-material/Cookie' -import { EmailIconLink, GitHubIconLink, LinkedInIconLink } from 'components/atoms/IconLinks/index.js' +import { EmailIconLink, InstagramIconLink, FacebookIconLink } from 'components/atoms/IconLinks/index.js' import CookieConsent from 'components/molecules/CookieConsent/index.js' type FooterProps = { @@ -26,13 +26,13 @@ const Footer: React.FC = ({ showCookieConsent = true }) => { '@media print': { py: 3 }, }}> - - - + + + - © {year} Michele Tartari. All rights reserved. + © {year} Compagnia d'Arme del Santo Luca. All rights reserved. diff --git a/src/components/molecules/Hero/Hero.tsx b/src/components/molecules/Hero/Hero.tsx index ad786f8..faa8575 100644 --- a/src/components/molecules/Hero/Hero.tsx +++ b/src/components/molecules/Hero/Hero.tsx @@ -2,7 +2,7 @@ import React from 'react' import { Avatar, Box, IconButton, Stack, Typography } from '@mui/material' import ExpandMore from '@mui/icons-material/ExpandMore' -import { EmailIconLink, GitHubIconLink, LinkedInIconLink } from 'components/atoms/IconLinks/index.js' +import { EmailIconLink, InstagramIconLink, FacebookIconLink } from 'components/atoms/IconLinks/index.js' const Hero = (props: { scrollTarget?: React.ForwardedRef }) => { return ( @@ -13,7 +13,7 @@ const Hero = (props: { scrollTarget?: React.ForwardedRef }) = minHeight: '100vh', boxShadow: '0 0.25em 0.5em 0 rgba(0, 0, 0, 0.25)', - backgroundImage: 'url("images/banner.webp")', + backgroundImage: 'url("images/banner2.webp")', backgroundPosition: 'center center', backgroundAttachment: { xs: 'scroll !important', md: 'fixed' }, backgroundSize: 'cover', @@ -23,10 +23,10 @@ const Hero = (props: { scrollTarget?: React.ForwardedRef }) = wrap: 'wrap', ...(theme.palette.mode === 'dark' && { - backgroundImage: 'url("images/banner-blur.webp")', + backgroundImage: 'url("images/banner2.png")', }), ...(theme.palette.mode === 'light' && { - backgroundImage: 'url("images/banner.webp")', + backgroundImage: 'url("images/banner2.png")', '&::before': { content: '""', position: 'absolute', @@ -66,35 +66,33 @@ const Hero = (props: { scrollTarget?: React.ForwardedRef }) = }, })}> - - Robotics -
Engineer -
- (t.palette.mode === 'light' ? 'inherit' : 'text.secondary'), - margin: '0.5em 0 0 0', - pt: 1, - }}> - Discover some of my works below. -
Send a message to get in touch. + + Compagnia d'Arme{' '} + + del + {' '} + Santo Luca + Ferrara (t.palette.mode === 'light' ? 'inherit' : 'text.secondary')}> - - - + + +
{ Introduction - m-tartari ("we", "our", or "us") respects your privacy and is committed to protecting your personal data. This privacy policy will inform you - about how we look after your personal data when you visit our website and tell you about your privacy rights and how the law protects you. + Compagnia d'Arme del Santo Luca ("we", "our", or "us") respects your privacy and is committed to protecting your personal data. This privacy + policy will inform you about how we look after your personal data when you visit our website and tell you about your privacy rights and how + the law protects you. The Data We Collect About You @@ -101,8 +102,8 @@ const PrivacyPolicy: React.FC = () => { Contact Us If you have any questions about this privacy policy or our privacy practices, please contact us at{' '} - - privacy@m-tartari.eu + + compagniasantoluca@gmail.com . diff --git a/src/components/molecules/ProjectSpotlight/ProjectSpotlight.tsx b/src/components/molecules/ProjectSpotlight/ProjectSpotlight.tsx index 2f96a20..4eafed2 100644 --- a/src/components/molecules/ProjectSpotlight/ProjectSpotlight.tsx +++ b/src/components/molecules/ProjectSpotlight/ProjectSpotlight.tsx @@ -10,7 +10,7 @@ type AnchorType = 'left' | 'top' | 'right' | 'bottom' type Props = { image: string title: string - caption: React.ReactNode + caption?: React.ReactNode children: React.ReactNode mobileImage?: string ref?: React.ForwardedRef @@ -30,7 +30,7 @@ const Description = (props: Props) => { justifyContent: 'center', position: 'absolute', - backgroundColor: theme.palette.mode === 'dark' ? 'hsla(230, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', + backgroundColor: theme.palette.mode === 'dark' ? 'hsla(155, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', backdropFilter: 'blur(8px)', bottom: '0', @@ -57,7 +57,7 @@ const Description = (props: Props) => { display: 'flex', position: 'absolute', - backgroundColor: theme.palette.mode === 'dark' ? 'hsla(230, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', + backgroundColor: theme.palette.mode === 'dark' ? 'hsla(155, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', backdropFilter: 'blur(8px)', top: '0', ml: 'auto', @@ -86,7 +86,7 @@ const Description = (props: Props) => { height: '102%', width: '28em', position: 'absolute', - backgroundColor: theme.palette.mode === 'dark' ? 'hsla(230, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', + backgroundColor: theme.palette.mode === 'dark' ? 'hsla(155, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', backdropFilter: 'blur(8px)', right: '0', borderLeftWidth: theme.spacing(0.5), @@ -108,7 +108,7 @@ const Description = (props: Props) => { height: '102%', width: '28em', position: 'absolute', - backgroundColor: theme.palette.mode === 'dark' ? 'hsla(230, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', + backgroundColor: theme.palette.mode === 'dark' ? 'hsla(155, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', backdropFilter: 'blur(8px)', left: '0', borderRightWidth: theme.spacing(0.5), diff --git a/src/components/molecules/Toolbar/index.tsx b/src/components/molecules/Toolbar/index.tsx index 16a32a5..b566485 100644 --- a/src/components/molecules/Toolbar/index.tsx +++ b/src/components/molecules/Toolbar/index.tsx @@ -74,8 +74,15 @@ const CustomToolbar: React.FC = ({ drawerWidth = 240, window textAlign: 'center', ...(theme.palette.mode === 'light' && { backgroundColor: 'background.default' }), })}> - - Michele Tartari + + Compagnia d'Arme del +
Santo Luca
@@ -84,19 +91,14 @@ const CustomToolbar: React.FC = ({ drawerWidth = 240, window - - - + + + - - - - - - + - + @@ -112,7 +114,7 @@ const CustomToolbar: React.FC = ({ drawerWidth = 240, window backgroundColor: 'transparent', '@media print': { backgroundColor: 'background.default' }, ...(trigger && { - backgroundColor: 'hsla(230, 18%, 13%, 0.75)', + backgroundColor: 'hsla(155, 18%, 13%, 0.75)', backdropFilter: 'blur(8px)', boxShadow: theme.shadows[4], }), @@ -134,7 +136,6 @@ const CustomToolbar: React.FC = ({ drawerWidth = 240, window // [theme.breakpoints.up('md')]: { width: theme => theme.breakpoints.values.lg, mx: 'auto' }, }}> = ({ drawerWidth = 240, window [theme.breakpoints.down('md')]: { mx: 'auto' }, [theme.breakpoints.up('md')]: { mr: 'auto' }, })}> - Michele Tartari + Compagnia d'Arme del Santo Luca Home - Projects - Curriculum + Personaggi @@ -173,10 +173,15 @@ const CustomToolbar: React.FC = ({ drawerWidth = 240, window ModalProps={{ keepMounted: true, // Better open performance on mobile. }} - sx={{ + sx={theme => ({ display: { xs: 'block', md: 'none' }, - '& .MuiDrawer-paper': { boxSizing: 'border-box', width: drawerWidth }, - }}> + '& .MuiDrawer-paper': { + boxSizing: 'border-box', + width: drawerWidth, + backgroundColor: theme.palette.mode === 'dark' ? 'hsla(155, 18%, 13%, 0.85)' : 'hsla(0, 0%, 100%, 0.75)', + backdropFilter: 'blur(8px)', + }, + })}> {drawer} diff --git a/src/components/pages/BusinessCardPage/BusinessCardPage.test.tsx b/src/components/pages/BusinessCardPage/BusinessCardPage.test.tsx index dbbf4be..f95892a 100644 --- a/src/components/pages/BusinessCardPage/BusinessCardPage.test.tsx +++ b/src/components/pages/BusinessCardPage/BusinessCardPage.test.tsx @@ -12,7 +12,7 @@ vi.mock('./envVars.js', () => ({ VAT: 'Test VAT', PHONE: '+123456789', EMAIL: 'test@example.com', - LINKEDIN: 'testlinkedin', + FACEBOOK: 'testfacebook', })) // Mock window.print @@ -59,7 +59,7 @@ describe('BusinessCardPage', () => { const websiteLink = screen.getByText('www.m-tartari.eu').closest('a') expect(websiteLink).toHaveAttribute('href', 'https://www.m-tartari.eu') - // Check LinkedIn link + // Check Facebook Link const linkedinLink = screen.getByText('testlinkedin').closest('a') expect(linkedinLink).toHaveAttribute('href', 'https://www.linkedin.com/in/testlinkedin/') }) diff --git a/src/components/pages/BusinessCardPage/envVars.ts b/src/components/pages/BusinessCardPage/envVars.ts index 76484ac..4ae8393 100644 --- a/src/components/pages/BusinessCardPage/envVars.ts +++ b/src/components/pages/BusinessCardPage/envVars.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ export const NAME = import.meta.env.VITE_BC_NAME || '[FULL NAME]' -export const POSITION = import.meta.env.VITE_BC_POSITION || '[POSITION]' -export const VAT = import.meta.env.VITE_BC_VAT || '[VAT NUMBER]' -export const PHONE = import.meta.env.VITE_BC_PHONE || '[Redacted for privacy]' +export const POSITION = import.meta.env.VITE_BC_POSITION || 'Ass. di rievocazione storica affiliata C.E.R.S. (XIV-XV secolo)' +export const PHONE = import.meta.env.VITE_BC_PHONE || null export const EMAIL = import.meta.env.VITE_BC_EMAIL || '[Redacted for privacy]' -export const LINKEDIN = import.meta.env.VITE_BC_LINKEDIN || '[Redacted for privacy]' +export const FACEBOOK = import.meta.env.VITE_BC_FACEBOOK || 'compagniadarmedelsantoluca' +export const INSTAGRAM = import.meta.env.VITE_BC_INSTAGRAM || 'compagnia_darme_santo_luca' diff --git a/src/components/pages/BusinessCardPage/index.tsx b/src/components/pages/BusinessCardPage/index.tsx index 84bac9a..e753125 100644 --- a/src/components/pages/BusinessCardPage/index.tsx +++ b/src/components/pages/BusinessCardPage/index.tsx @@ -1,5 +1,19 @@ -import { Box, Typography, Stack, Button, Paper, Link, TypographyProps, SvgIcon, PaperProps, ThemeProvider, createTheme } from '@mui/material' -import { Email, LinkedIn, Print, PhoneInTalk, Public } from '@mui/icons-material' +import { + Box, + Typography, + Stack, + Button, + Paper, + Link, + TypographyProps, + SvgIcon, + PaperProps, + ThemeProvider, + createTheme, + SxProps, + Theme, +} from '@mui/material' +import { Email, Facebook, Print, PhoneInTalk, Public, Instagram } from '@mui/icons-material' import { Page } from 'components/templates/index.js' import typography from 'style/typography/index.js' @@ -43,8 +57,9 @@ type BusinessCardProps = { mode?: 'light' | 'dark' src: string alt?: string + srcSx?: SxProps } & PaperProps -const BusinessCard = ({ mode = 'dark', src, alt, sx, ...props }: BusinessCardProps) => ( +const BusinessCard = ({ mode = 'dark', src, srcSx, alt, sx, ...props }: BusinessCardProps) => ( @@ -119,14 +135,7 @@ const BusinessCardPage = () => { gap: 0, }, }}> - - - {env.NAME} - - - {env.POSITION} - - + { {env.NAME}
- {env.VAT} + {env.POSITION} - - {env.PHONE} - + {env.PHONE != null && ( + + {env.PHONE} + + )} {env.EMAIL} - - www.m-tartari.eu + + www.compagniadarmedelsantoluca.it - - {env.LINKEDIN} + + @{env.FACEBOOK} + + + @{env.INSTAGRAM}
diff --git a/src/components/pages/ContactPage/ContactPage.test.tsx b/src/components/pages/ContactPage/ContactPage.test.tsx index c95579a..76a1e7f 100644 --- a/src/components/pages/ContactPage/ContactPage.test.tsx +++ b/src/components/pages/ContactPage/ContactPage.test.tsx @@ -17,22 +17,22 @@ describe('ContactPage', () => { expect(screen.getAllByText('Contacts')).toHaveLength(2) // Page title and the Appbar drawer link expect(screen.getByLabelText('Email link')).toBeInTheDocument() - expect(screen.getByLabelText('LinkedIn link')).toBeInTheDocument() - expect(screen.getByLabelText('GitHub link')).toBeInTheDocument() + expect(screen.getByLabelText('Facebook Link')).toBeInTheDocument() + expect(screen.getByLabelText('Instagram link')).toBeInTheDocument() }) test.each([ { label: 'Email link', - href: 'mailto:info@m-tartari.eu', + href: 'mailto:compagniasantoluca@gmail.com', }, // { - // label: 'LinkedIn link', - // href: 'https://www.linkedin.com/in/m-tartari/', + // label: 'Facebook Link', + // href: 'https://facebook.com/compagniadarmedelsantoluca/', // }, // { - // label: 'GitHub link', - // href: 'https://www.github.com/m-tartari/', + // label: 'Instagram link', + // href: 'https://www.instagram.com/compagnia_darme_santo_luca/', // }, ])('leads to the right place when the $label is clicked', ({ label, href }) => { render() diff --git a/src/components/pages/ContactPage/ContactPage.tsx b/src/components/pages/ContactPage/ContactPage.tsx index 2cf4f25..2730daf 100644 --- a/src/components/pages/ContactPage/ContactPage.tsx +++ b/src/components/pages/ContactPage/ContactPage.tsx @@ -1,7 +1,7 @@ import { Link, List, ListItem, Stack, Typography } from '@mui/material' import DraftsIcon from '@mui/icons-material/Drafts' -import LinkedInIcon from '@mui/icons-material/LinkedIn' -import GitHubIcon from '@mui/icons-material/GitHub' +import FacebookIcon from '@mui/icons-material/Facebook' +import Instagram from '@mui/icons-material/Instagram' import { Page } from 'components/templates/index.js' @@ -39,29 +39,29 @@ const ListItemLink: React.FC = ({ children, ...props }) => ( const ContactPage = () => { return ( - + - Feel free to contact me using any of the following: + Sentiti libero di contattatarci con uno qualsiasi dei seguenti: - + - info + compagniasantoluca - @m-tartari.eu + @gmail.com - - + + - m-tartari + @compagniadarmedelsantoluca - - + + - m-tartari + @compagnia_darme_santo_luca diff --git a/src/components/pages/CurriculumPage/CurriculumPage.test.tsx b/src/components/pages/CurriculumPage/CurriculumPage.test.tsx deleted file mode 100644 index 9ca1e00..0000000 --- a/src/components/pages/CurriculumPage/CurriculumPage.test.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { screen } from '@testing-library/react' -import userEvent from '@testing-library/user-event' -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { useAnalytics } from 'use-analytics' - -import { renderWithRouter as render } from 'components/utils/tests' - -import CurriculumPage from './index.js' - -vi.stubGlobal('open', vi.fn()) -vi.mock('use-analytics', () => ({ - useAnalytics: () => ({ plugins: { enable: vi.fn(), disable: vi.fn() } }), -})) - -describe('Curriculum component', () => { - const open = vi.spyOn(window, 'open') - - test('renders without crashing', () => { - render() - - expect(screen.getAllByText('Curriculum')).toHaveLength(3) // title, appbar button and appbar drawer button - }) - - test('displays the correct work experience', () => { - render() - - expect(screen.getByText('Work Experience')).toBeInTheDocument() - - // check some of the positions - expect(screen.getAllByText('Software Engineer')).toHaveLength(2) // large and smallscreen versions - expect(screen.getAllByText('Embedded Engineer')).toHaveLength(2) // large and smallscreen versions - }) - - test('displays the correct education', async () => { - render() - - // Education - expect(screen.getByText('Education')).toBeInTheDocument() - - // check the subsections links - let link = screen.getByText('EMARO+ Program - Master Studies') - expect(link).toHaveAttribute('href', 'https://master-emaro.ec-nantes.fr/') - expect(link).toHaveAttribute('rel', 'noopener noreferrer') - expect(link).toHaveAttribute('target', '_blank') - - link = screen.getByText('Almatong Project - Bachelor Studies') - expect(link).toHaveAttribute('href', 'https://corsi.unibo.it/2cycle/AutomationEngineering/almatong-bachelor-programme') - expect(link).toHaveAttribute('rel', 'noopener noreferrer') - expect(link).toHaveAttribute('target', '_blank') - - // check some of the entries - expect(screen.getAllByText('M.Eng. in Robotics and Control')).toHaveLength(2) // large and smallscreen versions - expect(screen.getAllByText('M.S. in Robotics and Control Engineering')).toHaveLength(2) // large and smallscreen versions - expect(screen.getAllByText('B.S. in Control Theory and Control Engineering')).toHaveLength(2) // large and smallscreen versions - }) - - test('displays the correct skills', () => { - render() - - expect(screen.getByText('Skills')).toBeInTheDocument() - - // check the subsection titles - expect(screen.getByText('Languages')).toBeInTheDocument() - expect(screen.getByText('Digital')).toBeInTheDocument() - expect(screen.getByText('Softskills')).toBeInTheDocument() - }) - - test('displays the correct accomplishments', async () => { - render() - - expect(screen.getByText('Accomplishments')).toBeInTheDocument() - - // check some of the awards - expect(screen.getByText('Awards')).toBeInTheDocument() - expect(screen.getByText('Premio Innovazione Robotica ed Automazione - Horizon')).toBeInTheDocument() - - // check some of the press releases - expect(screen.getByText('Press Releases')).toBeInTheDocument() - await userEvent.click(screen.getByText("Covid-19: L'impatto sui giovani talenti")) - expect(open).toHaveBeenCalledWith('https://www.youtube.com/watch?v=Blat-e2Vyzk&feature=youtu.be', '_blank') - - // check some of the certifications - expect(screen.getByText('Publications')).toBeInTheDocument() - expect(screen.getByText('Control System Design for Human Assisting Robot')).toBeInTheDocument() - }) - - test('displays the correct extracurricular activites', () => { - render() - - expect(screen.getByText('Extracurricular')).toBeInTheDocument() - - // check some of the activities - expect(screen.getByText('Volunteering')).toBeInTheDocument() - expect(screen.getByText('Blood Donor, Bone Marrow Donor at AVIS & ADMO')).toBeInTheDocument() - - // check some of the hobbies - expect(screen.getByText('Interests')).toBeInTheDocument() - expect(screen.getByText('Ju-jitsu')).toBeInTheDocument() - }) -}) diff --git a/src/components/pages/CurriculumPage/CurriculumPage.tsx b/src/components/pages/CurriculumPage/CurriculumPage.tsx deleted file mode 100644 index a7da22c..0000000 --- a/src/components/pages/CurriculumPage/CurriculumPage.tsx +++ /dev/null @@ -1,435 +0,0 @@ -import { Box, Divider, Link, Stack, Table, TableBody, TableCell, TableRow, Typography } from '@mui/material' - -import { Award, ExternalIconLink, Extracurricular, Publication, SectionHeader, SectionSubheader } from 'components/atoms/index.js' -import { CurriculumItem } from 'components/molecules/index.js' -import { Page } from 'components/templates/index.js' - -const Curriculum = () => { - return ( - - - Work Experience - - {/* id="selfemployed-software" */} - - -
  • - Design and development of customized graphical interfaces and software components to facilitate the use of robots and industrial - machines. -
  • -
  • Production and maintenance of revisions of the documentation.
  • -
  • Providing technical assistance for R&D activities.
  • -
    -
    - {/* id="MinHub-lead" */} - - - Co-founded{' '} - - MindHub Ferrara - - , the first programming school for children in Ferrara, under the{' '} - - MindHub Academy franchise - - , dedicated to teaching programming fundamentals and enhancing logical and analytical skills. My duties include: -
      -
    • Selecting and validating the hardware, the software, and the curriculum taught at our hall.
    • -
    • Supporting the hiring process and training of instructors and teachers.
    • -
    • Providing technical assistance for educational activities.
    • -
    -
    -
    - {/* id="IIT-software" */} - - - Worked in{' '} - - Alberobotics - - : a technology transfer project within the{' '} - - Humanoid and Human Centred Mechatronics (HHCM) Research Line - {' '} - of the Italian Institute of Technology (IIT). My duties included: -
      -
    • developing customized graphical interfaces and front-end/back-end software components to facilitate the use of robots.
    • -
    • evaluating, integrating, and maintaining perception systems for the development of new use cases and demonstrators.
    • -
    • - participating in the company stands at trade fairs and interacting with potential investors for the promotion of our project and - robot. -
    • -
    • producing and maintaining revisions of documentation.
    • -
    • providing technical assistance for research activities.
    • -
    -
    -
    - {/* id="IIT-embedded" */} - - - Worked in{' '} - - Alberobotics - - : a technology transfer project within the{' '} - - Humanoid and Human Centred Mechatronics (HHCM) Research Line - {' '} - of the Italian Institute of Technology (IIT). My duties included: -
      -
    • developing tests and procedures for the automatic calibration of EtherCAT actuators and robotic modules.
    • -
    • developing a suite of tests for the evaluation of prototypes' hardware and firmware.
    • -
    • developing firmware for electronic boards associated with customized sensing.
    • -
    • producing and maintaining revisions of documentation.
    • -
    • providing technical assistance for research activities.
    • -
    -
    -
    - {/* id="WUT-intern" */} - - - My main duties included: -
      -
    • Developing a voice interface and some user detection strategies for low-power robotic systems using ROS.
    • -
    • Developing a robotic setup for educational purposes.
    • -
    • Updating older robotics equipment.
    • -
    -
    -
    - {/* id="WUT-intern" */} - - - My main duties included: -
      -
    • Developing a setup to control a shape memory alloy material using an embedded PC (a Beagle Bone Black).
    • -
    • Developing two X20 PLC systems to control synchronous motors connected to flexible joints.
    • -
    • Implementating the control logic using Matlab and Automation Studio.
    • -
    -
    -
    - - - Education - - Certifications - {/* id="WUT" */} - - - Credential ID: EZ34GWQLRHEG - - - - - - - EMARO+ Program - Master Studies - - - {/* id="WUT" */} - - -
  • Consortium scholarship issued for EMARO+ students based on academic merits and offered to top applicants only.
  • -
  • Relevant courses: Research Methodology, Bio-Robotics, Dynamics of Multi-Body Systems, Advanced Mechanical Design.
  • -
  • Other relevant courses: 2 exams of Polish language and 1 of Polish culture.
  • -
  • - Thesis:{' '} - - Voice Controlled Mobile Robot for Indoor Applications - {' '} - (research publication available{' '} - - here - - ). -
  • -
    -
    - {/* id="ECN" */} - - -
  • Consortium scholarship issued for EMARO+ students based on academic merits and offered to top applicants only.
  • -
  • - Relevant courses: Mobile Robotics, Non-linear Control Theory, Software Architecture for Robotics, Artificial Intelligence, Computer - Vision, Real Time Systems, Mechanical Design Methods in Robotics, Optimization Techniques. -
  • -
  • Other relevant courses: 2 exams of French language.
  • -
  • - Project:{' '} - - Recharging electric cars with a mobile robot - - . -
  • -
    -
    - - - - Almatong Project - Bachelor Studies - - - {/* id="TJ" */} - - -
  • Relevant courses: Automation Controls, Electrical Circuit, Logical Design of Digital Systems.
  • -
  • Other relevant courses: 2 Exams about Chinese Language and 3 Exams about Chinese Culture.
  • -
  • - Thesis:{' '} - - Solar Panel Fault Detection Method Based on Infrared Image Processing - - . -
  • -
    -
    - {/* id="UniBo" */} - - -
  • Scholarship issued for Almatong Project student based on academic merits and offered to top applicants only.
  • -
  • Relevant courses: Foundation of Industrial Robotics, Automatic Machines, Computer Architectures.
  • -
  • Other relevant courses: 2 exams of French language.
  • -
  • - Thesis:{' '} - - Design of a Testing Machine for Flexure Hinges - - . -
  • -
    -
    - - - High School Studies - - {/* id="Roiti" */} - - - Liceo scientifico “Antonio Roiti” is a public high school in Ferrara, Italy. There I followed a P.N.I. specialism (“National Plan of - Computer studies”). This curriculum is devised by the Ministry of Education, and emphasises the link between the humanistic tradition and - scientific culture. It covers a complete and widespread range of disciplines, including Italian language and literature, mathematics, - physics, chemistry, biology, history, philosophy, Latin language and culture, English language and culture, art history and technical - drawing. At the end of the fifth year all students sit for the esame di Stato, a final examination which leads to the maturità - scientifica. -
    - The school website can be found{' '} - - here - - . -
    -
    - {/* id="EMHS" */} - - - El Modena High School is a traditional 4 year public high school located in the El Modena neighborhood in the eastern portion of the city - of Orange in Orange County, California. I studied there as a senior year stundent through a foreign exchange student program.
    - The school website can be found{' '} - - here - - . -
    -
    - - - Skills - - - - - - Languages - - - Italian (Native Speaker), English (Proficient, IELTS 7.5), French (Good), Chinese (Basic, HSK3) - - - - - - Digital - - - - Languages: TypeScript/Javascript (Proficient), Python (Proficient), Bash (Good), C++ (Good), C (Fair) - - - - - Softwares: git (Proficient), Matlab (Good), LaTeX (Good), CATIA (Fair) - - - - - Middleware: Robotic Operative System (ROS, Good) - - - - - OS Used: Linux, Microsoft - - - - - - Softskills - - - - Adaptability, Communication, Creativity, Critical Thinking, Problem-Solving, Self-Organization, Teamworking - - - -
    - - {/* Accomplishments */} - - Accomplishments - - Awards - - - 21 - - st - {' '} - MECSPE fair - - } - location="Bologna, Italy" - /> - {/* https://twitter.com/IITalk/status/1466745516851617796 */} - {/* https://www.linkedin.com/feed/update/urn:li:activity:6869549011855032321/ */} - - - - - - - Press Releases - window.open('https://www.youtube.com/watch?v=Blat-e2Vyzk&feature=youtu.be', '_blank'), - sx: { - cursor: 'pointer', - ':hover': { - backgroundColor: 'transparent', - color: 'primary.main', - }, - }, - }} - organization="Talents in Motion" - location="Rome, Italy" - /> - - - - Publications - - Zielinska T.,{' '} - - Tartari M. - - - } - location="ROMANSY 23 - Robot Design, Dynamics and Control. CISM International Centre for Mechanical Sciences (Courses and Lectures), vol - 601. Springer, Cham." - href="https://doi.org/10.1007/978-3-030-58380-4_7" - /> - - - {/* Extacurricoular */} - - Extracurricular - {/* Volunteering */} - Volunteering - - - - - - {/* Other */} - {/* Interests */} - Interests - - - - - -
    -
    - ) -} - -export default Curriculum diff --git a/src/components/pages/CurriculumPage/index.ts b/src/components/pages/CurriculumPage/index.ts deleted file mode 100644 index 2a04af9..0000000 --- a/src/components/pages/CurriculumPage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './CurriculumPage' diff --git a/src/components/pages/MainPage/MainPage.tsx b/src/components/pages/MainPage/MainPage.tsx index 9d062bd..97256d6 100644 --- a/src/components/pages/MainPage/MainPage.tsx +++ b/src/components/pages/MainPage/MainPage.tsx @@ -1,106 +1,45 @@ import React from 'react' -import { Box, Stack, Typography } from '@mui/material' +import { Box } from '@mui/material' import { ViewportProvider } from 'components/utils/viewport' -import { AcademyIconLink, DescriptionIconLink, ExternalAppIconLink, GitHubIconLink, VideoIconLink } from 'components/atoms/index.js' import { Footer, Hero, Toolbar, ProjectSpotlight } from 'components/molecules/index.js' const MainPage = () => { React.useEffect(() => { - document.title = 'Michele Tartari' + document.title = "Compagnia d'Arme del Santo Luca" }, []) - const refIITLinfa = React.useRef(null) - const refIITModular = React.useRef(null) - const refIITCalibration = React.useRef(null) - const refWUTThesis = React.useRef(null) + const refAboutUs = React.useRef(null) + const refTeaching = React.useRef(null) + const refTraining = React.useRef(null) return ( - - {/* 1 IIT - Linfa */} + + {/* 1 Chi Siamo */} - - Software Engineer @ IIT - - }> - This project aims to simplify the control, monitoring, and programming of reconfigurable robots through an intuitive block-programming - interface. It includes a front-end web app, built with TypeScript and React, allowing users to effortlessly change robot operating modes and - settings, monitor the robot's state, and assemble programs by dragging and dropping code blocks representing various robot capabilities. - Additionally, back-end services, developed with TypeScript and Python, translate these programs into formats compatible with the underlying - systems and manage mission execution. The project emphasizes extensibility, enabling users with Python experience to integrate custom blocks - and capabilities. Automated CI/CD pipelines further streamline integration and deployment processes. - - {/* 2 IIT - Modular */} - - - - Software Engineer @ IIT - - }> - This project focused on overhauling HHCM's Modular, enhancing its graphical interface, API, and deployment pipeline. Modular serves as a web - application for the swift generation of modular robot models, with an offline approach (Building Mode) enabling users to set up robots in a - virtual environment by selecting and assembling reconfigurable modules, immediately visualized in 3D. Additionally, an online approach - (Discovery Mode) allows users to query the EtherCAT master for network topology, recognizing and displaying robots built from physical - modules in 3D. The system seamlessly produces URDF, SRDF, and a full ROS package that can then be utilized for simulating and controlling - the robot. + image="images/about-us.png" + mobileImage="images/about-us.png" + title="Chi Siamo"> + La Compagnia d'Arme del Santo Luca è un gruppo di rievocazione storica di Ferrara affiliato al C.E.R.S. (Consorzio Europeo Rievocazioni + Storiche). Il periodo rievocato dalla Compagnia è il tardo XIV secolo (1380-1410). - {/* 3 IIT - Motor Calibration */} - - - Embedded Engineer @ IIT - - }> - This project focused on automating the calibration of EtherCAT actuators and robotic modules, aiming for a fully automated procedure for - newly assembled actuators. The process involved testing the PDO, conducting phase angle calibration, torque sensor calibration, ripple and - position-dependent torque offset calibration, inertia and friction identification, and frequency response calibration. The goal was to - optimize motor performance and collect necessary data for accurate characterization, with results stored centrally and presented in a - comprehensive PDF report. + {/* 2. Attività didattiche */} + + La Compagnia d'Arme del Santo Luca propone percorsi didattici sulla vita nel Medioevo attraverso la spiegazione delle attività che venivano + svolte all'interno del campo armato e che erano parte integrante della vita dell'uomo d'arme dell'epoca. - {/* 4 WUT - Master Thesis */} - - - - Master Thesis @ WUT - - }> - This thesis proposes a design for a small mobile robot controlled by voice. Firstly a preliminary analysis of the state of art of - human-robot interaction has been conducted. Then, an analysis of the equipment selected took place, and, later, appropriate methodologies - for voice recognition and user detection have been evaluated for this specific case. Finally, an overview of the complete software - architecture of the system was given with three possible structures and their comparison. The results obtained show both the feasibility of - using low power boards and some of their limitations. + {/* 3. Scuola d'arme */} + + Altra attività di rilevante importanza è la scherma medievale. Il gruppo in arme si allena settimanalmente per studiare e riproporre i + trattati di scherma più importanti, dedicandosi allo studio e la messa in pratica delle tecniche di combattimento con differenti tipologie + di armi.