Welcome to @web!
@web lets you host your own static sites on the AT Protocol. It's like Neocities or Nekoweb, but on a PDS!
<style>[style]</style>: Include your own styles in markup.<title>[title]</title>: Sets the page title.
<blink>[text]</blink>: Blinking text.<marquee>[text]</marquee>: Text that scrolls across the screen.- Use
<marquee party>for party mode.
- Use
<img src="[link]" />: Images with suport for relative and at:// URIs.<link>: HTML links (e.glink rel="stylesheet") with suport for relative and at:// URIs.<a href="[link]">[text]</a>: HTML anchors (hyperlinks) with support for relative and at:// URIs.<Stylesheet src="[link]">: Convenience element for linking to stylesheets, with support for relative and at:// URIs.
<OmitVanillaCss />: Disables all built-in styling.<BlueskyPost src="at://did:plc:ragtjsm2j2vknwkz3zp4oxrd/app.bsky.feed.post/3kj2umze7zj2n" />: A custom element for embedding Bluesky posts.srcRequired
AT-URI of the post recordcontextlessOptional
Whether to show the post without any context (no parent reply)allow-unauthenticatedOptional
Whether to allow unauthenticated viewingservice-uriOptional
URL to an AppView service, defaults tohttps://public.api.bsky.app
<BlueskyProfileCard src="did:plc:2gkh62xvzokhlf6li4ol3b3d" />: A custom element for embedding Bluesky profile cards.actorRequired
DID or handle of the accountallow-unauthenticatedOptional
Whether to allow unauthenticated viewingservice-uriOptional
URL to an AppView service, defaults tohttps://public.api.bsky.app
<BlueskyProfileFeed actor="did:plc:ragtjsm2j2vknwkz3zp4oxrd" include-pins />: A custom element for embedding Bluesky profile feeds.actorRequired
DID or handle of the accountinclude-pinsOptional
Whether to show pinned postsallow-unauthenticatedOptional
Whether to allow unauthenticated viewingservice-uriOptional
URL to an AppView service, defaults tohttps://public.api.bsky.app
<Webamp />: Embed Webamp in your webpage!-
initial-skin: { url: string }Optional
An object representing the initial skin to use.
If omitted, the default skin, included in the bundle, will be used.
Note: This URL must be served the with correct CORS headers. -
initial-tracks: { url: string; }[]Optional
An array of tracks to prepopulate the playlist with. -
available-skins: { url: string; name: string }[]Optional
An array of objects representing available skins.
These will appear in the "Options" menu under "Skins".
Note: These URLs must be served with the correct CORS headers.
Example:[ { url: "./green.wsz", name: "Green Dimension V2" } ] -
window-layout: WindowLayoutOptional
Configure how the Winamp windows should be laid out on initial render. -
enable-double-size-mode: booleanOptional
Controls if "double size mode", where the fixed sized windows are rendered at 2x, should be enabled
Note: In keeping with the original Winamp, double size mode does not apply to resizable windows like the equalizer or Milkdrop.
Default:false -
enable-hotkeys: booleanOptional
Should global hotkeys be enabled?
Default:false -
z-index: number
-
<Spotify />: Embedded Spotify player.uri: stringRequired
Spotify song URI or ID to play.width: numberOptional
Player width.height: numberOptional
Player height.
<Oneko />: cat follow mouse, realcat: stringOptional
Replace the cat.pettable: booleanOptional
Is the cat pettable? Defaults totrue.scrolls: booleanOptional
Does scrolling move the cat? Defaults totrue.
<LesbiBadge />: Include a badge from badge.les.bi.-
clip: stringRequired
One of:half,75-degree,45-degree,diagonal,75-degree-alt,45-degree-alt,diagonal-alt,bottom-half,diamond,heart,heart-split,star,triangle -
flag1: string,flag2: stringRequired
One of:trans,lesbi,enby,bi,rainbow,lesbi-7,gay,gay-7,agender,fluid,intersex,intersex-double,ace,aro,aroace,neptunic,genderfae,pan,polysexual,demi,genderqueer,poly -
overlay: stringRequired
One of:outset,outset-double,outset-invert,outset-double-invert,gloss -
svg: booleanOptional
Render the badge as SVG, defaults tofalse.
-
<Badge name="[name]" />: Add any badge from here to your page, by simply including the file name and extension.<Userbar />: Generate custom userbars!-
width: numberOptional
The userbar width. -
height: numberOptional
The userbar height. -
text: stringOptional
The userbar text. -
textColor: stringOptional
The text color, in CSS format. -
background-type: "gradient" | "plain"Optional
The background type. -
background-position-x: numberRequired if background-type is set -
background-position-y: numberRequired if background-type is set -
background-end-position-x: numberRequired if background-type is set -
background-end-position-y: numberRequired if background-type is set -
background-color: stringorbackground-colors: string[]Required if background-type is set
The background color (or colors, for gradients), in CSS format. -
textAlign: "left" | "center" | "right"Optional
The userbar text's alignment. -
textBorder: booleanOptional
Add a border to the userbar text? -
textBorderWidth: numberOptional
The border width, if set. -
textBorderColor: stringOptional
The border color, if set. -
pattern: "none" | "dots" | "stripes"Optional
The pattern. -
topShadow: booleanOptional
Add a top shadow?
-
<RingLink>[text]</RingLink>: Adds left/right links to members of an @ring.direction: 'previous' | 'next'Optional
The direction the link is going. Defaults to 'previous'.ringUri: stringRequired
The at:// URI to the @ring.self: stringRequired
Your DID.
<Json />-
value: anyOptional
Value to present. Can be JSON but alsoNumber,String,Array,Function,Symbol,Boolean,Date -
open: 'closed' | 'full' | 'top-only'Required
Possible values:- "closed": Object is closed
- "full": Object is fully open
- "top-only" Only top level open
Default: "closed"
-
<SocialLink />network: 'email' | 'github' | 'gitlab' | 'linkedin' | 'rss' | 'stackoverflow' | 'twitch' | 'twitter'Required
The network to link to.handle: stringRequired
Note: For Stackoverflow, yourUSERIDis your handlehref: stringOptional
Alternatively, instead of providing a handle and relying on the built-in link you can just provide your own.
(for nerds)
Converting file path to Record Key:
-
Strip leading
.\,./,\,/. -
Replace all backslash and forward characters with
:. -
Replace all other characters not in the regex
/[^A-Za-z0-9.\-]/with'_' || base36 utf-16 char code || '_'.
To convert in reverse, do the operation in reverse. Slash type is not preserved (akin to Windows file paths, normalize it to a forward slash) and all paths are assumed to be absolute.
The tilde character is not used as the PDS rejects it despite being valid according to the spec.
Example:
/neocities-goodmode-sparklehorse/index.mdx
./neocities-goodmode-sparklehorse/index.mdx
neocities-goodmode-sparklehorse\index.mdx
becomes:
neocities-goodmode-sparklehorse:index.mdx