# Beakerstack 2.0
## Root filesystem
```
/.apps/*-> -- beaker uses this to indicate installed apps
/.data/{domain}/*
/.archives/*-> -- beaker uses this to mount all the user's saved archives
/documents -- use the metadata title on these to capitalize
/music
/pictures
/videos
/public-> -- public identity dat
/public/.data/{domain}/*
```
```
/.data/unwalled.garden/posts
/.data/unwalled.garden/comments
/.data/unwalled.garden/reactions
/.data/unwalled.garden/recommendations
```
## DNS
```js
navigator.dns.resolve(url)
```
## Drives listing
```js
navigator.drives.showSelectDriveDialog({
filters: {type, writable, networked},
flags: ['noCreate', 'noExisting'],
title,
buttonLabel
})
navigator.drives.showForkDriveDialog(url, {
title,
buttonLabel
})
navigator.drives.showOpenFileDialog({
folder, // URL of folder to start in
filters: {type, writable, networked},
flags: ['noCreate', 'files', 'folders'],
title,
buttonLabel
})
navigator.drives.showSaveFileDialog({
folder, // URL of folder to start in
filters: {type, writable, networked},
flags: ['noCreate', 'files', 'folders'],
title,
buttonLabel
})
// navigator.drives.query({
// filters: {driveType, writable, networked}
// })
```
## Hyperdrive
```js
var d = new Hyperdrive(url)
var d = await Hyperdrive.load(url)
var d = await Hyperdrive.create(opts)
d.url
d.setTimeout(ms)
d.getTimeout()
d.stat(path)
d.configure(path, {
title,
description,
type,
// links,
web: {
root,
fallbackPage
},
user: {
},
env: {
networked,
previewMode,
localPath
}
})
d.mount(path, drive)
d.unmount(path)
d.createDirectory(path)
d.readDirectory(path, {recursive, stat})
d.deleteDirectory(path, {recursive})
d.writeFile(path, data, {encoding, offset, length})
d.readFile(path, {encoding, offset, length})
d.deleteFile(path)
// var s = d.createWriteStream(path, {encoding, offset})
// var s = d.createReadStream(path, {encoding, offset, length})
// s.seek(offset)
// s.read(length)
// s.write(chunk)
// s.close()
d.copy(srcPath, dstUrl)
d.move(srcPath, dstUrl)
d.history(pattern, {start, end, reverse})
d.tags()
d.checkpoint(tagName)
d.checkout(revisionOrTag)
var watcher = d.watch(pattern, onChanged)
watcher.addEventListener('changed', {path})
d.addEventListener('network-changed', ({peers}))
d.addEventListener('download', ({feed, block, bytes}))
d.addEventListener('upload', ({feed, block, bytes}))
d.addEventListener('sync', ({feed}))
```
## Hypercore
```js
var c = new Hypercore(url)
var c = await Hypercore.load(url)
var c = await Hypercore.fromPath(drive, path)
var c = await Hypercore.create(opts)
c.url
c.stat()
c.configure({
env: {
networked
}
})
c.read(index)
c.append(value)
```