Open Web Desktop (OWD) is a framework designed to provide a simple environment for building web-based desktop experiences. It's built with Vue.js & TypeScript, and it leverages the extensible Nuxt.js architecture.
atproto OS is providing a set of modules to kickstart your Open Web Desktop on the AT Protocol.
- Open-source web desktop bundled with AT Protocol modules
- Seamlessly login via Bluesky and keep your app states synced
- Fully extendable through themes, applications, and modules
- Store data of any application simply by extending its Pinia store
- Style your apps with PrimeVue and Tailwind for a consistent UI
- Showcase your AT Protocol project in a web-based desktop
This starter template is decked with some basic applications and dedicated AT Protocol modules.
- @owdproject/app-about
- @owdproject/app-debug
- @owdproject/app-terminal
- @owdproject/app-todo
- @owdproject/app-wasmboy
Fork the project and clone it with something like:
git clone https://github.com/<username>/atproto-os.gitOnce ready, you can start the development server:
# Run the dev server + hot-reload with npm
npm install
npm run dev
# Or use pnpm for a faster experience
pnpm install
pnpm run devatprotoOS works out-of-the-box, but if you are going to deploy it somewhere, you will need to accordingly update your atproto configuration in nuxt.config.ts for the AT Protocol auth to work correctly.
atproto: {
serviceEndpoint: {
private: 'https://bsky.social',
public: 'https://public.api.bsky.app'
},
oauth: {
clientMetadata: {
// url of your remote client_metadata.json, leave the field empty
// to let `nuxt-atproto` generate a local /public/client_metadata.json
remote: '',
// configuration for the local client_metadata.json
local: {
client_id: "http://127.0.0.1/client-metadata.json",
client_name: "nuxt-atproto",
client_uri: "http://127.0.0.1",
logo_uri: "http://127.0.0.1/logo.png",
tos_uri: "http://127.0.0.1",
policy_uri: "http://127.0.0.1",
redirect_uris: ["http://127.0.0.1"],
scope: "atproto", // use "atproto transition:generic" in production
grant_types: ["authorization_code", "refresh_token"],
response_types: ["code"],
token_endpoint_auth_method: "none",
application_type: "web",
dpop_bound_access_tokens: true
}
},
signInOptions: {
state: "",
prompt: "login",
scope: "atproto", // use "atproto transition:generic" in production
ui_locales: "en",
},
},
debug: true,
}Thanks to Tailwind and PrimeVue, you can create custom themes from scratch and ensure a consistent look across all apps. Each theme defines its own style, making your desktop both cohesive and uniquely yours.
Applications · Modules · Themes
You can discover new apps by searching for the owd-apps tag on GitHub.
For example, to install the To-do app:
nx run desktop:install-app --name=@owdproject/app-todoThis will install the package and automatically register it in your desktop configuration.
You can discover new modules by searching for the owd-modules tag on GitHub.
For example, to install the session persistence module:
nx run desktop:install-module --name=@owdproject/module-pinia-localforageThemes are full desktop environments that style all UI components independently using PrimeVue.
Each theme provides a unique look and feel while maintaining consistent functionality across all applications.
You can discover new themes by searching for the owd-themes tag on GitHub.
nx run desktop:install-theme --name=@owdproject/theme-gnomeOpen Web Desktop may become a vast project, the code has been entirely rewritten and is now actively being developed. Your support is crucial to keep it moving forward. If you like to see more, please consider donating.
atprotoOS is released under the GNU General Public License v3.