https://github.com/atty303/pob-web
Online build planner for Path of Exile.
https://github.com/atty303/pob-web
emscripten pathofbuilding pathofexile webgl
Last synced: 11 months ago
JSON representation
Online build planner for Path of Exile.
- Host: GitHub
- URL: https://github.com/atty303/pob-web
- Owner: atty303
- License: mit
- Created: 2024-05-05T00:11:20.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-14T02:25:48.000Z (12 months ago)
- Last Synced: 2025-06-26T19:52:21.720Z (12 months ago)
- Topics: emscripten, pathofbuilding, pathofexile, webgl
- Language: TypeScript
- Homepage: https://pob.cool
- Size: 2.36 MB
- Stars: 61
- Watchers: 3
- Forks: 6
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# pob.cool - Path of Building for browser environment
[](https://wakatime.com/badge/user/018dace5-5642-4ac8-88a7-2ec0a867f8a7/project/fa7418b8-8ddb-479c-805b-ce2043f24d24)
This is browser version of [Path of Building](https://pathofbuilding.community/).
## Features
- Run the PoB in your browser, that's all.
- You can select the version of the PoB to run.
- Saved builds are stored in the browser's local storage.
- The `Cloud` folder appears when you are logged into the site. Builds saved there are stored in the cloud and can be accessed from anywhere.
- You can load a build by specifying a hash in the URL.
- eg. https://pob.cool/#build=https://pobb.in/WwTAYwulVav6
## Limitations
- Network access is through our CORS proxy, so all users have the same source IP. This will likely cause rate limiting.
- For security reasons, requests containing the POESESSID cookie will be unconditionally rejected. Do not enter POESESSID in the PoB of this site.
## Principle
- We will not make any changes to the original PoB. This is because a lot of effort has been put into the PoB itself and
we want the community to focus on developing the offline version.
- However, it does make changes in behavior that are possible without changing the code.
## Development
### Prerequisites
- [Node 22](https://nodejs.org/)
- [Emscripten](https://emscripten.org/)
- [CMake](https://cmake.org/)
- [Ninja](https://ninja-build.org/)
### Clone the Repository
This repository includes a [submodule](https://gist.github.com/gitaarik/8735255) in `vendor/lua`. To include the submodule when cloning the repository, use the `--recurse-submodules` flag:
```bash
git clone --recurse-submodules
```
If you omitted the flag, you can use the following commands to clone the submodule:
```bash
git submodule init
git submodule update
```
### Install dependencies
```bash
npm ci
```
### Run driver shell
Set up a development server for the PoB web driver alone.
```bash
npm run build -w packages/driver
npm run dev -w packages/driver
```
### Run web app
Set up a web application development server.
You need to build the driver first.
```bash
npm run dev -w packages/web
```
## Under the hood
- Running the original PoB Lua code.
- Use a custom Lua 5.2 interpreter to run the code.
- Using Emscripten to compile the PoB engine to WebAssembly.
- A module equivalent to SimpleGraphic is written in C to bridge with the JS driver.
- The JS renderer renders using WebGL.
- `packages/driver` emulates PoB windows with vanilla JS.
- `packages/web` is the React application that uses the driver.