diff --git a/Makefile b/Makefile index fa10a6c..690d82e 100644 --- a/Makefile +++ b/Makefile @@ -103,7 +103,7 @@ install: mv hugo.exe "$(BIN_DIR)/hugo.exe"; \ echo "✅ Moved hugo.exe to $(BIN_DIR). Ensure it's in your PATH."; \ else \ - sudo mkdir -p "$(BIN_DIR)"; \ + mkdir -p "$(BIN_DIR)"; \ mv hugo "$(BIN_DIR)/hugo"; \ echo "✅ Moved hugo to $(BIN_DIR). Ensure $(BIN_DIR) is in your PATH."; \ fi; \ @@ -128,7 +128,7 @@ update: check-env if [ "$(PLATFORM)" = "windows" ]; then \ del "$(HUGO_BIN)" || echo "Failed to remove Hugo executable. Please remove manually."; \ else \ - sudo rm -f "$(HUGO_BIN)" || echo "Failed to remove Hugo executable. Please remove manually."; \ + rm -f "$(HUGO_BIN)" || echo "Failed to remove Hugo executable. Please remove manually."; \ fi; \ $(MAKE) install; \ fi; \ diff --git a/content/data/section/schedule.json b/content/data/section/schedule.json index 9f7a281..fa25edc 100644 --- a/content/data/section/schedule.json +++ b/content/data/section/schedule.json @@ -9,7 +9,7 @@ "title": "Ciclo de desenvolvimento de automações com Python e BotCity.", "speaker": { "name": "Bruna Ferreira", - "photo": "images/keynotes/bruna-ferreira.png" + "photo": "images/keynotes/bruna-ferreira.jpg" }, "category": "web", "type": "workshop" @@ -17,7 +17,7 @@ { "start": "09:00", "end": "12:00", - "duration": "40m", + "duration": "3h", "title": "Criando a sua primeira análise de sentimentos utilizando técnicas NLP e LLM’s ", "speaker": { "name": "Bernardo De Castro", @@ -170,7 +170,7 @@ "title": "Keynote de Encerramento", "speaker": { "name": "Bruna Ferreira (bug_elseif)", - "photo": "images/keynotes/bruna-ferreira.png" + "photo": "images/keynotes/bruna-ferreira.jpg" }, "category": "keynote" } diff --git a/content/data/speakers.json b/content/data/speakers.json index 5a420b3..d9d2b1e 100644 --- a/content/data/speakers.json +++ b/content/data/speakers.json @@ -1,116 +1,199 @@ -{ - "speakers": [ - { - "name": "Bernardo De Castro", - "bio": "Bernardo de Castro Monteiro Franco Gomes, é estudante de Ciência da Computação na Universidade Federal de São João Del Rei - atualmente estou no 1° período, porém já possuo experiência na área de computação como professor, fui monitor de curso e professor particular em uma escola de cursos chama Infinity School.", - "photo": "iamges/speakers/perceu.jpg", - "talk_title": "Criando a sua primeira análise de sentimentos utilizando técnicas NLP e LLM’s ", - "talk_abstract": "Aprenda a criar sua primeira análise de sentimentos em texto utilizando técnicas de PLN e LLMs. O objetivo é apresentar desde os conceitos até a a aplicação prática, passando pelo pré-processamento de texto, uso de bibliotecas e integração com LLMs para classificação e interpretação de sentimentos." - }, - { - "name": "João Paulo Carvalho", - "bio": "Apaixonado por games. Entusiasta de Linux, open-source e evangelista do Python. Atualmente Engenheiro de Plataforma na Vinta Software. Participa da organização do Hackerspace Blumenau e GruPy Blumenau.", - "photo": "iamges/speakers/perceu.jpg", - "talk_title": "Automatizando servidores do Discord com Python ", - "talk_abstract": "Vamos aprender a usar a lib discord.py para criar bots poderosos para Discord. Vamos ver casos de uso bem populares como moderação, minigames, bots de música, até processamento de linguagem natural. Tudo usando as interfaces mais modernas da linguagem Python." - }, - { - "name": "Felipe de Morais🤴🏾", - "bio": "🎉 FeliPython aqui! Premiado com PSF Fellow 🏅, Community Service Award 🏆 e Dorneles Treméa 🏵️. Uso FastAPI há 1+ ano, obcecado por testes e adoro fazer a comunidade Python crescer! 🚀🐍", - "photo": "iamges/speakers/perceu.jpg", - "talk_title": "Começando com FastAPI: construa sua primeira API em Python", - "talk_abstract": "Aprenda a criar sua primeira API com FastAPI! Neste tutorial para iniciantes, você vai construir uma API REST do zero usando Python de forma prática e descomplicada. 🚀." - }, - { - "name": "Perceu Bertoletti", - "bio": "Desenvolvedor web(front e back) com Python, PHP, Javascript, CSS, HTML, etc. Desenvolvedor de automações com python.", - "photo": "iamges/speakers/perceu.jpg", - "talk_title": "Como programar como antigamente (blog em 30 min ou mais)", - "talk_abstract": "Inspirado pela famosa palestra de como fazer um blog em 30 minutos que já foi feita em diversas linguagens, vou apresentar como ainda existe espaço para desenvolvimento web clássico a ideia é usar django para desenvolver um blog rapido e como isso ainda pode e deve ser usado." - }, - { - "name": "Gabriel Menezes", - "bio": "Especialista em testes e qualidade de software, com mais de 7 anos de experiência na área. Atuo na comunidade Python e fui Big kahuna da Python norte 2023, passando pela Python Brasil 2022, Python Norte Itacoatiara 2024 e Python Brasil RJ 2024. Sou apaixonado por viagens, aviação, drones e videogames.", - "photo": "images/speakers/helder.jpg", - "talk_title": "Testes Inteligentes: O Futuro da Qualidade com IA e Python ", - "talk_abstract": "A Inteligência Artificial vem transformando os testes de software, incluindo geração automática de cenários, priorização de casos e detecção de falhas. Esta palestra aborda como empresas de software têm utilizado IA para aprimorar seus sistemas e otimizar o processo de desenvolvimento." - }, - { - "name": "Cristiano Larrea", - "bio": "Bacharel em Cientista de Dados e Inteligência Artificial pela FGV-RJ e Cientista de Dados Sênior na Globo.", - "photo": "images/speakers/cesar_brod.jpg", - "talk_title": "VigIA: funcionário virtual de Antifraude com Google ADK", - "talk_abstract": "Esta palestra irá abordar como o VigIA, agente de inteligência artificial desenvolvido com Google ADK e GCP, atua como um “funcionário digital” no time de antifraude da Globo. Serão apresentados os desafios do combate à fraude, a integração entre negócios e tecnologia, a arquitetura técnica do projeto." - }, - { - "name": "Eri Bastos", - "bio": "Eri Bastos é Gerente Sênior em Site Reliability Engineering, especialista em infraestrutura e cloud computing com mais de 25 anos de experiência em TI. Apaixonado por Python, atua remotamente no Canadá, liderando equipes globais e impulsionando inovação tecnológica.", - "photo": "images/speakers/ana_silva.jpg", - "talk_title": "Modernizando código legado Python com auxílio de IA", - "talk_abstract": "A palestra mostrará como aplicar inteligência artificial para modernizar código legado em Python. Serão apresentados desafios comuns, ferramentas de IA que apoiam refatoração e análise, além de estratégias práticas para reduzir dívidas técnicas e transformar sistemas antigos em bases modernas." - }, - { - "name": "Guilherme Garcia", - "bio": "Eu sou o Guilherme, também conhecido como guites! Trabalho com software a cerca de seis anos, e sou apaixonado por desenvolvimento web, acessibilidade e livre acesso ao conhecimento. Eu toco o projeto cinemaempoa.com.br junto com o time da cumbuca.dev, e estou feliz de participar da Python Sul :-)", - "photo": "images/speakers/lucas_ferreira.jpg", - "talk_title": "Do Regex a LLM: Extraindo horários de cinema de páginas imprevisíveis", - "talk_abstract": "Utilização de Modelos de Linguagem (LLMs) para extração de dados de um blog de cinema local em Porto Alegre que anuncia filmes e horários em posts de texto livre no Blogspot. Em vez de regex ou parsers rígidos, exploramos LLMs via APIs para criar um pipeline resiliente a mudanças de formato." - }, - { - "name": "Nilton Pimentel", - "bio": "Revisor Técnico – Django 5 for the Impatient (Packt Publishing) 📘Mentor – CumbucaDev 👨‍🏫Contribuidor Open Source 🌍", - "photo": "images/speakers/lucas_ferreira.jpg", - "talk_title": "Do Regex a LLM: Extraindo horários de cinema de páginas imprevisíveis", - "talk_abstract": "Utilização de Modelos de Linguagem (LLMs) para extração de dados de um blog de cinema local em Porto Alegre que anuncia filmes e horários em posts de texto livre no Blogspot. Em vez de regex ou parsers rígidos, exploramos LLMs via APIs para criar um pipeline resiliente a mudanças de formato." - }, - { - "name": "Belisa Arnhold", - "bio": "Backender apaixonada por dados.", - "photo": "images/speakers/lucas_ferreira.jpg", - "talk_title": "Conversando com os dados da educação brasileira", - "talk_abstract": "Todo ano, o INEP avalia a educação brasileira e disponibiliza os dados das pesquisas. Usando python e IA, vamos construir um chatbot que conversa com eles." - }, - { - "name": "Gian Carlo", - "bio": "Sou desenvolvedor python a 8 anos, de Porto Alegre e estou sempre querendo aprender um pouco mais cada dia.", - "photo": "images/speakers/tba.jpg", - "talk_title": "HTTP Server from scratch: criando seu próprio Gunicorn ", - "talk_abstract": "A ideia é mostrar na prática, com um livro coding, como construir um servidor HTTP minimalista do zero, em python. Vou explicar o que é wsgi, vou explorar diferentes estratégias de concorrência, como uso de threads e processos, criação de sockets e discutir formas básicas de monitoramento." - }, - { - "name": "Glória Barboza", - "bio": "Pós-graduada em Engenharia de Software, Data Science e IA, com MBA em Gestão Estratégica de Pessoas. Atuo há mais de oito anos na interseção entre pessoas, tecnologia e negócios [nem sempre nessa ordem]. Sou entusiasta de comunidades tech, conectando e desenvolvendo pessoas, além de compartilhar conhecimento e cultura.", - "photo": "images/speakers/tba.jpg", - "talk_title": "Do Caos ao Código: Pensamento Computacional Aplicado à Regra de Negócio em Python.", - "talk_abstract": "Como transformar regras de negócio vagas em soluções claras em Python. Exploraremos pensamento computacional, decomposição de requisitos e exemplos práticos, aproximando times técnicos e não técnicos para reduzir ruídos, retrabalhos e atrasos." - }, - { - "name": "Maria Antônia Maia", - "bio": "Cofundadora da Cumbuca Dev, empreendedora social na área de TI e entusiasta do Open Source. Teve a vida transformada pela tecnologia e hoje apoia novos talentos, acreditando no potencial do código aberto como ferramenta de inclusão e inovação. Pessoas > Tecnologia 💜", - "photo": "images/speakers/tba.jpg", - "talk_title": "Cumbuca Dev: Fortalecendo o Open Source no Brasil.", - "talk_abstract": "Descubra como a Cumbuca Dev fortalece a comunidade Open Source no Brasil, promovendo inclusão, aprendizado e experiências reais para todas as pessoas interessadas em contribuir." - }, - { - "name": "Douglas Medeiros", - "bio": "Engenheiro de Software Sênior no PicPay, onde atuo como Tech Lead e PHP Skill Lead, com foco em alta performance, escalabilidade e sistemas que lidam com bilhões de registros. Criador de conteúdo tech, ativo na comunidade, palestrante e consultor técnico para times que buscam mais eficiência e qualidade nas entregas.", - "photo": "images/speakers/tba.jpg", - "talk_title": "Nem Só de Código Vive o Dev", - "talk_abstract": "O que realmente faz um dev crescer na carreira? Não, não é só saber codar bem. Nesta talk, conto como levei um choque de realidade ao descobrir que comunicação é tão essencial quanto técnica. Se você acha que \"o código fala por si\", talvez esteja perdendo a parte mais importante do jogo." - }, - { - "name": "Vilson Blanco Dauinheimer (Bwolf)", - "bio": "Vilson Blanco Dauinheimer(Bwolf) é desenvolvedor Flutter, organizador do GDG Caxias do Sul e da Flutter Meetup Network, além de mentor no Google for Startups. Atua em projetos internacionais e comunidades de tecnologia, compartilhando aprendizados sobre carreira e desenvolvimento.", - "photo": "images/speakers/tba.jpg", - "talk_title": "Abrindo Porteiras", - "talk_abstract": "Abrir porteiras é enfrentar medos e atravessar fronteiras. Nesta palestra compartilho como enfrentei o medo de trabalhar fora do país, superei barreiras de idioma e cultura e transformei a experiência internacional em evolução profissional." - }, - { - "name": "Rodrigo Bastos Vieira", - "bio": "Desenvolvendo web desde 2001, e programando em Python e Django desde 2022. Atualmente é desenvolvedor sênior e Tech Lead na Vinta Software, de Recife.", - "photo": "images/speakers/tba.jpg", - "talk_title": "Otimize suas consultas: Evitando armadilhas comuns em ORMs Python", - "talk_abstract": "Nesta palestra, vamos mostrar como identificar e corrigir um dos problemas de performance mais comuns e escondidos em ORMs Python: o famoso N+1 queries. A partir de exemplos práticos, você vai entender por que ele ocorre, como detectá‑lo e, principalmente, como evitá‑los." - } - ] -} +[ + { + "name": "Bruna Ferreira", + "title": "Software Developer | DX | Python | Content Creator | TEA ♾", + "bio": "Desenvolvedora de software e DevX na BotCity, criadora de conteúdo e voz ativa na comunidade Python.", + "photo": "images/keynotes/bruna-ferreira.jpg", + "talk_title": "Criando a sua primeira análise de sentimentos utilizando técnicas NLP e LLM’s ", + "talk_abstract": "Aprenda a criar sua primeira análise de sentimentos em texto utilizando técnicas de PLN e LLMs. O objetivo é apresentar desde os conceitos até a a aplicação prática, passando pelo pré-processamento de texto, uso de bibliotecas e integração com LLMs para classificação e interpretação de sentimentos.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/brunaferreiratech/", + "youtube": "https://www.youtube.com/@bug_elseif", + "github": "https://github.com/bugelseif", + "site": "https://bugelseif.github.io/website" + } + }, + { + "name": "Bernardo de Castro", + "title": "Software Developer Full-Stack | Professor de Desenvolvimento de Software", + "bio": "Estudante de Ciência da Computação na Universidade Federal de São João Del Rei - atualmente estou no 1° período, porém já possuo experiência na área de computação como professor, fui monitor de curso e professor particular em uma escola de cursos chama Infinity School.", + "photo": "images/speakers/bernardo-de-castro.jpg", + "talk_title": "Criando a sua primeira análise de sentimentos utilizando técnicas NLP e LLM’s ", + "talk_abstract": "Aprenda a criar sua primeira análise de sentimentos em texto utilizando técnicas de PLN e LLMs. O objetivo é apresentar desde os conceitos até a a aplicação prática, passando pelo pré-processamento de texto, uso de bibliotecas e integração com LLMs para classificação e interpretação de sentimentos.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/bernardo-gomes-32adb3423/" + } + }, + { + "name": "João Paulo Carvalho", + "title": "Back End Engineer. Python lover. Cloud solutions architect", + "bio": "Apaixonado por games. Entusiasta de Linux, open-source e evangelista do Python. Atualmente Engenheiro de Plataforma na Vinta Software. Participa da organização do Hackerspace Blumenau e GruPy Blumenau.", + "photo": "images/speakers/joao-paulo-carvalho.jpg", + "talk_title": "Automatizando servidores do Discord com Python ", + "talk_abstract": "Vamos aprender a usar a lib discord.py para criar bots poderosos para Discord. Vamos ver casos de uso bem populares como moderação, minigames, bots de música, até processamento de linguagem natural. Tudo usando as interfaces mais modernas da linguagem Python.", + "external_links": { + "linkedin": "https://linkedin.com/in/jjpaulo2", + "youtube": "https://www.youtube.com/@_jjpaulo2", + "github": "https://github.com/jjpaulo2" + } + }, + { + "name": "Felipe de Morais", + "title": "Software Engineer | Python🐍& FastAPI Django", + "bio": "🎉 FeliPython aqui! Premiado com PSF Fellow 🏅, Community Service Award 🏆 e Dorneles Treméa 🏵️. Uso FastAPI há 1+ ano, obcecado por testes e adoro fazer a comunidade Python crescer! 🚀🐍", + "photo": "images/speakers/felipe-de-morais.jpg", + "talk_title": "Começando com FastAPI: construa sua primeira API em Python", + "talk_abstract": "Aprenda a criar sua primeira API com FastAPI! Neste tutorial para iniciantes, você vai construir uma API REST do zero usando Python de forma prática e descomplicada. 🚀.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/felipe-de-morais/", + "site": "https://felipedemorais.com.br/", + "github": "https://github.com/lipemorais" + } + }, + { + "name": "Perceu Bertoletti", + "title": "Desenvolvedor de Software", + "bio": "Desenvolvedor web(front e back) com Python, PHP, Javascript, CSS, HTML, etc. Desenvolvedor de automações com python.", + "photo": "images/speakers/perceu.jpg", + "talk_title": "Como programar como antigamente (blog em 30 min ou mais)", + "talk_abstract": "Inspirado pela famosa palestra de como fazer um blog em 30 minutos que já foi feita em diversas linguagens, vou apresentar como ainda existe espaço para desenvolvimento web clássico a ideia é usar django para desenvolver um blog rapido e como isso ainda pode e deve ser usado.", + "external_links": { + "site": "https://perceu.github.io/", + "linkedin": "https://www.linkedin.com/in/perceubertoletti/", + "github": "https://github.com/Perceu" + } + }, + { + "name": "Gabriel Menezes", + "title": "Software Test | Test Automation | Motorola Mobility", + "bio": "Especialista em testes e qualidade de software, com mais de 7 anos de experiência na área. Atuo na comunidade Python e fui Big kahuna da Python norte 2023, passando pela Python Brasil 2022, Python Norte Itacoatiara 2024 e Python Brasil RJ 2024. Sou apaixonado por viagens, aviação, drones e videogames.", + "photo": "images/speakers/gabriel-menezes.jpg", + "talk_title": "Testes Inteligentes: O Futuro da Qualidade com IA e Python ", + "talk_abstract": "A Inteligência Artificial vem transformando os testes de software, incluindo geração automática de cenários, priorização de casos e detecção de falhas. Esta palestra aborda como empresas de software têm utilizado IA para aprimorar seus sistemas e otimizar o processo de desenvolvimento.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/gabrielcmenezes/" + } + }, + { + "name": "Cristiano Larrea", + "title": "Data Scientist @ Globo", + "bio": "Bacharel em Cientista de Dados e Inteligência Artificial pela FGV-RJ e Cientista de Dados Sênior na Globo.", + "photo": "images/speakers/cristiano-larrea.jpg", + "talk_title": "VigIA: funcionário virtual de Antifraude com Google ADK", + "talk_abstract": "Esta palestra irá abordar como o VigIA, agente de inteligência artificial desenvolvido com Google ADK e GCP, atua como um “funcionário digital” no time de antifraude da Globo. Serão apresentados os desafios do combate à fraude, a integração entre negócios e tecnologia, a arquitetura técnica do projeto.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/cristianolarrea" + } + }, + { + "name": "Eri Bastos", + "title": "Senior Site Reliability Engineering Manager @ Kinvolk", + "bio": "Gerente Sênior em Site Reliability Engineering, especialista em infraestrutura e cloud computing com mais de 25 anos de experiência em TI. Apaixonado por Python, atua remotamente no Canadá, liderando equipes globais e impulsionando inovação tecnológica.", + "photo": "images/speakers/eri-bastos.jpg", + "talk_title": "Modernizando código legado Python com auxílio de IA", + "talk_abstract": "A palestra mostrará como aplicar inteligência artificial para modernizar código legado em Python. Serão apresentados desafios comuns, ferramentas de IA que apoiam refatoração e análise, além de estratégias práticas para reduzir dívidas técnicas e transformar sistemas antigos em bases modernas.", + "external_links": { + "site": "https://ebastos.dev/" + } + }, + { + "name": "Guilherme Garcia", + "title": "Software Developer", + "bio": "Também conhecido como guites! Trabalho com software a cerca de seis anos, e sou apaixonado por desenvolvimento web, acessibilidade e livre acesso ao conhecimento. Eu toco o projeto cinemaempoa.com.br junto com o time da cumbuca.dev, e estou feliz de participar da Python Sul :-)", + "photo": "images/speakers/guilherme-garcia.jpg", + "talk_title": "Do Regex a LLM: Extraindo horários de cinema de páginas imprevisíveis", + "talk_abstract": "Utilização de Modelos de Linguagem (LLMs) para extração de dados de um blog de cinema local em Porto Alegre que anuncia filmes e horários em posts de texto livre no Blogspot. Em vez de regex ou parsers rígidos, exploramos LLMs via APIs para criar um pipeline resiliente a mudanças de formato.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/guilhermebgarcia" + } + }, + { + "name": "Nilton Pimentel", + "title": "Python Backend Developer | Django • DRF • Open Source Enthusiast", + "bio": "Revisor Técnico | Django 5 for the Impatient (Packt Publishing) | 📘Mentor: CumbucaDev | 👨‍🏫Contribuidor Open Source 🌍", + "photo": "images/speakers/nilton-pimentel.jpg", + "talk_title": "Do Regex a LLM: Extraindo horários de cinema de páginas imprevisíveis", + "talk_abstract": "Utilização de Modelos de Linguagem (LLMs) para extração de dados de um blog de cinema local em Porto Alegre que anuncia filmes e horários em posts de texto livre no Blogspot. Em vez de regex ou parsers rígidos, exploramos LLMs via APIs para criar um pipeline resiliente a mudanças de formato.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/nilton-pimentel/" + } + }, + { + "name": "Belisa Arnhold", + "title": "Developer @ Maravi", + "bio": "Backender apaixonada por dados.", + "photo": "images/speakers/belisa-arnhold.jpg", + "talk_title": "Conversando com os dados da educação brasileira", + "talk_abstract": "Todo ano, o INEP avalia a educação brasileira e disponibiliza os dados das pesquisas. Usando python e IA, vamos construir um chatbot que conversa com eles.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/belisarenata/" + } + }, + { + "name": "Gian Carlo", + "title": "Back End Developer @ Python, Django, AWS", + "bio": "Desenvolvedor python a 8 anos, de Porto Alegre e estou sempre querendo aprender um pouco mais cada dia.", + "photo": "images/speakers/gian-carlo.jpg", + "talk_title": "HTTP Server from scratch: criando seu próprio Gunicorn ", + "talk_abstract": "A ideia é mostrar na prática, com um livro coding, como construir um servidor HTTP minimalista do zero, em python. Vou explicar o que é wsgi, vou explorar diferentes estratégias de concorrência, como uso de threads e processos, criação de sockets e discutir formas básicas de monitoramento.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/gian-carlo-luciano-781064121/" + } + }, + { + "name": "Glória Barboza", + "title": "Engenheira de Software | Tech Lead | Mentora | Palestrante", + "bio": "Pós-graduada em Engenharia de Software, Data Science e IA, com MBA em Gestão Estratégica de Pessoas. Atuo há mais de oito anos na interseção entre pessoas, tecnologia e negócios [nem sempre nessa ordem]. Sou entusiasta de comunidades tech, conectando e desenvolvendo pessoas, além de compartilhar conhecimento e cultura.", + "photo": "images/speakers/gloria-barboza.jpg", + "talk_title": "Do Caos ao Código: Pensamento Computacional Aplicado à Regra de Negócio em Python.", + "talk_abstract": "Como transformar regras de negócio vagas em soluções claras em Python. Exploraremos pensamento computacional, decomposição de requisitos e exemplos práticos, aproximando times técnicos e não técnicos para reduzir ruídos, retrabalhos e atrasos.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/gl%C3%B3ria-r-barboza-84b482378/" + } + }, + { + "name": "Maria Antônia Maia", + "title": "Cofundadora @ Cumbuca Dev | Empreendedora Social | Open Source Enthusiast", + "bio": "Cofundadora da Cumbuca Dev, empreendedora social na área de TI e entusiasta do Open Source. Teve a vida transformada pela tecnologia e hoje apoia novos talentos, acreditando no potencial do código aberto como ferramenta de inclusão e inovação. Pessoas > Tecnologia 💜", + "photo": "images/speakers/maria-antonia-maia.jpg", + "talk_title": "Cumbuca Dev: Fortalecendo o Open Source no Brasil.", + "talk_abstract": "Descubra como a Cumbuca Dev fortalece a comunidade Open Source no Brasil, promovendo inclusão, aprendizado e experiências reais para todas as pessoas interessadas em contribuir.", + "external_links": { + "linkedin": "https://www.linkedin.com/in/antoniamaia/" + } + }, + { + "name": "Douglas Medeiros", + "title": "Tech Lead · PHP Skill Lead · Senior Software Engineer at @PicPay", + "bio": "Engenheiro de Software Sênior no PicPay, onde atuo como Tech Lead e PHP Skill Lead, com foco em alta performance, escalabilidade e sistemas que lidam com bilhões de registros. Criador de conteúdo tech, ativo na comunidade, palestrante e consultor técnico para times que buscam mais eficiência e qualidade nas entregas.", + "photo": "images/speakers/douglas-medeiros.jpg", + "talk_title": "Nem Só de Código Vive o Dev", + "talk_abstract": "O que realmente faz um dev crescer na carreira? Não, não é só saber codar bem. Nesta talk, conto como levei um choque de realidade ao descobrir que comunicação é tão essencial quanto técnica. Se você acha que \"o código fala por si\", talvez esteja perdendo a parte mais importante do jogo.", + "external_links": { + "site": "https://douglasmedeiros.dev/", + "linkedin": "https://www.linkedin.com/in/medeirosinacio/", + "github": "https://github.com/medeirosinacio" + } + }, + { + "name": "Vilson Blanco Dauinheimer (Bwolf)", + "title": "Flutter Developer | GDG Caxias do Sul Organizer | Flutter Meetup Network Organizer | Google for Startups Mentor", + "bio": "Desenvolvedor Flutter, organizador do GDG Caxias do Sul e da Flutter Meetup Network, além de mentor no Google for Startups. Atua em projetos internacionais e comunidades de tecnologia, compartilhando aprendizados sobre carreira e desenvolvimento.", + "photo": "images/speakers/bwolf.jpg", + "talk_title": "Abrindo Porteiras", + "talk_abstract": "Abrir porteiras é enfrentar medos e atravessar fronteiras. Nesta palestra compartilho como enfrentei o medo de trabalhar fora do país, superei barreiras de idioma e cultura e transformei a experiência internacional em evolução profissional.", + "external_links": { + "site": "https://bwolfs2.github.io/", + "linkedin": "https://www.linkedin.com/in/bwolfdev/", + "github": "https://github.com/Bwolfs2" + } + }, + { + "name": "Rodrigo Bastos Vieira", + "title": "Senior Developer | Tech Lead | Vinta Software", + "bio": "Desenvolvendo web desde 2001, e programando em Python e Django desde 2022. Atualmente é desenvolvedor sênior e Tech Lead na Vinta Software, de Recife.", + "photo": "images/speakers/rodrigo-bastos-vieira.jpg", + "talk_title": "Otimize suas consultas: Evitando armadilhas comuns em ORMs Python", + "talk_abstract": "Nesta palestra, vamos mostrar como identificar e corrigir um dos problemas de performance mais comuns e escondidos em ORMs Python: o famoso N+1 queries. A partir de exemplos práticos, você vai entender por que ele ocorre, como detectá‑lo e, principalmente, como evitá‑los." + } +] \ No newline at end of file diff --git a/content/images/keynotes/bruna-ferreira.jpg b/content/images/keynotes/bruna-ferreira.jpg new file mode 100644 index 0000000..a585750 Binary files /dev/null and b/content/images/keynotes/bruna-ferreira.jpg differ diff --git a/content/images/poa_01.jpg b/content/images/poa_01.jpg new file mode 100644 index 0000000..ac1932d Binary files /dev/null and b/content/images/poa_01.jpg differ diff --git a/content/images/poa_02.jpg b/content/images/poa_02.jpg new file mode 100644 index 0000000..00b111a Binary files /dev/null and b/content/images/poa_02.jpg differ diff --git a/content/images/speakers/bernardo-de-castro-removebg-preview.png b/content/images/speakers/bernardo-de-castro-removebg-preview.png new file mode 100644 index 0000000..1cb353a Binary files /dev/null and b/content/images/speakers/bernardo-de-castro-removebg-preview.png differ diff --git a/content/images/speakers/bernardo-de-castro.jpg b/content/images/speakers/bernardo-de-castro.jpg index 045fc52..646d1a9 100644 Binary files a/content/images/speakers/bernardo-de-castro.jpg and b/content/images/speakers/bernardo-de-castro.jpg differ diff --git a/content/images/speakers/bwolf.jpg b/content/images/speakers/bwolf.jpg index 93815da..7caadaa 100644 Binary files a/content/images/speakers/bwolf.jpg and b/content/images/speakers/bwolf.jpg differ diff --git a/content/images/speakers/douglas-medeiros.jpg b/content/images/speakers/douglas-medeiros.jpg index a0dec89..e997791 100644 Binary files a/content/images/speakers/douglas-medeiros.jpg and b/content/images/speakers/douglas-medeiros.jpg differ diff --git a/content/images/speakers/gian-carlo.jpg b/content/images/speakers/gian-carlo.jpg index 586f194..e828b0e 100644 Binary files a/content/images/speakers/gian-carlo.jpg and b/content/images/speakers/gian-carlo.jpg differ diff --git a/content/images/speakers/gloria-barboza.jpg b/content/images/speakers/gloria-barboza.jpg index 3f2347e..106d9c1 100644 Binary files a/content/images/speakers/gloria-barboza.jpg and b/content/images/speakers/gloria-barboza.jpg differ diff --git a/content/images/speakers/maria-antonia-maia.jpg b/content/images/speakers/maria-antonia-maia.jpg index 91532a1..7830317 100644 Binary files a/content/images/speakers/maria-antonia-maia.jpg and b/content/images/speakers/maria-antonia-maia.jpg differ diff --git a/content/images/speakers/nilton-pimentel.jpg b/content/images/speakers/nilton-pimentel.jpg index 20564e5..3a86784 100644 Binary files a/content/images/speakers/nilton-pimentel.jpg and b/content/images/speakers/nilton-pimentel.jpg differ diff --git a/src/assets/scss/main.scss b/src/assets/scss/main.scss index e27a71b..5868c74 100644 --- a/src/assets/scss/main.scss +++ b/src/assets/scss/main.scss @@ -29,6 +29,7 @@ @import "./sections/buy-ticket"; // buy-ticket/tickets section @import "./sections/keynotes"; // Keynote speakers section @import "./sections/schedule"; // Schedule section +@import "./sections/speakers"; // Speakers section @import "./pages/single-post"; // Single blog post layout @import "./pages/content-list"; // Content list page layout diff --git a/src/assets/scss/sections/_speakers.scss b/src/assets/scss/sections/_speakers.scss new file mode 100644 index 0000000..9828ebd --- /dev/null +++ b/src/assets/scss/sections/_speakers.scss @@ -0,0 +1,106 @@ +.speakers { + @extend .section; + text-align: left; + + .section-header { + margin-bottom: $space-8; + text-align: center; + } +} + +.speakers .speakers-grid { + display: grid; + gap: $space-2; + + @media (min-width: $breakpoint-md) { + grid-template-columns: repeat(4, 1fr); + gap: $space-6; + } + + .speaker-card { + @extend .card; + box-shadow: $box-shadow-md; + border-radius: $radius-4; + border: 1px solid var(--color-border); + background-color: var(--color-bg); + height: auto; + + .speaker-photo { + width: 100%; + height: 100%; + + figure { + margin: 0; + width: 100%; + aspect-ratio: 1/1; + border-radius: $radius-4; + overflow: hidden; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + } + } + + .speaker-info { + width: 100%; + height: 100%; + padding: $space-4; + margin-top: -4.5rem; + background-color: var(--color-bg); + border-top-left-radius: $radius-4; + border-top-right-radius: $radius-4; + + box-shadow: + 0 -10px 24px -12px rgba(0, 0, 0, 0.22), + 0 -2px 6px rgba(0, 0, 0, 0.08); + will-change: box-shadow; + + @include flex-column-start; + + .speaker-name { + font-size: 1.5rem; + font-weight: bold; + margin-bottom: $space-2; + } + + .speaker-title { + font-size: 0.85rem; + font-weight: 600; + margin-bottom: $space-2; + opacity: 0.8; + } + + .speaker-bio { + font-size: 0.85rem; + margin-top: $space-4; + } + + .external-links { + margin-top: auto; + padding-top: $space-6; + @include flex-start; + gap: $space-3; + + a { + margin: 0; + padding: 0; + color: var(--color-text); + + &:hover { + color: var(--color-accent); + } + + svg { + width: 1.5rem; + height: 1.5rem; + fill: currentColor; + stroke: currentColor; + } + } + } + } + } +} diff --git a/src/i18n/en.toml b/src/i18n/en.toml index 1889168..4fe02dc 100644 --- a/src/i18n/en.toml +++ b/src/i18n/en.toml @@ -155,4 +155,10 @@ other = "Testing and Quality" other = "Schedule" [section_schedule_description] -other = "Check out the full schedule of talks, workshops, and activities planned for the event." \ No newline at end of file +other = "Check out the full schedule of talks, workshops, and activities planned for the event." + +[section_speakers_title] +other = "Speakers" + +[section_speakers_description] +other = "Meet the speakers who will share their knowledge and experiences during the event." \ No newline at end of file diff --git a/src/i18n/es.toml b/src/i18n/es.toml index f9d116b..668e6c4 100644 --- a/src/i18n/es.toml +++ b/src/i18n/es.toml @@ -154,4 +154,10 @@ other = "Pruebas y Calidad" other = "Agenda" [section_schedule_description] -other = "Consulta la agenda completa del evento, incluyendo charlas, talleres y actividades especiales para cada día." \ No newline at end of file +other = "Consulta la agenda completa del evento, incluyendo charlas, talleres y actividades especiales para cada día." + +[section_speakers_title] +other = "Oradores" + +[section_speakers_description] +other = "Conoce a los oradores que compartirán sus conocimientos y experiencias durante el evento." \ No newline at end of file diff --git a/src/i18n/pt-br.toml b/src/i18n/pt-br.toml index 0ab749f..3030dfc 100644 --- a/src/i18n/pt-br.toml +++ b/src/i18n/pt-br.toml @@ -155,4 +155,11 @@ other = "Testes e Qualidade" other = "Programação" [section_schedule_description] -other = "Confira a programação completa do evento, incluindo palestras, workshops e atividades especiais planejadas para cada dia." \ No newline at end of file +other = "Confira a programação completa do evento, incluindo palestras, workshops e atividades especiais planejadas para cada dia." + + +[section_speakers_title] +other = "Palestrantes" + +[section_speakers_description] +other = "Conheça os palestrantes que compartilharão seus conhecimentos e experiências durante o evento." \ No newline at end of file diff --git a/src/layouts/_partials/sections/speakers.html b/src/layouts/_partials/sections/speakers.html new file mode 100644 index 0000000..8a2930b --- /dev/null +++ b/src/layouts/_partials/sections/speakers.html @@ -0,0 +1,39 @@ +{{ $content := .Site.Data.speakers }} + + +
+
+
+

+ {{ i18n "section_speakers_title" }} +

+

+ {{ i18n "section_speakers_description" }} +

+
+ +
+ {{ range $index, $speaker := $content }} +
+
+ {{ partial "core/image.html" (dict "src" $speaker.photo "alt" $speaker.name "avatar" true "className" "avatar") }} +
+
+

{{ $speaker.name }}

+

{{ $speaker.title }}

+

{{ $speaker.bio }}

+ +
+
+ {{ end }} +
+ +
+ +
\ No newline at end of file diff --git a/src/layouts/home.html b/src/layouts/home.html index 9682d33..3795346 100644 --- a/src/layouts/home.html +++ b/src/layouts/home.html @@ -1,15 +1,16 @@ {{ define "main" }} -{{ partial "sections/hero.html" . }} {{/* Hero section: main banner or introduction */}} -{{ partial "sections/features.html" . }} {{/* Features section: highlights key features */}} -{{ partial "sections/keynotes.html" . }} {{/* Keynotes section: keynote speakers */}} -{{/* partial "sections/cfp.html" . /*}} {{/* Call for Papers section: submission info */}} -{{ partial "sections/buy-ticket.html" . }} {{/* Buy a ticket */}} -{{ partial "sections/schedule.html" . }} {{/* Schedule section: event schedule */}} -{{ partial "sections/blog.html" . }} {{/* Blog section: latest news or posts */}} -{{ partial "sections/sponsors.html" . }} {{/* Sponsors section: sponsor logos/info */}} -{{ partial "sections/supporters.html" . }} {{/* Supporters section: supporter logos/info */}} -{{ partial "sections/location.html" . }} {{/* Location section: event or company location */}} -{{ partial "sections/subscribe.html" . }} {{/* Subscribe section: newsletter signup */}} +{{ partial "sections/hero.html" . }} {{/* Hero section: main banner or introduction */}} +{{ partial "sections/features.html" . }} {{/* Features section: highlights key features */}} +{{ partial "sections/buy-ticket.html" . }} {{/* Buy a ticket */}} +{{ partial "sections/keynotes.html" . }} {{/* Keynotes section: keynote speakers */}} +{{/* partial "sections/cfp.html" . */}} {{/* Call for Papers section: submission info */}} +{{ partial "sections/schedule.html" . }} {{/* Schedule section: event schedule */}} +{{ partial "sections/speakers.html" . }} {{/* Speakers section: list of speakers */}} +{{ partial "sections/blog.html" . }} {{/* Blog section: latest news or posts */}} +{{ partial "sections/sponsors.html" . }} {{/* Sponsors section: sponsor logos/info */}} +{{ partial "sections/supporters.html" . }} {{/* Supporters section: supporter logos/info */}} +{{ partial "sections/location.html" . }} {{/* Location section: event or company location */}} +{{ partial "sections/subscribe.html" . }} {{/* Subscribe section: newsletter signup */}} -{{ end }} +{{ end }} \ No newline at end of file