Model or dataset
datawhalechina/vibe-vibe avatar
datawhalechina/vibe-vibe

Vibe Vibe: a Chinese-language Vibe Coding curriculum that ships as a VitePress site

AI for All: The First Systematic Vibe Coding Tutorial | From Zero to Full-Stack, Bring Your Ideas to Life | Live at: www.vibevibe.cn ;全民AI学习第一课,首个系统化 Vibe Coding 开源教程 | 零基础到全栈实战,让人人都能借助 AI 实现自己的想法与创意 | 在线地址:www.vibevibe.cn

6,089 stars490 forksDockerfileLicense varies

At a glance

What is it?
Vibe Vibe is a Datawhale open source tutorial that teaches non-programmers to build software by talking to AI models. The repository is mostly Markdown, wrapped in a VitePress build and a two-stage Docker image that serves the whole course on port 1024.
Who is it for?
Adopt Vibe Vibe if you want a structured, Chinese-language path from zero programming experience to a deployed project, and you are willing to run the site yourself with docker compose up -d --build. Skip it if you need an English-first curriculum, or if you expect the repository to contain the AI tooling itself: it contains the teaching material, not the coding assistant.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 152 days ago.
What is it written in?
Mainly Dockerfile, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Vibe Vibe actually is, and who the course is written for

The repository is a curriculum, not a tool. Its README describes it as a systematic tutorial that takes a learner from "I have an idea" to "I built a product," framed around Andrej Karpathy's Vibe Coding idea and the shift the README calls going from Coder to Commander. The intended reader is someone with no programming background at all, and the README's own routing table is the clearest statement of that: a complete beginner starts at the basics section, chapter 1, while someone who has used ChatGPT but never finished a project starts at chapter 2.

The course is organised into four parts. The basics part covers mindset and a first small project. The advanced part is sixteen chapters on delivery, from environment setup and package managers through environment variables, persistence, testing, deployment, DNS and SEO. The practice part splits projects by audience, with separate tracks for humanities and business students, science and engineering students, and working professionals. A fourth part collects external articles, podcasts, reports and newsletters. The advanced track names its stack explicitly: Next.js 16, React, TypeScript, Tailwind CSS, shadcn/ui, Drizzle ORM and PostgreSQL.

That stack disclosure matters more than it looks. A tutorial that recommends a specific ORM and a specific database is making a commitment that will age, and the sixteen-chapter outline is where that commitment gets taught. If you already work in a different stack, the advanced part will read as one opinionated path rather than a survey.

How the course is built: VitePress, pnpm and a two-stage image

The repository layout is that of a documentation site. The top level holds package.json, pnpm-lock.yaml, a Dockerfile, docker-compose.yml, a docs directory, a demos directory and a patches directory. The package.json names the project vibe-vibe-tutorial and declares vitepress as a dev dependency, with scripts for dev, build and preview that all point at the docs directory. Content lives as Markdown under docs, which is also where the deployment guide sits.

The build chain has two stages. The Dockerfile starts from node:24-alpine, installs pnpm globally, copies package.json and pnpm-lock.yaml, runs pnpm install --frozen-lockfile, copies the rest of the project, adds git through apk, runs pnpm build, and then copies the generated output from docs/.vitepress/dist into an nginx:alpine image. The final container exposes port 80 and does nothing but serve static files.

Several plugins in the dependency list hint at the reading experience: vitepress-plugin-mermaid and mermaid for diagrams, markdown-it-mathjax3 for math, medium-zoom for image zooming, vitepress-markdown-timeline, and @giscus/vue for comments. The postinstall script runs patch-package against the patches directory, which means the build depends on local patches applied to dependencies at install time. That is a maintenance cost worth naming: a dependency upgrade can invalidate a patch, and the failure will surface during pnpm install rather than during editing.

Running Vibe Vibe locally with docker compose

The README gives a single command for private deployment. From the repository root, run the compose file, which builds the image defined by the Dockerfile and starts a container named vibevibe-app.

bash
docker compose up -d --build

The compose file maps port 1024 on the host to port 80 in the container, so the README states the default address is http://localhost:1024. It also sets TZ=Asia/Shanghai, restarts the container unless stopped, and defines a healthcheck that runs wget --quiet --tries=1 --spider against http://localhost:80 every 30 seconds, with a 40 second start period, a 10 second timeout and 3 retries. Logging is capped with the json-file driver at max-size 10m and max-file 3.

If you prefer to work on the content rather than serve it, the package.json scripts are the entry point. Running the dev script starts the VitePress development server against the docs directory, and the build script produces the static output that the Dockerfile copies.

bash
pnpm install
pnpm dev
pnpm build

The README points to docs/deployment/index.md for fuller instructions covering static file hosting and offline environments. That page is where to look if the container approach does not fit your infrastructure.

Where the project stops: content, not a coding assistant

The most common misreading of a repository like this is to expect software. Vibe Vibe teaches a workflow; it does not implement one. There is no agent runtime, no model integration and no CLI in the repository layout. The topics list on the repository includes agent and agentic-ai, but the deliverable is a documentation site built with VitePress. If you arrived looking for a tool that talks to a model and edits your files, this is the wrong repository, and the README's tool discussion is a comparison of Cursor, Windsurf, Bolt.new and Replit rather than a wrapper around any of them.

The second boundary is language. The repository ships README.md in Simplified Chinese and README.en.md in English, but the course itself is written for a Chinese-speaking audience, and the README frames the motivation around fragmented domestic learning resources. An English reader gets the repository orientation, not the sixteen chapters.

The third is licensing. The README places the work under CC BY-NC-SA 4.0, which permits sharing and adaptation with attribution, non-commercial use, and the same licence applied to derivatives. The package.json declares "license": "ISC" for the code, which does not match the README's statement about the work as a whole. Anyone planning to reuse the text inside a paid product needs to resolve that discrepancy rather than assume either value.

The promised online IDE, and why the repository does not contain it

The README announces an online development environment described as coming soon: a cloud IDE with Node.js 24, Python and Docker preinstalled, more than 50 AI Skills covering the development workflow, and no local installation required. None of that is in the repository. The top-level entries are a documentation site, a demos directory and build configuration. The announcement is a roadmap statement, and the phrase the README uses is that it is coming, not that it exists.

That gap shapes how you should evaluate the project today. The part you can run is the course site. The part that would remove environment setup from the learner's path is not shipped, and the README does not document a date, a waitlist or an access mechanism for it. For a beginner who chose this project specifically to avoid installing anything, the current answer is that you still need Docker or a Node.js toolchain, and the chapter on environment preparation is the one that carries that load.

It also means the deployment instructions and the learning path are two separate concerns. You can read the course on the public site without touching the repository, and you can self-host the course without following the course. Only the second option requires the commands above.

How it compares with a general-purpose docs generator

The obvious alternative for anyone who just wants a self-hosted tutorial site is to take the Markdown and feed it to a generic static site generator, or to use the same VitePress setup without the Docker layer. The difference is in what you inherit. Vibe Vibe's Dockerfile is a two-stage build that ends in nginx:alpine serving files from docs/.vitepress/dist, with no runtime dependency beyond a web server. A generic generator gives you the same static output but leaves the deployment shape to you, and you would lose the healthcheck, the log rotation limits and the timezone setting that the compose file already defines.

A second comparison point is the course format itself. A video course or a paid bootcamp covers similar ground, but the course here is Markdown in a git repository, which means you can diff it, fork it, translate it and host it on an internal network. That is the actual advantage: the content is inspectable and self-hostable, and the deployment guide covers offline environments. What you give up is production polish. The package.json version is 0.0.4, and the README describes the advanced track as having readable chapter prefaces rather than complete chapters, which suggests parts of the curriculum are still being written.

Editorial conclusion

Adopt Vibe Vibe if you want a structured, Chinese-language path from zero programming experience to a deployed project, and you are willing to run the site yourself with docker compose up -d --build. Skip it if you need an English-first curriculum, or if you expect the repository to contain the AI tooling itself: it contains the teaching material, not the coding assistant. Before committing, open the deployment guide under docs/deployment/index.md, confirm the CC BY-NC-SA 4.0 terms fit how you intend to reuse the text, and check whether the online IDE and 50+ AI Skills described as coming soon have actually landed.

Frequently asked questions

What is Vibe Vibe coding?

Vibe Vibe is a Datawhale open source tutorial that teaches Vibe Coding, the practice of directing an AI model in natural language instead of writing code by hand. The README frames it around Andrej Karpathy's idea of moving from Coder to Commander, and organises the course into basics, advanced, practice and curated-articles sections.

What does "vibe vibe" mean?

Within this repository the name refers to the project itself, a Vibe Coding course published at www.vibevibe.cn. The README does not give a separate definition of the phrase beyond its use as the project and site name.

What does "vibe" mean in slang?

The README does not define the slang sense of the word. It uses "vibe" only in the context of Vibe Coding, which the README describes as immersive programming through natural language dialogue with an AI.

Is it vibes or vibe?

The project uses the singular form in its name and in the term Vibe Coding throughout the README. The README does not discuss the plural form or the distinction between the two.

What does "vibe" mean in Gen Z slang?

The README does not address the Gen Z slang usage. It defines its own term, Vibe Coding, as programming by conversing with an AI in natural language, and the course is built around that definition.

Official sources

  1. datawhalechina/vibe-vibe on GitHub
  2. Issues
  3. Project website
  4. README
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/datawhalechina-vibe-vibe.svg)](https://hysenlabs.com/projects/datawhalechina-vibe-vibe)
Community notes

Community notes