Personal portfolio, blog, and freelance sales website for berutu.dev.
- Astro
- React (interactive components only)
- TypeScript
- Tailwind CSS
- MDX content collections
npm install
npm run devApp runs on http://localhost:4321.
npm run build
npm run previewPrimary localized routes:
/en/*/id/*
Key pages:
/en,/id/en/work,/id/work/en/blog,/id/blog/en/blog/[slug],/id/blog/[slug]/en/services,/id/services/en/about,/id/about/en/contact,/id/contact
Legacy compatibility routes:
/blogredirects to/en/blog(301)/blog/[slug]redirects to/en/blog/[slug](301)
Blog and work content is managed with Astro content collections:
src/content/blogsrc/content/work
Language is declared per content file using frontmatter lang: en | id.
Brand assets are stored in public/brand:
logo-primary.png(light mode logo)logo-reversed.png(dark mode logo)icon-on-color.png(favicon/app icon/social fallback image)logo-monochrome.png(fallback/document use only)
Current usage:
- Header:
- Desktop: theme-aware full logo
- Mobile:
icon-on-color.png
- Footer: theme-aware full logo
- SEO/favicon:
- favicon + apple-touch-icon use
icon-on-color.png - default social image fallback uses
icon-on-color.png
- favicon + apple-touch-icon use
src/i18n.ts(locale detection + localized path helpers)src/components/layout/SiteHeader.astrosrc/components/layout/SiteFooter.astrosrc/components/layout/SEO.astrosrc/pages/[lang]/blog/index.astrosrc/pages/[lang]/blog/[slug].astrosrc/pages/blog/index.astro(redirect)src/pages/blog/[slug].astro(redirect)