├── mise.toml ├── public ├── robots.txt └── favicon │ ├── favicon.ico │ ├── favicon-96x96.png │ ├── apple-touch-icon.png │ ├── web-app-manifest-192x192.png │ ├── web-app-manifest-512x512.png │ └── favicon.svg ├── layouts ├── web.png └── mobile.png ├── app ├── types │ ├── locale.type.ts │ ├── menu-item.type.ts │ └── github.type.ts ├── assets │ ├── fonts │ │ ├── icomoon.eot │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ ├── images │ │ └── 24493328.jpg │ ├── social.json │ ├── menu.json │ ├── experiences.json │ ├── css │ │ ├── index.css │ │ ├── dark.css │ │ ├── light.css │ │ └── fonts.css │ └── technologies.json ├── components │ ├── navigation │ │ ├── NavIcon.vue │ │ ├── NavMobileTop.vue │ │ ├── NavMobileBottom.vue │ │ └── NavDesktop.vue │ ├── Title.vue │ ├── layout │ │ └── MainContent.vue │ ├── FormInput.vue │ ├── ProjectItem.vue │ ├── CustomLoading.vue │ ├── ExperienceItem.vue │ └── AboutMe.vue ├── filters │ └── index.ts ├── pages │ ├── index.vue │ ├── open-source.vue │ ├── Technologies.vue │ ├── experiences.vue │ └── Contact.vue ├── stores │ └── website.ts └── layouts │ └── default.vue ├── eslint.config.mjs ├── .gitignore ├── tsconfig.json ├── server └── api │ ├── contact.ts │ └── latest-article.ts ├── package.json ├── i18n └── locales │ ├── en.json │ └── pt.json ├── README.md └── nuxt.config.ts /mise.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | node = "20" 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /layouts/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/layouts/web.png -------------------------------------------------------------------------------- /layouts/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/layouts/mobile.png -------------------------------------------------------------------------------- /app/types/locale.type.ts: -------------------------------------------------------------------------------- 1 | export type Locale = { 2 | code: string; 3 | // name: string; 4 | }; 5 | -------------------------------------------------------------------------------- /public/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/public/favicon/favicon.ico -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/app/assets/fonts/icomoon.eot -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/app/assets/fonts/icomoon.ttf -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/app/assets/fonts/icomoon.woff -------------------------------------------------------------------------------- /app/assets/images/24493328.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/app/assets/images/24493328.jpg -------------------------------------------------------------------------------- /public/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/public/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /public/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/public/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicon/web-app-manifest-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/public/favicon/web-app-manifest-192x192.png -------------------------------------------------------------------------------- /public/favicon/web-app-manifest-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acidiney/dev.acidineydias/HEAD/public/favicon/web-app-manifest-512x512.png -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import withNuxt from './.nuxt/eslint.config.mjs' 3 | 4 | export default withNuxt( 5 | // Your custom configs here 6 | ) 7 | -------------------------------------------------------------------------------- /app/types/menu-item.type.ts: -------------------------------------------------------------------------------- 1 | export type MenuItem = { 2 | text: string; 3 | icon: string; 4 | url: string; 5 | mobile?: boolean; 6 | external?: boolean; 7 | separator?: boolean; 8 | }; 9 | -------------------------------------------------------------------------------- /app/components/navigation/NavIcon.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /app/types/github.type.ts: -------------------------------------------------------------------------------- 1 | export type GithubRepo = { 2 | fork: boolean 3 | stargazers_count: number 4 | id: number 5 | name: string 6 | description: string 7 | html_url: string 8 | language: string 9 | updated_at: Date 10 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | -------------------------------------------------------------------------------- /app/filters/index.ts: -------------------------------------------------------------------------------- 1 | export const formateDate = (date: Date) => { 2 | const locale = 'pt' 3 | return new Date(date).toLocaleString(locale, { day: 'numeric', month: 'short', year: 'numeric' }) 4 | } 5 | 6 | export const capitalize = (text: string) => { 7 | return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase() 8 | } 9 | -------------------------------------------------------------------------------- /app/components/Title.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/pages/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "files": [], 4 | "references": [ 5 | { 6 | "path": "./.nuxt/tsconfig.app.json" 7 | }, 8 | { 9 | "path": "./.nuxt/tsconfig.server.json" 10 | }, 11 | { 12 | "path": "./.nuxt/tsconfig.shared.json" 13 | }, 14 | { 15 | "path": "./.nuxt/tsconfig.node.json" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /app/components/layout/MainContent.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /app/stores/website.ts: -------------------------------------------------------------------------------- 1 | export const useWebsiteStore = defineStore("websiteStore", { 2 | state: () => ({ 3 | theme: "system", 4 | }), 5 | actions: { 6 | initTheme() { 7 | if (import.meta.client) { 8 | this.theme = localStorage.getItem("nuxt_theme") || "dark"; 9 | } 10 | }, 11 | 12 | toggleTheme() { 13 | this.theme = this.theme === "dark" ? "light" : "dark"; 14 | if (import.meta.client) { 15 | localStorage.setItem("nuxt_theme", this.theme); 16 | } 17 | }, 18 | }, 19 | }); 20 | -------------------------------------------------------------------------------- /server/api/contact.ts: -------------------------------------------------------------------------------- 1 | import { Resend } from "resend"; 2 | 3 | const resend = new Resend(process.env.RESEND_API_KEY!); 4 | const noReplyEmail = process.env.NO_REPLY_EMAIL!; 5 | const contactRecipientEmail = process.env.CONTACT_RECIPIENT_EMAIL!; 6 | 7 | export default defineEventHandler(async (event) => { 8 | const body = await readBody(event); 9 | 10 | await resend.emails.send({ 11 | from: `Contact Form <${noReplyEmail}>`, 12 | to: [contactRecipientEmail], 13 | subject: "Contact Form Submission", 14 | html: ` 15 |

From: ${body.name} (${body.email})

16 |

${body.message}

17 | `, 18 | }); 19 | 20 | return { success: true }; 21 | }); 22 | -------------------------------------------------------------------------------- /app/assets/social.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "aria-label": "links.github", 4 | "link": "https://github.com/acidiney", "icon": "icon-github" }, 5 | { 6 | "aria-label": "links.youtube", 7 | "link": "https://www.youtube.com/channel/UCMjOcKmA1UjiimzRDNZ_uOQ", 8 | "icon": "icon-youtube" 9 | }, 10 | { 11 | "aria-label": "links.linkedin", 12 | "link": "https://linkedin.com/in/acidineydias", "icon": "icon-linkedin" }, 13 | { 14 | "aria-label": "links.twitter", 15 | "link": "https://x.com/acidineydias", "icon": "icon-twitter" }, 16 | { 17 | "aria-label": "links.instagram", 18 | "link": "https://www.instagram.com/acidineydias/", 19 | "icon": "icon-instagram" 20 | } 21 | ] -------------------------------------------------------------------------------- /app/components/FormInput.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 21 | 22 | 27 | 28 | 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "acidineydias.dev", 3 | "type": "module", 4 | "private": true, 5 | "scripts": { 6 | "build": "nuxt build", 7 | "dev": "nuxt dev", 8 | "generate": "nuxt generate", 9 | "preview": "nuxt preview", 10 | "postinstall": "nuxt prepare" 11 | }, 12 | "dependencies": { 13 | "@nuxt/eslint": "1.11.0", 14 | "@nuxt/image": "2.0.0", 15 | "@nuxtjs/sitemap": "7.4.7", 16 | "@pinia/nuxt": "0.11.3", 17 | "@types/xml2js": "^0.4.14", 18 | "@vite-pwa/nuxt": "1.1.0", 19 | "eslint": "^9.0.0", 20 | "nuxt": "^4.2.1", 21 | "nuxt-gtag": "4.1.0", 22 | "pinia": "^3.0.4", 23 | "resend": "^6.5.2", 24 | "typescript": "^5.6.3", 25 | "vue": "^3.5.25", 26 | "vue-router": "^4.6.3", 27 | "xml2js": "^0.6.2" 28 | }, 29 | "devDependencies": { 30 | "@nuxtjs/i18n": "^10.2.1", 31 | "@nuxtjs/tailwindcss": "^6.14.0" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/assets/menu.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "url": "https://blog.acidineydias.dev", 4 | "text": "menu.blog", 5 | "icon": "icon-book-open", 6 | "separator": true, 7 | "external": true 8 | }, 9 | { 10 | "url": "/", 11 | "text": "menu.experiences", 12 | "icon": "icon-home", 13 | "separator": true 14 | }, 15 | { 16 | "url": "/experiences", 17 | "text": "menu.experiences", 18 | "icon": "icon-layers", 19 | "mobile": true, 20 | "separator": true 21 | }, 22 | { 23 | "url": "/technologies", 24 | "text": "menu.technologies", 25 | "icon": "icon-terminal", 26 | "separator": true 27 | }, 28 | { 29 | "url": "/open-source", 30 | "text": "menu.openSource", 31 | "icon": "icon-github1", 32 | "separator": true 33 | }, 34 | { 35 | "url": "/contact", 36 | "text": "menu.contact", 37 | "icon": "icon-send", 38 | "separator": false 39 | } 40 | ] -------------------------------------------------------------------------------- /app/components/navigation/NavMobileTop.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 39 | 40 | 46 | -------------------------------------------------------------------------------- /app/components/navigation/NavMobileBottom.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 38 | 39 | 52 | -------------------------------------------------------------------------------- /app/pages/open-source.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 40 | 41 | 51 | -------------------------------------------------------------------------------- /server/api/latest-article.ts: -------------------------------------------------------------------------------- 1 | import {defineEventHandler} from 'h3' 2 | import { parseStringPromise } from "xml2js"; 3 | 4 | interface RSSItem { 5 | title: string; 6 | link: string; 7 | pubDate: string; 8 | description: string; 9 | image?: string; 10 | tags?: string[]; 11 | } 12 | 13 | function extractImage(item: any): string | undefined { 14 | if (item.enclosure && item.enclosure[0].$.url) { 15 | return item.enclosure[0].$.url; 16 | } 17 | return undefined; 18 | } 19 | 20 | function extractTags(item: any): string[] | undefined { 21 | if (item.category) { 22 | return item.category.map((c: any) => c._ || c); 23 | } 24 | return undefined; 25 | } 26 | 27 | async function getLatestArticle(xmlData: string): Promise { 28 | 29 | const parsed = await parseStringPromise(xmlData); 30 | 31 | const items = parsed.rss.channel[0].item; 32 | 33 | if (!items || items.length === 0) return null; 34 | 35 | // Map items to RSSItem 36 | const articles: RSSItem[] = items.map((item: any) => { 37 | return ({ 38 | title: item.title[0], 39 | link: item.link[0].replace('github.com/acidineydias/', ''), 40 | pubDate: item.pubDate[0], 41 | description: item.description[0], 42 | image: extractImage(item), 43 | tags: extractTags(item), 44 | }) 45 | }); 46 | 47 | // Sort by pubDate descending 48 | articles.sort((a, b) => new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime()); 49 | 50 | return articles[0]; 51 | } 52 | 53 | export default defineEventHandler(async () => { 54 | const xml = await $fetch('https://blog.acidineydias.dev/rss.xml', { responseType: 'text' }) 55 | return getLatestArticle(xml) 56 | }) -------------------------------------------------------------------------------- /app/components/navigation/NavDesktop.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 62 | -------------------------------------------------------------------------------- /app/components/ProjectItem.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 30 | 31 | 36 | 37 | 75 | -------------------------------------------------------------------------------- /app/pages/Technologies.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 51 | 52 | 57 | 77 | -------------------------------------------------------------------------------- /app/pages/experiences.vue: -------------------------------------------------------------------------------- 1 | 25 | 55 | 56 | 76 | -------------------------------------------------------------------------------- /app/components/CustomLoading.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 79 | -------------------------------------------------------------------------------- /app/components/ExperienceItem.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 40 | 41 | 46 | 47 | 91 | -------------------------------------------------------------------------------- /app/assets/experiences.json: -------------------------------------------------------------------------------- 1 | { 2 | "scheme": "technologies", 3 | "description": "List of all my professional experiences", 4 | "author": "Acidiney Dias ", 5 | "version": "0.1.0", 6 | "experiences": [ 7 | { 8 | "companyLogo": "https://media.licdn.com/dms/image/v2/D4D0BAQFSexdvK2mWhw/company-logo_200_200/company-logo_200_200/0/1736250958915/aubay_portugal_logo?e=1766620800&v=beta&t=xWBeAJ9umcKZKWcURv_kd6YMBgmoPAMx4NBaTKw26qs", 9 | "companyName": "Aubay Portugal > Mercedes Benz", 10 | "website": "https://aubay.pt", 11 | "role": "Senior Software Engineer", 12 | "startDate": "Aug. 2025", 13 | "endDate": "Current", 14 | "location": "Remote, Portugal" 15 | }, 16 | { 17 | "companyLogo": "https://cdn.brandfetch.io/idAmZO9G-h/w/1080/h/1080/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1761132968897", 18 | "companyName": "ITGest Portugal", 19 | "website": "https://itgest.pt", 20 | "role": "Senior Software Developer", 21 | "startDate": "Nov. 2024", 22 | "endDate": "Aug. 2025", 23 | "location": "Aveiro, Portugal" 24 | }, 25 | { 26 | "companyLogo": "https://cdn.brandfetch.io/idAmZO9G-h/w/1080/h/1080/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1761132968897", 27 | "companyName": "ITGest Angola", 28 | "website": "https://itgest.co.ao", 29 | "role": "DevOps Eng.& Product Owner", 30 | "startDate": "Mar. 2022", 31 | "endDate": "Nov. 2024", 32 | "location": "Nova Vida, Angola" 33 | }, 34 | { 35 | "companyLogo": "https://cdn.brandfetch.io/idAmZO9G-h/w/1080/h/1080/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1761132968897", 36 | "companyName": "ITGest Angola", 37 | "website": "https://itgest.co.ao", 38 | "role": "Software Developer", 39 | "startDate": "Jun. 2020", 40 | "endDate": "Mar. 2022", 41 | "location": "Talatona, Angola" 42 | }, 43 | { 44 | "companyLogo": "https://avatars1.githubusercontent.com/u/55786188?s=200&v=4", 45 | "companyName": "Digital Factory Angola", 46 | "website": "https://digitalfactory.co.ao", 47 | "role": "Frontend Team Leader", 48 | "startDate": "Mar. 2019", 49 | "endDate": "Jun. 2020", 50 | "location": "Talatona, Angola" 51 | }, 52 | { 53 | "companyLogo": "https://avatars1.githubusercontent.com/u/47317779?s=200&v=4", 54 | "companyName": "KiandaStream", 55 | "website": "http://kianda.stream", 56 | "role": "Frontend Developer", 57 | "startDate": "Jan. 2019", 58 | "endDate": "Mar. 2019", 59 | "location": "Maianga, Angola" 60 | } 61 | ] 62 | } 63 | -------------------------------------------------------------------------------- /i18n/locales/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "hello": "Hello, I'm
Acidiney Dias", 3 | "avatar": { 4 | "alt": "Acidiney Dias Profile Picture" 5 | }, 6 | "cv_link": "https://www.icloud.com/iclouddrive/085LivXm9viWS4vaAp-R_twpg#ACIDINEY_DIAS", 7 | "toggle-theme": "Toggle theme dark/light", 8 | "last-article": "Read my last article:", 9 | "cover": "I'm a software engineer with +7 years, during this time I had the opportunity to work with all parts of the software development cycle. From designing a system that was projected to receive thousand of requests per second in Telecom, to design a Big Data ETL that combine data from different sources, applying data mining in it, and extract relevant data to show to ours stakeholders. I have implemented scalable systems architecture and lead development teams together with other departments.", 10 | "links": { 11 | "youtube": "My Youtube Channel", 12 | "twitter": "My X Account", 13 | "medium": "My Medium Account", 14 | "linkedin": "My Linkedin Profile", 15 | "github": "My Github Profile", 16 | "instagram": "My Instagram Account" 17 | }, 18 | "menu": { 19 | "openSource": "Open source projects", 20 | "blog": "Blog", 21 | "technologies": "Technologies", 22 | "experiences": "Experiences", 23 | "contact": "Contact" 24 | }, 25 | "findAnyProjectToContribute": "Find one and contribute 😄", 26 | "contact": { 27 | "subTitle": "You can contact me using form above ^^", 28 | "fromName": "Your name here...", 29 | "fromEmail": "Your email here...", 30 | "message": "You can write your message here...", 31 | "submit": "Send Message", 32 | "success": "Message sended, I will respond as soon as possible.", 33 | "error": "Oops, this should not have happened! Send an e-mail to hireme[at]acidineydias.dev instead." 34 | }, 35 | "downloadCV": "Download my CV", 36 | "technologies": { 37 | "languages": "Programming Languages", 38 | "frontendTools": "Frontend Tools", 39 | "backendTools": "Backend Tools", 40 | "testingTools": "Testing Tools", 41 | "packageManager": "Package Manager", 42 | "database": "Database", 43 | "editors": "Editors", 44 | "mobileDevelopment": "Mobile Development", 45 | "devToolsAndDevOps": "Dev Tools & DevOps", 46 | "extraTools": "Extra Tools", 47 | "browser": "Browsers", 48 | "managementAndDeploymentTools": "Management and deployment Tools", 49 | "videoStreamPlatforms": "Video Stream Platforms", 50 | "gamming": "Gamming", 51 | "projects": "Projects", 52 | "socialMedia": "Social Media", 53 | "drive": "Drive", 54 | "eventTickets": "Event Tickets", 55 | "operationalSystems": "Operational Systems", 56 | "enthusiast": "Enthusiast" 57 | } 58 | } -------------------------------------------------------------------------------- /app/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 94 | 95 | 100 | -------------------------------------------------------------------------------- /app/assets/css/index.css: -------------------------------------------------------------------------------- 1 | /* --------------------------------------- 2 | Global Reset 3 | ---------------------------------------- */ 4 | *, *::before, *::after { 5 | box-sizing: border-box; 6 | margin: 0; 7 | transition: all 0.26s linear; 8 | } 9 | 10 | /* --------------------------------------- 11 | Transitions - Page Animations 12 | ---------------------------------------- */ 13 | .slide-fade { 14 | &-enter-active, 15 | &-leave-active { 16 | transition: all 0.4s ease; 17 | } 18 | 19 | &-enter, 20 | &-leave-to { 21 | transform: translateX(50px); 22 | opacity: 0; 23 | } 24 | } 25 | 26 | .fade { 27 | &-enter-active, 28 | &-leave-active { 29 | transition: opacity 0.5s; 30 | } 31 | 32 | &-enter, 33 | &-leave-to { 34 | opacity: 0; 35 | } 36 | } 37 | 38 | /* --------------------------------------- 39 | Scrollbar 40 | ---------------------------------------- */ 41 | ::-webkit-scrollbar { 42 | width: 5px; 43 | height: 5px; 44 | } 45 | 46 | ::-webkit-scrollbar-track { 47 | background-color: rgba(255, 255, 255, 0.1); 48 | border-radius: 10px; 49 | } 50 | 51 | ::-webkit-scrollbar-thumb { 52 | background-color: #11171a; 53 | border-radius: 10px; 54 | } 55 | 56 | /* --------------------------------------- 57 | HTML Base Styles 58 | ---------------------------------------- */ 59 | html { 60 | font-family: "Gothic A1", "Source Sans Pro", -apple-system, 61 | BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, 62 | sans-serif !important; 63 | font-size: 16px; 64 | word-spacing: 1px; 65 | -ms-text-size-adjust: 100%; 66 | -webkit-text-size-adjust: 100%; 67 | -moz-osx-font-smoothing: grayscale; 68 | -webkit-font-smoothing: antialiased; 69 | box-sizing: border-box; 70 | } 71 | 72 | /* --------------------------------------- 73 | Navigation 74 | ---------------------------------------- */ 75 | nav { 76 | display: flex; 77 | justify-content: space-between; 78 | align-items: center; 79 | 80 | ul.left { 81 | span.separator { 82 | margin: 0 5px; 83 | } 84 | } 85 | 86 | ul.left a, 87 | ul.right a { 88 | display: flex; 89 | } 90 | } 91 | 92 | /* --------------------------------------- 93 | Utilities 94 | ---------------------------------------- */ 95 | .gothic-font { 96 | font-family: "Gothic A1", "Source Sans Pro", -apple-system, 97 | BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, 98 | sans-serif; 99 | } 100 | 101 | /* --------------------------------------- 102 | Article Styles 103 | ---------------------------------------- */ 104 | .last-article { 105 | padding: 15px; 106 | margin: 15px 0; 107 | font-family: "Gothic A1", sans-serif; 108 | } 109 | 110 | 111 | .text-primary { 112 | color: var(--text-primary); 113 | } 114 | 115 | .text-secondary { 116 | color: var(--text-secondary); 117 | } 118 | 119 | .router-link-exact-active { 120 | font-weight: bold !important; 121 | } -------------------------------------------------------------------------------- /i18n/locales/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "hello": "Olá, eu sou o
Acidiney Dias", 3 | "cover": "Software Engineer com +7 anos de experiência. Durante esse período, tive a oportunidade de atuar em todas as etapas do ciclo de desenvolvimento de software. Desde projetar um sistema para uma empresa de Telecom, capaz de receber milhares de requisições por segundo, até desenvolver um ETL de Big Data que combina dados de diferentes fontes, aplica técnicas de mineração de dados e extrai informações relevantes para apresentar aos nossos stakeholders. Também implementei arquiteturas de sistemas escaláveis e liderei equipes de desenvolvimento em colaboração com outros departamentos.", 4 | "avatar": { 5 | "alt": "Foto de Perfil de Acidiney Dias" 6 | }, 7 | "cv_link": "https://www.icloud.com/iclouddrive/085LivXm9viWS4vaAp-R_twpg#ACIDINEY_DIAS", 8 | "toggle-theme": "Inverter tema escuro/claro", 9 | "last-article": "Leia o meu último artigo:", 10 | "links": { 11 | "youtube": "Meu canal do youtube", 12 | "twitter": "Minha conta no twitter", 13 | "medium": "Minha conta no medium", 14 | "linkedin": "Meu perfil no linkedin", 15 | "github": "Meu perfil no github", 16 | "instagram": "Minha conta no instagram" 17 | }, 18 | "menu": { 19 | "openSource": "Projectos abertos", 20 | "blog": "Blog", 21 | "technologies": "Tecnologias", 22 | "experiences": "Experiências", 23 | "contact": "Contacte-me" 24 | }, 25 | "findAnyProjectToContribute": "Encontre algum projecto para contribuir 😄", 26 | "contact": { 27 | "subTitle": "Você pode entrar em contacto comigo pelo formulário abaixo ^^", 28 | "fromName": "Escreva o seu nome aqui...", 29 | "fromEmail": "Escreva o seu e-mail aqui...", 30 | "message": "Ok, agora escreva sua mensagem...", 31 | "submit": "Enviar para mim.", 32 | "success": "Mensagem enviada, irei responder o mais rápido possível", 33 | "error": "Oops, isso não deveria ter acontecido! Envie um e-mail para hireme[at]acidineydias.dev no lugar." 34 | }, 35 | "downloadCV": "Baixar o meu CV", 36 | "technologies": { 37 | "languages": "Linguagens de programação", 38 | "frontendTools": "Ferramentas de frontend", 39 | "backendTools": "Ferramentas de backend", 40 | "testingTools": "Ferramentas para testes", 41 | "packageManager": "Gerenciador de pacotes", 42 | "database": "Base de dados", 43 | "editors": "Editores", 44 | "mobileDevelopment": "Desenvolvimento móvel", 45 | "devToolsAndDevOps": "Ferramentas de desenvolvimento & DevOps", 46 | "extraTools": "Extras", 47 | "browser": "Navegadores", 48 | "managementAndDeploymentTools": "Ferramentas de gerenciamento e publicação de projectos", 49 | "videoStreamPlatforms": "Plataformas de exibição de vídeo", 50 | "gamming": "Jogos", 51 | "projects": "Projectos", 52 | "socialMedia": "Redes sóciais", 53 | "drive": "Armazenamento", 54 | "eventTickets": "Ingressos", 55 | "operationalSystems": "Sistemas operacionais", 56 | "enthusiast": "Entusiasta de " 57 | } 58 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Netlify Status](https://api.netlify.com/api/v1/badges/f010a3d3-66ab-44ef-a0e3-e22f7bfa10bb/deploy-status)](https://app.netlify.com/sites/acidineydias/deploys) 2 | 3 |

4 | Acidiney Dias Personal Website 5 |

6 |

7 | GitHub language count 8 | 9 | Repository size 10 | 11 | 12 | GitHub last commit 13 | 14 | 15 | 16 | Repository issues 17 | 18 | 19 | License 20 |

21 | 22 |

23 | Techs   |    24 | Project   |    25 | Layout   |    26 | How to Build Setup   |    27 | How to Contribute   |    28 | License   |    29 | Author 30 |

31 | 32 | ## :rocket: Techs 33 | 34 | This project was developed with the following technologies: 35 | 36 | - [VueJs](https://vuejs.org/) 37 | - [Javascript](https://www.w3schools.com/js/) 38 | - [NuxtJs](https://nuxtjs.org/) 39 | - [Jamstack](https://jamstack.org/) 40 | - [CSS](https://www.w3schools.com/css/) 41 | 42 | ## 💻 Project 43 | 44 | This is Acidiney Dias personal website, made with Nuxt JS. 45 | 46 | ## Layout 47 | 48 | ### Desktop Layout 49 | 50 | ![Desktop Layout Exemple](layouts/web.png) 51 | 52 | ### Mobile Layout 53 | 54 | ![Mobile Layout Image](layouts/mobile.png) 55 | 56 | #### Link to preview project 57 | 58 | [Preview](https://www.acidineydias.me/) 59 | 60 | 61 | ## How to Build Setup 62 | 63 | ```bash 64 | # install dependencies 65 | $ bun install 66 | 67 | # serve with hot reload at localhost:3000 68 | $ bun dev 69 | 70 | # build for production and launch server 71 | $ bun build 72 | $ bun start 73 | 74 | # generate static project 75 | $ bun generate 76 | ``` 77 | 78 | ## 🤔 How to Contribute 79 | 80 | - Fork this repository; 81 | - Create a branch with your feature: `git checkout -b my-feature`; 82 | - Commit your changes: `git commit -m 'feat: my new feature'`; 83 | - Push to your branch: `git push origin my-feature`. 84 | 85 | After the merge of your pull request is done, you can delete your branch. 86 | 87 | ## :memo: License 88 | 89 | This project is under the MIT license. See the archive [LICENSE](LICENSE.md) for more details. 90 | 91 | ## Author 92 | 93 | [Acidiney Dias](https://github.com/acidiney/) 94 | -------------------------------------------------------------------------------- /app/pages/Contact.vue: -------------------------------------------------------------------------------- 1 |