No description
|
||
---|---|---|
.zed | ||
models | ||
public | ||
tests | ||
utils | ||
.gitignore | ||
deno.json | ||
deno.lock | ||
Dockerfile | ||
README.md |
autonomous.contact
Bringing the BBS back.
TODO
These are in no particular order. Pull requests updating this section welcome for feature discussions.
- should everything be an event in a room?
- get a first-pass podman/docker setup up
- sign up
- check for logged in user session
- log in
- refactor login/sessions/totp
- media uploads
- local upload support (keep it simple for small instances)
- S3 support (then self-host with your friends: https://garagehq.deuxfleurs.fr/)
- test mounting an s3 volume under /files and having no s3 support in the codebase
- user profile page
- logout button
- profile editing
- avatar uploads
- chat rooms
- chat messages
- chat message actions
- '...' button to show actions
- delete message
- reply to message
- copy message link
- @-prefixing of users for notifications/highlighting
- chat input box should auto-complete users for you
- messages to you should be highlighted somehow
- chat message reactions
- sidebar on mobile needs to show/hide via a button
- clean up after initial implementation
- split the monolithic talk.html up
- chat message processing
- auto-link urls
- use this regex:
(?:(?<protocol>[a-zA-Z]+):)?(?:\/\/)?(?:(?<auth>(?<username>\S.+)\:(?<password>.+))\@)?(?<host>(?:(?<hostname>[-a-zA-Z0-9\.]+)\.)?(?<domain>(?:[-a-zA-Z0-9]+?\.(?<tld>[-a-zA-Z0-9]{2,64}))|localhost)(?:\:(?<port>[0-9]{1,6}))?)\b(?<path>[-a-zA-Z0-9@:%_{}\[\]<>\(\)\+.~&\/="]*?(?<extension>\.[^\.?/#"\n<>]+)?)(?:\?(?<query>[a-zA-Z0-9!$%&<>()*+,-\.\/\:\;\=\?\@_~"]+))?(?:#(?<hash>[a-zA-Z0-9!$&'()*+,-\.\/\:\;\=\?\@_~"]*?))?(?:$|\s)
- use this regex:
- :emoji: replacements
- preview cards for links
- add a button to allow for loading a preview
- we want to do this loading client-side, and so should only do it if they ask us to
- parse head meta, eg: https://github.com/AndrejGajdos/link-preview-generator/blob/master/index.js
- add a button to allow for loading a preview
- embedded video for
- youtube
- vimeo
- tiktok
- embedded audio or audio cards for:
- tidal
- spotify
- youtube (any way to differentiate for yt music?)
- direct uploads
- make the direct upload audio player look decent for a first pass
- make the display cooler - clicking the spectrum should toggle to different display modes
- add action buttons to embeds
- copy original link (hopefully just a button with some onclick we can slap next to the iframe and style?)
- toggle embed (toggle between showing the embed and the original link)
- punycode urls before url extraction? (see: https://stackoverflow.com/a/26618995)
- gif support
- gif embeds
- mp4 embeds
- start/stop gif control
- hide control
- inline image support
- inline images
- hide control
- custom emoji support
- upload custom gif emoji
- auto-link urls
- try to select immediate sibling messages from the same user and hide mulitple avatars
- Notifications
- if web notifications are not enabled, show a button to turn them on
- if web notifications are enabled, emit on events
- ability to mute
- users
- rooms
- tags (#tags?)
- admin panel
- add invite code generation
- AC_REQUIRE_INVITE_CODE: boolean env var/setting
- AC_DIRECTORY_SERVERS: |-separated list of directory servers to report to these central servers could be distributed directories - your town might run one, your state, your country, or you could publish to a public one that is organized around interests
- add invite code generation
- combined "bulletin board" instead of exchange/work?
- post-it style notes with tag and keyword filtering?
- simple wiki for resources
- simple calendar with public/private event tracking
- caldav support
- smart forms
- use the api for forms so requests will be authenticated
- support multiple methods
- add
on_parsed
to allow injecting additional data - refine
on_response
/on_reply
Getting Started Developing
-
Install Deno
Run their shell script (note: as yourself, not root)
curl -fsSL https://deno.land/install.sh | sh
Or using Nix:
nix-shell -p deno
-
Clone the repo:
git clone https://andyburke.dev/andyburke/autonomous.contact.git
-
Start the server:
deno run task serve
-
Navigate to http://localhost:8000
-
Edit some code and check it out.