NOVA is a small private observatory. It is a bilingual blog for writing over time, and an experiment in making a cosmic aesthetic feel restrained.
The project starts from an empty directory with no off-the-shelf theme. Visuals, the content pipeline, search, and static generation all live in the same repository.
Design goals
- let typography and writing lead, with the starfield only handling atmosphere;
- make Chinese and English equal citizens rather than a translation-plugin afterthought;
- keep every article crawlable and readable with JavaScript disabled;
- make motion optional without losing any information;
- use a single Canvas instead of pulling in a large 3D engine for decoration.
The brand mark keeps the original idea of a moon orbiting Earth, but only appears in the navigation and favicon. The cosmic feeling comes from orbit lines, catalog-style numbers, and space, not from a giant planet on the home page.
Technical structure
The site is built with Vue 3 and Vite. vite-ssg pre-renders every route to HTML at build time. Markdown is compiled in Node, along with syntax highlighting, tables of contents, and reading time.
// content -> data -> static routes
const routes = posts.flatMap(post => [
`/writing/${post.slug}`,
`/en/writing/${post.slug}`,
])
Article pages find their counterpart through a translationKey. Switching language keeps readers on the same piece whenever possible instead of sending them back to the home page.
Writing system
Content lives in content/posts/ and content/projects/, split by language. Frontmatter carries the title, date, tags, and translation relationship. The body stays in Markdown.
Publishing a new article means:
- create a Chinese Markdown file;
- create the English counterpart;
- run the build; indexes, routes, RSS, and search data update automatically.
There is no database or admin panel. The deployment artifact is a directory of static files.
Next
The project will keep growing: real repository links, richer project pages, and more notes on Git and open-source collaboration. The observatory can change shape. The record itself should remain stable.