A multilingual technical blog about practical Java backend engineering.
Built with AstroPaper i18n — a fork of AstroPaper with multilingual support.
Java Guru shares practical knowledge for Java backend developers, covering:
- Java Core — OOP, Collection, Stream, Exception, Generics, JVM
- Spring Boot — REST API, Security, Transaction, JPA, Backend Architecture
- Database — MySQL, PostgreSQL, Indexes, Query Optimization
- System Design — Cache, Queue, Retry, Idempotency, Distributed Systems
- Performance — JVM Tuning, GC, Slow Queries, Memory Leaks, Profiling
- Clean Code — Refactoring, Design Patterns, Testing, Maintainable Code
- Career — Roadmap, Interviews, Real-world Experience
- Astro — Static site generator
- TypeScript — Type safety
- Tailwind CSS — Utility-first styling
- Markdown / MDX — Content authoring
- Pagefind — Static search
- Satori — Dynamic OG image generation
| Language | Locale | Default Route | Example |
|---|---|---|---|
| Tiếng Việt | vi |
/ |
/posts/... |
| English | en |
/en/ |
/en/posts/... |
pnpm installpnpm devVisit http://localhost:4321 for Vietnamese (default) and http://localhost:4321/en/ for English.
Create a .md file under src/data/blog/vi/:
src/data/blog/vi/java-core/my-post.mdFrontmatter example:
---
title: "Tiêu đề bài viết"
description: "Mô tả ngắn gọn."
pubDatetime: 2026-06-19T10:00:00+07:00
featured: false
draft: false
tags:
- java
- java-core
---Create a .md file under src/data/blog/en/:
src/data/blog/en/java-core/my-post.mdFrontmatter example:
---
title: "Post Title"
description: "A short description."
pubDatetime: 2026-06-19T10:00:00+07:00
featured: false
draft: false
tags:
- java
- java-core
---pnpm buildpnpm preview| Setting | Value |
|---|---|
| Framework preset | Astro |
| Build command | pnpm build |
| Build output directory | dist |
| Production branch | main |
java-guru/
├── public/ # Static assets (favicon, images, fonts)
├── src/
│ ├── assets/ # Icons and images
│ ├── components/ # Astro components
│ ├── content.config.ts # Content collection schema
│ ├── config.ts # Site configuration
│ ├── constants.ts # Social links and share links
│ ├── data/
│ │ ├── about/ # About pages (about-vi.md, about-en.md)
│ │ └── blog/
│ │ ├── vi/ # Vietnamese blog posts
│ │ │ ├── java-core/
│ │ │ ├── spring-boot/
│ │ │ ├── database/
│ │ │ ├── system-design/
│ │ │ ├── performance/
│ │ │ ├── clean-code/
│ │ │ └── career/
│ │ └── en/ # English blog posts
│ │ ├── java-core/
│ │ ├── spring-boot/
│ │ ├── database/
│ │ ├── system-design/
│ │ ├── performance/
│ │ ├── clean-code/
│ │ └── career/
│ ├── i18n/
│ │ ├── config.ts # Locale configuration
│ │ ├── locales/
│ │ │ ├── vi.ts # Vietnamese translations
│ │ │ └── en.ts # English translations
│ │ ├── types.ts # Translation type definitions
│ │ └── utils.ts # i18n utility functions
│ ├── layouts/ # Page layouts
│ ├── pages/ # Route pages
│ ├── styles/ # Global styles
│ └── utils/ # Utility functions
├── astro.config.ts # Astro configuration
├── package.json
├── tsconfig.json
└── tailwind.config.ts
Phạm Thanh Hưng (Harry)
Software Engineer (Full-stack)
GitHub: hungpt99-dev
Email: thanhhungpham6@gmail.com