Skip to content

Commit 0645874

Browse files
committed
feat: fix build errors and add footer
1 parent 6fca481 commit 0645874

4 files changed

Lines changed: 95 additions & 33 deletions

File tree

src/app/blog/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { BlogCard } from '../components/BlogCard';
44
import { Navbar } from '../components/Navbar';
55
import { SearchBar } from '../components/SearchBar';
6-
import { useEffect, useState, useMemo } from 'react';
6+
import { useEffect, useState, useMemo, useCallback } from 'react';
77

88
interface Gist {
99
id: string;
@@ -159,7 +159,7 @@ export default function Blog() {
159159
}
160160
};
161161

162-
const loadAllGists = async () => {
162+
const loadAllGists = useCallback(async () => {
163163
try {
164164
let currentPage = 1;
165165
let hasMore = true;
@@ -179,11 +179,11 @@ export default function Blog() {
179179
setError(err instanceof Error ? err.message : 'Erro ao carregar os gists');
180180
setLoading(false);
181181
}
182-
};
182+
}, []);
183183

184184
useEffect(() => {
185185
loadAllGists();
186-
}, []);
186+
}, [loadAllGists]);
187187

188188
const filteredGists = useMemo(() => {
189189
if (!searchTerm) return gists;
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"use client";
2+
3+
import React from "react";
4+
import Link from "next/link";
5+
6+
export const Footer: React.FC = () => {
7+
const currentYear = new Date().getFullYear();
8+
9+
return (
10+
<footer className="bg-gray-800 text-white py-8 mt-12">
11+
<div className="container mx-auto px-4">
12+
<div className="flex flex-col md:flex-row justify-between items-center">
13+
<div className="mb-4 md:mb-0">
14+
<h2 className="text-2xl font-bold">HelpDev</h2>
15+
<p className="text-gray-400 mt-2">Compartilhando conhecimento em desenvolvimento de software desde 2013</p>
16+
</div>
17+
18+
<div className="flex flex-col md:flex-row gap-8">
19+
<div>
20+
<h3 className="text-lg font-semibold mb-2">Links</h3>
21+
<ul className="space-y-1">
22+
<li><Link href="/" className="text-gray-400 hover:text-white transition-colors">Home</Link></li>
23+
<li><Link href="/about" className="text-gray-400 hover:text-white transition-colors">Sobre</Link></li>
24+
<li><Link href="/articles" className="text-gray-400 hover:text-white transition-colors">Artigos</Link></li>
25+
<li><Link href="/projects" className="text-gray-400 hover:text-white transition-colors">Projetos</Link></li>
26+
<li><Link href="/blog" className="text-gray-400 hover:text-white transition-colors">Blog</Link></li>
27+
</ul>
28+
</div>
29+
30+
<div>
31+
<h3 className="text-lg font-semibold mb-2">Social</h3>
32+
<ul className="space-y-1">
33+
<li><a href="https://github.com/gbzarelli" className="text-gray-400 hover:text-white transition-colors" target="_blank" rel="noopener noreferrer">GitHub</a></li>
34+
<li><a href="https://twitter.com/gbzarelli" className="text-gray-400 hover:text-white transition-colors" target="_blank" rel="noopener noreferrer">Twitter</a></li>
35+
<li><a href="https://www.linkedin.com/in/guilherme-biff-zarelli/" className="text-gray-400 hover:text-white transition-colors" target="_blank" rel="noopener noreferrer">LinkedIn</a></li>
36+
</ul>
37+
</div>
38+
</div>
39+
</div>
40+
41+
<div className="border-t border-gray-700 mt-8 pt-6 text-center text-gray-400">
42+
<p>&copy; {currentYear} HelpDev. Todos os direitos reservados. Site online desde 2013.</p>
43+
</div>
44+
</div>
45+
</footer>
46+
);
47+
};
48+
49+
export default Footer;
50+

src/app/layout.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { Metadata, Viewport } from "next";
22
import { Inter } from "next/font/google";
33
import "./globals.css";
4+
import Footer from "./components/Footer";
45

56
const inter = Inter({ subsets: ["latin"] });
67

@@ -74,7 +75,10 @@ export default function RootLayout({
7475
}) {
7576
return (
7677
<html lang="pt-BR">
77-
<body className={inter.className}>{children}</body>
78+
<body className={inter.className} suppressHydrationWarning>
79+
{children}
80+
<Footer />
81+
</body>
7882
</html>
7983
);
8084
}

src/app/page.tsx

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Navbar } from './components/Navbar';
66
import { ArticleCard } from './components/ArticleCard';
77
import { BlogCard } from './components/BlogCard';
88
import { ProjectCard } from './components/ProjectCard';
9-
import { FaLinkedin, FaGithub, FaMedium, FaEnvelope, FaInstagram, FaArrowRight } from 'react-icons/fa';
9+
import { FaGithub, FaMedium, FaEnvelope, FaInstagram, FaArrowRight } from 'react-icons/fa';
1010

1111
// Featured content data
1212
const featuredArticles = [
@@ -32,44 +32,52 @@ const featuredArticles = [
3232

3333
const featuredProjects = [
3434
{
35-
title: "Clean Architecture Demo",
36-
description: "Projeto demonstrativo de uma arquitetura limpa e modular para aplicações Java/Spring Boot.",
37-
imageUrl: "https://raw.githubusercontent.com/gbzarelli/clean-architecture-delivery-app-sample/main/images/diagram.png",
38-
link: "https://github.com/gbzarelli/clean-architecture-delivery-app-sample",
39-
languages: ["Java", "Spring Boot", "Docker"]
35+
title: "Java Modular Architecture",
36+
description: "Uma arquitetura modular em Java que demonstra boas práticas de desenvolvimento e padrões de projeto, incluindo exemplos práticos de implementação.",
37+
imageUrl: "https://github.com/helpdeveloper/java-modular-architecture/raw/main/images/arch.png",
38+
link: "https://github.com/helpdeveloper/java-modular-architecture",
39+
languages: ["Java", "Spring Boot"]
4040
},
4141
{
42-
title: "Android UX Playground",
43-
description: "Exemplos e demonstrações de padrões modernos de UI/UX para desenvolvimento Android.",
44-
imageUrl: "https://raw.githubusercontent.com/gbzarelli/android-simple-download-manager/main/screenshots/main_screen.png",
45-
link: "https://github.com/gbzarelli/android-simple-download-manager",
46-
languages: ["Kotlin", "Android", "Material Design"]
42+
title: "Java Architecture Template",
43+
description: "Template para arquitetura Java seguindo as melhores práticas e padrões modernos de desenvolvimento de software.",
44+
imageUrl: "https://github.com/helpdeveloper/java-architecture-template/raw/main/.images/banner.webp",
45+
link: "https://github.com/helpdeveloper/java-architecture-template",
46+
languages: ["Java", "Spring Boot", "Docker"]
4747
},
4848
{
49-
title: "Microservices Toolkit",
50-
description: "Conjunto de ferramentas para desenvolvimento e monitoramento de arquiteturas de microserviços.",
51-
imageUrl: "https://via.placeholder.com/800x450?text=Microservices+Toolkit",
52-
link: "https://github.com/gbzarelli/microservices-toolkit",
53-
languages: ["Java", "Spring Cloud", "Docker", "Kubernetes"]
49+
title: "Finite State Machine - DevPira 2020",
50+
description: "Implementação de máquinas de estado finito (FSM) em Java e Python, apresentada no evento DevPira 2020. Inclui exemplos práticos como um sistema de delivery e um jogo de captura de Pokémon.",
51+
imageUrl: "https://github.com/gbzarelli/fsm-devpira-2020/raw/main/images/logo-event.png",
52+
link: "https://github.com/gbzarelli/fsm-devpira-2020",
53+
languages: ["Java", "Python"]
5454
}
5555
];
5656

5757
const featuredBlogPosts = [
5858
{
59-
title: "Como estruturar projetos Java para máxima produtividade",
60-
description: "Dicas práticas para organizar seu código e aumentar a eficiência do desenvolvimento em equipe.",
61-
date: "22 Mar 2025",
62-
link: "https://medium.com/@guilherme.zarelli/estruturando-projetos-java-123abc",
63-
imageUrl: "https://miro.medium.com/v2/resize:fit:1100/format:webp/1*ANetWgPAOkjvBM05WxT4nw.png",
64-
tags: ["java", "architecture", "clean"]
59+
title: "Entendendo a Escala Horizontal em Bancos NoSQL",
60+
description: "Uma análise detalhada sobre a escalabilidade horizontal em bancos de dados NoSQL, incluindo conceitos e práticas.",
61+
date: "21 Apr 2025",
62+
link: "https://gist.github.com/gbzarelli/c43b7657bb63d917f3c33254cd6e8d8b",
63+
imageUrl: "https://images.unsplash.com/photo-1544383835-bda2bc66a55d?w=800&auto=format&fit=crop&q=60",
64+
tags: ["database", "nosql", "architecture"]
65+
},
66+
{
67+
title: "Comparação dos Principais Garbage Collectors da JVM",
68+
description: "Uma análise comparativa dos diferentes garbage collectors disponíveis na JVM, ajudando a escolher o mais adequado para cada caso.",
69+
date: "04 Feb 2025",
70+
link: "https://gist.github.com/gbzarelli/7996424d114392551205722363925a97",
71+
imageUrl: "https://images.unsplash.com/photo-1527474305487-b87b222841cc?w=800&auto=format&fit=crop&q=60",
72+
tags: ["java", "jvm", "performance"]
6573
},
6674
{
67-
title: "Técnicas avançadas de debugging para desenvolvedores Java",
68-
description: "Métodos e ferramentas que vão além do básico para resolver problemas complexos de performance.",
69-
date: "10 Fev 2025",
70-
link: "https://medium.com/@guilherme.zarelli/debugging-avancado-java-456def",
71-
imageUrl: "https://miro.medium.com/v2/resize:fit:786/format:webp/0*5YPydAOHKnwAyAA9.png",
72-
tags: ["java", "performance", "debugging"]
75+
title: "Configurações de containers para aplicações JVM",
76+
description: "Guia prático sobre configurações de recursos e optimizações para containers que executam aplicações Java em ambientes containerizados.",
77+
date: "12 Jan 2025",
78+
link: "https://gist.github.com/gbzarelli/ada40a628da0aba1fd2fe2d864aac792",
79+
imageUrl: "https://images.unsplash.com/photo-1605745341112-85968b19335b?w=800&auto=format&fit=crop&q=60",
80+
tags: ["java", "containers", "kubernetes"]
7381
}
7482
];
7583

0 commit comments

Comments
 (0)