## About
This monorepo contains the source code of [os.prozilla.dev][demo] as well as multiple packages. You can find the main package at [`prozilla-os`][prozilla-os].
ProzillaOS is a web-based operating system inspired by Ubuntu Linux and Windows. It is made with React, Vite and TypeScript by [Prozilla][prozilla].
## Packages
### Libraries (public)
These libraries are different modules of ProzillaOS that can be installed separately or via the bundle package `prozilla-os`. Each library has a `src/main.ts` entry file and is published to the npm registry.
- [`prozilla-os`][prozilla-os]: A bundle containing the core packages and all standard applications of ProzillaOS
- [`@prozilla-os/core`][core]: Core functionality, React components and hooks
- [`@prozilla-os/shared`][shared]: Shared functions and utilities
#### Standard applications
- [`@prozilla-os/file-explorer`][file-explorer]: File explorer app
- [`@prozilla-os/terminal`][terminal]: Terminal/shell app
- [`@prozilla-os/text-editor`][text-editor]: Text editor app
- [`@prozilla-os/settings`][settings]: Settings app
- [`@prozilla-os/media-viewer`][media-viewer]: Media viewer app
- [`@prozilla-os/browser`][browser]: Browser app
- [`@prozilla-os/calculator`][calculator]: Calculator app
#### Non-standard applications
- [`@prozilla-os/logic-sim`][logic-sim]: Logic simulator app
### Sites (internal)
These packages contains the source code of parts of the ProzillaOS website. They are published to GitHub pages.
- [`@prozilla-os/demo`](./packages/demo/): Demo site
- [`@prozilla-os/docs`](./packages/docs/): Documentation site
## Scripts
ProzillaOS uses the package manager [pnpm](https://pnpm.io/) to run scripts.
### Shorthands
| Script | Description |
| --- | --- |
| pnpm run start
| Run [`pnpm run site:start`](#package-prozilla-os-demo). VSCode is configured to run this script whenever the project is opened.
| pnpm run build
| Build every package in sequential order.
| pnpm run deploy
| Clear the `dist` directory, build and stage each package that comprises the website, then deploy to GitHub pages. This should then trigger a GitHub Action that deploys the build to production.
| pnpm run publish
| Publish the `dist` directory directly to GitHub pages.
### Public packages
| Script | Description |
| --- | --- |
| pnpm run packages:build
| Build all packages using Vite in sequential order and output to respective `dist` directories.
| pnpm run packages:update
| Create a new changeset for packages and update their version accordingly.
| pnpm run packages:release
| Publish the latest versions of each package to the npm registry.
> [!TIP]
> Use `pnpm --filter build` to build a sepecific subset of packages or a single package and output to respective `dist` directory/directories. For more information about selecting/filtering specific packages, read [pnpm's documentation on filtering](https://pnpm.io/filtering).
### Internal package: `@prozilla-os/demo`
| Script | Linked package script |
| --- | --- |
| pnpm run demo:start
| [`pnpm run start`](./packages/demo/README.md#scripts)
| pnpm run demo:build
| [`pnpm run build`](./packages/demo/README.md#scripts)
| pnpm run demo:preview
| [`pnpm run preview`](./packages/demo/README.md#scripts)
| pnpm run demo:stage
| [`pnpm run stage`](./packages/demo/README.md#scripts)
| pnpm run demo:deploy
| [`pnpm run deploy`](./packages/demo/README.md#scripts)
| pnpm run demo:fetch
| [`pnpm run fetch`](./packages/demo/README.md#scripts)
### Internal package: `@prozilla-os/docs`
| Script | Linked package script |
| --- | --- |
| pnpm run docs:start
| [`pnpm run start`](./packages/docs/README.md#scripts)
| pnpm run docs:build
| [`pnpm run build`](./packages/docs/README.md#scripts)
| pnpm run docs:preview
| [`pnpm run preview`](./packages/docs/README.md#scripts)
| pnpm run docs:stage
| [`pnpm run stage`](./packages/docs/README.md#scripts)
| pnpm run docs:generate
| [`pnpm run generate`](./packages/docs/README.md#scripts)
## Links
- [Demo][demo]
- [Docs][docs]
- [GitHub][github]
- [npm][npm]
- [Discord][discord]
- [Ko-fi][ko-fi]
## Resources
These resources can help you get started with ProzillaOS.
- [prozilla-os/ProzillaOS-boilerplate][boilerplate]: Boilerplate code for a React Vite app implementing ProzillaOS
[demo]: https://os.prozilla.dev/
[docs]: https://os.prozilla.dev/docs
[github]: https://github.com/prozilla-os/ProzillaOS
[npm]: https://www.npmjs.com/package/prozilla-os
[discord]: https://discord.gg/JwbyQP4tdz
[ko-fi]: https://ko-fi.com/prozilla
[issues]: https://github.com/prozilla-os/ProzillaOS/issues
[boilerplate]: https://github.com/prozilla-os/ProzillaOS-boilerplate
[prozilla]: https://prozilla.dev/
[prozilla-os]: ./packages/prozilla-os/
[core]: ./packages/core/
[shared]: ./packages/shared/
[file-explorer]: ./packages/apps/file-explorer/
[terminal]: ./packages/apps/terminal/
[text-editor]: ./packages/apps/text-editor/
[settings]: ./packages/apps/settings/
[media-viewer]: ./packages/apps/media-viewer/
[browser]: ./packages/apps/browser/
[calculator]: ./packages/apps/calculator/
[logic-sim]: ./packages/apps/logic-sim/