# 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? - [X] get a first-pass podman/docker setup up - [X] sign up - [X] check for logged in user session - [X] log in - [X] 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/) - [X] user profile page - [X] logout button - [ ] profile editing - [ ] avatar uploads - [X] chat rooms - [X] chat messages - [ ] @-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 - [ ] clean up after initial implementation - [X] split the monolithic talk.html up - [ ] chat message processing - [X] auto-link urls - [X] use this regex: `(?:(?[a-zA-Z]+):\/\/)?(?:(?(?\S.+)\:(?.+))\@)?(?(?:(?[-a-zA-Z0-9\.]+)\.)?(?[-a-zA-Z0-9]+?\.(?[-a-zA-Z0-9]{2,64}))(?:\:(?[0-9]{1,6}))?)\b(?[-a-zA-Z0-9@:%_{}\[\]<>\(\)\+.~&\/="]*)(?:\?(?[a-zA-Z0-9!$%&<>()*+,-\.\/\:\;\=\?\@_~"]+))?(?:#(?[a-zA-Z0-9!$&'()*+,-\.\/\:\;\=\?\@_~"]*?))?` - [ ] :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 - [ ] embedded video for - [X] youtube - [X] vimeo - [ ] tiktok - [ ] embedded audio or audio cards for: - [X] tidal - [X] spotify - [ ] youtube (any way to differentiate for yt music?) - [ ] 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) - [X] punycode urls before url extraction? (see: https://stackoverflow.com/a/26618995) - [ ] gif support - [X] gif embeds - [ ] start/stop gif control - [ ] hide control - [ ] inline image support - [X] inline images - [ ] hide control - [ ] custom emoji support - [ ] upload custom gif emoji - [X] 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 - [ ] 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 - [X] smart forms - [X] use the api for forms so requests will be authenticated - [X] support multiple methods - [X] add `on_parsed` to allow injecting additional data - [X] refine `on_response`/`on_reply` ## Getting Started Developing 1) 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 ``` 2) Clone the repo: `git clone https://andyburke.dev/andyburke/autonomous.contact.git` 3) Start the server: `deno run task serve` 4) Navigate to http://localhost:8000 5) Edit some code and check it out.