Overview
DevOrbit is the place where I wrote down what I learn: programming notes, project write-ups and the story of becoming a fullstack developer. It is both a blog engine and a small personal site — articles, an About page with animated tech-stack icons, and a certificates section — released as open source so others can fork it.
Goals
- Writing should be frictionless. A post is one Markdown file with front matter; publishing is a commit.
- Reading should be the product. Minimal chrome, strong typography, responsive layouts, dark mode.
- It should be cheap to run and easy to trust. Static output on Vercel, no database, quality gates in CI.
How it works
Posts live in a _posts/ folder as Markdown with YAML front matter (title, excerpt, cover image, date, author, OG image). Small helpers in src/lib read the files and convert Markdown to HTML with remark/rehype plugins, including syntax highlighting for code. Next.js App Router pages render the list and each article at build time.
- Content
- _posts/*.mdYAML front matter + Markdown
- Build
- lib helpersParse front matter · Markdown → HTML (remark / rehype)
- TypeScript interfacesPost and author shapes
- App
- Next.js App Routerposts · about · certificates
- Delivery
- VercelStatic pages · PWA
- GiscusComments via GitHub Discussions
- Readers
- Data store
- Compute / service
- External API
- Client
There is deliberately no CMS and no database: the repository is the content store, which also means every post has a history, a diff and a rollback for free.
Features
- Markdown blog with syntax-highlighted code and per-post SEO metadata.
- Comments through Giscus, backed by GitHub Discussions, so readers use an identity they already have and there is nothing to host or moderate separately.
- About page with animated tech-stack icons, a certificates section, project info modals and a scroll-to-top button.
- Dark mode, social sharing and PWA support.
Engineering quality
Even for a personal blog I wanted the project to be a good template for others:
- Prettier for consistent formatting.
- Husky and lint-staged to run checks before each commit.
- Vitest and React Testing Library for unit and component tests.
- GitHub Actions for CI/CD on every push.
- TypeScript interfaces for post and author shapes, so a malformed front matter field is a compile-time or build-time error, not a broken page.
Lessons that fed the next project
DevOrbit proved that a file-based blog is enough, and it also exposed its limits: richer layouts and navigation wanted a more structured architecture. Those lessons shaped the blog in my personal portfolio, which keeps the same file-based content model but adds a feature-based code structure, RSS, structured data and stricter tests.
