# The licence covers the code but reserves the name and the logo

> chanhdai.com is a developer portfolio template built on Next.js 16, Tailwind CSS v4 and shadcn/ui, doubling as a component registry. Everything is open for forking with one written exception, the author's name and logo, which are reserved under a separate trademark policy.

**ncdai/chanhdai.com** — A pixel-perfect dev portfolio and shadcn registry.

- Repository: https://github.com/ncdai/chanhdai.com
- Website: https://chanhdai.com
- Stars: 2,402 · Forks: 329
- Language: TypeScript
- License: MIT
- Published: 2026-10-12 · Updated: 2026-10-12 · Language: en
- Canonical page: https://hysenlabs.com/projects/ncdai-chanhdai-com

## Everything is open except the name and the logo

The most consequential paragraph in this repository qualifies the standard one. Everything is covered by the MIT terms with one exception: the author's name and logo, which fall under a separate trademark and brand policy in TRADEMARK.md. The permission that follows is unusually broad and unusually clear about its condition. The code and the writing are yours to fork, copy, quote and translate, and the instruction is to remove all personal information and swap the branding before publishing your website. So the code is open with the identity reserved, and an automated compliance scan finds nothing to object to. If you are planning to fork and deploy, do two things first: read the trademark policy, and find every place the name and logo appear.

## Three dependencies, and one of them is a version number to watch

The stack section is three lines: Next.js 16, Tailwind CSS v4, and shadcn/ui. That is the whole dependency story, and each entry carries a decision. Next.js 16 is the framework, and the featured list adds what it gives you in practice: SEO optimization with JSON-LD schema, a sitemap and robots handling, installability as a PWA, light and dark themes, vCard integration for a contact card, spam-protected email, and an llms.txt file described as AI-ready. Analytics is OpenPanel, and the sponsors section shows Claude, OpenPanel and PostHog supporting the project, with a platinum sponsor row beneath them. The Tailwind version matters more than it looks in a template: v4 changed how a project is configured, so copying this repository's setup into an older Tailwind codebase is not a matter of copying files.

## The registry is the point, not the portfolio

Most portfolio templates are a one-off design, and this one ships a distribution mechanism for its pieces. The registry section describes building and distributing reusable components, hooks and pages through a custom registry powered by the shadcn CLI. Each entry is documented with a live preview, code snippets, readable code blocks, and one-click command blocks covering pnpm, npm, yarn and bun. That last detail is the point of a registry: the install path is a command you paste, and the components arrive as source in your own project rather than as a dependency in node_modules, which is the whole premise of the shadcn approach and why the one-click blocks list four package managers. For a developer building a portfolio, that means the same components this site uses are available to fork, and the difference between this and a component library is who owns the code afterwards.

## Blog posts and component docs share one MDX layer

The content system is described as centralized and document-driven, powered by MDX, and the interesting decision is that the same layer serves both the blog and the component documentation. A unified content layer means one set of conventions rather than two, category-based organization gives both a taxonomy, and the features built on top are shared: raw .md endpoints described as being for AI readability, syntax highlighting with code blocks, dynamic OG images for link previews, and an RSS feed for distribution. Since the registry entries carry their own documentation, that documentation has to come from somewhere, and putting it in the same system as the blog is what lets one build feed the other. The trade-off is that everything you publish is a document in one pipeline, so a component doc and a blog post share whatever conventions that pipeline imposes, including the frontmatter shape and the category structure.

## Machine-readable content is a first-class feature here

Three of the featured items exist for machines rather than for people. The AI-ready llms.txt is the first, and it points at llmstxt.org for the format. The second is the raw .md endpoints, which serve the underlying markdown for any document rather than the rendered page. The third is dynamic OG images, which generate the preview image a link unfurls into rather than shipping a static one per post. Put together with JSON-LD structured data, a sitemap and robots handling, the SEO section describes a site built to be read by crawlers, feeds and models as carefully as by browsers. For a template this is a defensible bet rather than decoration: the same documents that render a page are also available as text, so a reader, a feed reader and a model all consume the same source. The cost is that the content has to be written in a way that survives being read without the styling around it.

## vCard, PWA and protected email are the small touches

Three features are easy to dismiss and easy to notice when missing. vCard integration means the contact details in the portfolio can be saved as a contact card by a visitor's phone rather than copied as text. Installability as a PWA means the site can sit on a home screen and open without a browser chrome, which for a portfolio is a differentiator on mobile where most traffic lands. Spam-protected email is the third: rather than publishing an address that gets scraped, the template has a mechanism in front of it, which is the kind of thing a developer notices first because their own address is the one being harvested. None of these are architectural, and all three are the sort of detail that separates a template someone cloned from one someone finished.

## Where chanhdai.com is the wrong choice

Four cases. The first is a fork published as-is, which the terms explicitly ask you not to do. That is not a technical obstacle but it is a real one, because a portfolio's value is often tied to the person it is about, and a template whose identity must be removed is the wrong template for a fork that intends to keep the same name. The second is someone who wants a blog rather than a portfolio. The content system can carry long-form posts, but the design, the layout and the vCard and OG image work all point at a personal site with one author. The third is a team. There is no sign of multi-author support, no draft workflow and no editorial roles in what is described, so a publication with several writers would be extending it rather than using it. The fourth is anyone on an older Tailwind or Next.js setup. Next.js 16 and Tailwind v4 are the baseline, and adopting the template means moving to them, which for an existing application is a migration rather than an install.

## Conclusion

chanhdai.com suits a developer who wants a portfolio rather than a blog and wants the components to stay editable in their own project through the shadcn CLI. It does not suit a fork you intend to publish under the original author's identity, and not a multi-author publication with a draft workflow. Before adopting, read TRADEMARK.md since the open grant is explicitly qualified, replace the branding and every piece of personal information before you publish, and expect to write your own content in MDX.

## FAQ

### What is chanhdai.com?

A pixel-perfect developer portfolio template built on Next.js 16, Tailwind CSS v4 and shadcn/ui, which also works as a shadcn registry for distributing its components, hooks and pages through the shadcn CLI.

### Can I use chanhdai.com commercially?

The code and writing are MIT licensed and you may fork, copy, quote and translate them, but the licence section names one exception: the author's name and logo are covered by a separate trademark and brand policy. You must remove all personal information and swap the branding before publishing.

### How does the registry work?

It is a custom registry powered by the shadcn CLI. Each entry ships a live preview, code snippets, readable code blocks and one-click command blocks for pnpm, npm, yarn and bun, so components arrive as source in your project.

### How are blog posts written in chanhdai.com?

Through a centralized MDX document system that serves both blog posts and component docs, with category-based organization, syntax highlighting, dynamic OG images, an RSS feed and raw .md endpoints for machine readability.

### What analytics does chanhdai.com use?

OpenPanel, which is named in the featured list. The repository also lists Claude, OpenPanel and PostHog as sponsors of the project, with a platinum sponsor tier below them.

## Sources

- [Issues](https://github.com/ncdai/chanhdai.com/issues)
- [License: MIT](https://github.com/ncdai/chanhdai.com/blob/main/LICENSE)
- [ncdai/chanhdai.com on GitHub](https://github.com/ncdai/chanhdai.com)
- [Project website](https://chanhdai.com)
- [README](https://github.com/ncdai/chanhdai.com/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ncdai-chanhdai-com
