Personal portfolio and blog of Carlos Alarcon (@NullKDev) — Android developer specialized in Kotlin, Flutter, and Kotlin Multiplatform.
🌐 Live site: nullkdev.github.io
- Astro 5 — static site generator
- React — interactive islands (
client:idle) - Tailwind CSS 4 — utility-first styling
- MDX — content with components
- Expressive Code — syntax-highlighted code blocks
- Flexsearch — client-side full-text search
- GitHub Actions + GitHub Pages — CI/CD and hosting
pnpm install
pnpm dev # http://localhost:1234| Command | Description |
|---|---|
pnpm dev |
Start dev server on port 1234 |
pnpm build |
Type-check + build to dist/ |
pnpm preview |
Preview the built site locally |
pnpm prettier |
Format all TS/TSX/CSS/Astro files |
src/
├── components/ # Reusable UI components
├── content/ # Blog posts, projects, photos, authors (MDX/Markdown)
├── i18n/ # Translation dictionaries (en.ts, es.ts)
├── layouts/ # Page layouts
├── lib/ # Data fetching utilities and helpers
├── pages/ # File-based routing
└── styles/ # Global CSS and typography
- Blog with multi-part series (subposts) support
- Projects portfolio with subproject nesting
- Photo gallery with camera metadata
- Tools collection (password generator, subnet calculator, JSON formatter, and more)
- Bilingual — English (default) and Spanish, with smart per-page language toggle
- Dark mode — user preference persisted to localStorage
- Full-text search — powered by Flexsearch, prebuilt at compile time
- SEO — OG images, sitemap, RSS feed, schema.org structured data
Internal project docs live in docs/:
| Doc | Description |
|---|---|
| architecture.md | Project structure and key files |
| content-blog.md | Writing posts and subposts |
| content-projects.md | Adding projects |
| content-photos.md | Creating photo albums |
| content-schema.md | Frontmatter field reference |
| i18n.md | Bilingual system (EN/ES) |
| tools.md | Adding a new tool page |
| components.md | Component catalog |
| styling.md | Tailwind, CSS variables, dark mode |
| seo.md | OG images, sitemap, RSS, schema.org |
| deployment.md | GitHub Actions and Pages setup |
Pushing to main triggers the GitHub Actions workflow which builds and deploys to GitHub Pages automatically. See docs/deployment.md for details.
Content (posts, photos) © Carlos Alarcon. Code is available for reference.