Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nuxt/learn.nuxt.com
[Work in Progress] An interactive tutorial and playground for Nuxt
https://github.com/nuxt/learn.nuxt.com
interactive-tutorial nuxt playground vue webcontainer
Last synced: about 1 month ago
JSON representation
[Work in Progress] An interactive tutorial and playground for Nuxt
- Host: GitHub
- URL: https://github.com/nuxt/learn.nuxt.com
- Owner: nuxt
- License: mit
- Created: 2023-11-21T15:07:05.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-09-29T06:14:14.000Z (about 2 months ago)
- Last Synced: 2024-09-29T23:56:57.319Z (about 1 month ago)
- Topics: interactive-tutorial, nuxt, playground, vue, webcontainer
- Language: Vue
- Homepage: https://learn-dev.nuxt.com
- Size: 1.21 MB
- Stars: 533
- Watchers: 7
- Forks: 82
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nuxt Tutorial Playground
> [!WARNING]
> The architecture of this project is ready, while the tutorial content is still work in progress, contributions appreciated!An interactive tutorial and playground for learning Nuxt. Powered by [Nuxt](https://nuxt.com/docs) and [WebContainers](https://webcontainers.io/).
Inspired by [learn.svelte.dev](https://learn.svelte.dev).
`learn.nuxt.com` is not yet deployed, but you can preview the latest branch at [learn-dev.nuxt.com](https://learn-dev.nuxt.com).
## Live Streaming
Anthony Fu built this project from scratch on Live Streaming. You can watch the recordings of the full process on [YouTube](https://www.youtube.com/playlist?list=PL4ETc_mXFfxUGiY852jH3ctljnI2e9Rax).
## Contributing
### Development
To run this project locally, you need to have [Node.js v20.0+](https://nodejs.org/en/) and [pnpm](https://pnpm.io/) installed.
After cloning the repo, run the following commands to install dependencies:
```bash
pnpm install
```Then, run the following command to start the development server:
```bash
pnpm dev
```The development server will be running at [http://localhost:3000](http://localhost:3000).
### Content Structure
The tutorial content is located in the `content/` directory. Each route contains a number prefix (`1.`) to indicate the order and will be removed in the final URL. For each route, we use a folder with an `index.md` to serve the extra files. A `.template` folder can be placed with the `index.md` file to provide the template for the playground.
- `.template/index.ts` - Indicates the metadata for that guide, like enabling/disabling features, file filters, etc.
- `.template/files/**` - The files that will be copied to the playground when the user navigates to that guide, merged with the basic template under `template/basic/`
- `.template/solutions/**` - Optional solutions for the tasks in that guide, merged with the guide files.## Todolist
- [ ] Content
- [ ] Allow each guide to configure file filter
- [ ] Persist user changes when toggling solutions
- [ ] Verification for tutorial tasks
- [x] Search feature
- [x] Search in command palette
- [x] Search button
- [x] Navigation
- [x] Dropdown for guide outlines
- [x] Breadcrumbs
- [x] Previous/Next buttons
- [x] Embedded Nuxt Docs (update CORS headers)
- [x] Only make necessary changes when navigating between guides
- [x] Switch playgrounds on different guides
- [x] Allow each guide to toggle features
- [x] Solution for each guide
- [x] A button of "Edit this page"
- [x] SEO
- [x] OG Image
- [x] Meta tags
- [x] Sitemap
- [x] Command K System
- [ ] About Page
- [ ] Welcome Screen
- [ ] Try https://ark-ui.com/docs/components/splitter
- [x] Show release time for the playground
- [x] Show Nuxt and Vue versions from the container
- [x] Custom bundler for templates (replaces `import.meta.glob`, create static virtual modules)
- [x] Monaco editor and Volar
- [x] Connection Volar to the WebContainer FS
- [x] File tree
- [x] [Add interactivity shell](https://webcontainers.io/tutorial/7-add-interactivity)
- [x] A basic editor
- [x] Refactor logic from Vue SFC to composables
- [x] Refactor to add Pinia
- [x] Frame-to-parent communication
- [x] Sync the basic style
- [x] Buttons to restart server
- [x] Open/close terminal panel
- [x] Extract "playground injected" utils
- [x] Download the project as zip## License
[MIT](./LICENSE)