What Does It Take?
It took 38 days to get streams.place from idea to finished project.
This list only includes the things that I needed to write down for later, not things that I thought of, solved, and implemented immediately. As such, I estimate that it represents around 50% of the high-level details.
Difficulty, time spent, and importance were not filters for what was added to the list. An entry here could mean anything from “completed by adding one if
statement” or “had to fundamentally rethink the abstraction for Drops”. The point is to show a glimpse of the sheer variety and number.
- Add figcaption and figure to accepted tags list
- social media preview
- Theme-editor reset defaults to classic layout
- There is no 404 page
- Clicking on timestamp should take you to post page
- Observation: The string of numbers that’s appended to the URL when clicking the timestamp is identical to the list of numbers pulled up by the internal /.mydrops command.
- Search by date
- Add loading=“lazy” to iframes (or use this)
- /hide command to remove stream from main page
- /title command
- Set target = blank for links
- Tags by having test inside hidden html tag
- Handle media for each layout
- Chat gets cluttered (delete “drop was saved” mesages)
- Expand images onclick
- Convert uuid to base64
- Export as Markdown (in chat or webpage?)
- Protected drops (add password to suburl)
- /private command
- /public command
- /layout command
- Create switch based on Stream’s layout
- /about command
- API?
- add labels to buttons and inputs
- link to single Drop page
- allow API to set drop to protected
- add pictures of layouts to Guide
- two more themes, one monospace, one Raleway.
- check the About section, it sanitizes ampersands lol
- on creating a stream, a user’s username might already be in use by someone who’s changed their username.
- make sure Feed divs are full width, check one-word drops on all layouts
- Create a guide.streams.place
- Make sure all inputs are sanitised
- add google docs to accepted embeds
- Add fallback fonts for non-Mac devices.
- add options to /theme and /layout commands
- finish post endpoint
- Add am/pm to drop times
- Export with dates
- Smoother image views
- don’t send private drops to /json
- Make markdown format an option in api/post
- add an /export, /rss, /editor command
- Buy domain,
- add analytics
- Load remote styles on editor load
- make the about command retrive the old about section
- Markdown “>” syntax not working?
- /theme command (IMPORTANT)
- /info command (IMPORTANT)
- /mydrops command (IMPORTANT)
- /clean command
- /recover command (IMPORTANT)
- Set max-height for inline-images
- Delete messages by editing them to be just one character
- Handle uploaded files, make sure they are under 20MB
- /newkeyphrase command
- handle rendering of mediaGroups
- Only send object with id, timestamp, and plaintext for search function
- calculate datestrings on page
- use id if username is not set
- sort by timestamp
- Videos get inlined
- video_note as right side image
- Create divs for each media type
- Create carousel if multiple images/videos
- Tags using hashtags
- Diffferent mentions, language and tag managers for text vs. image
- Parse mentions to other streams
- Manage text_urls (they have a url field in the entity object)
- Manage language in pre blocks
- caption_entities vs entities?
- create user with telegram username upon start
- Images
- Add an actualText field to drops (which adds back all the stripped away text from Telegram)
- Fix CSS to not use table
- KaTeX
- Save languages from codeblocks
- Highlighting (double bold)
- Don’t save messages until account created
- Quote blocks (
<blockquote>
) - Reply to each update
- Don’t save mistyped commands
- Full-text search
- Edit and delete entries
- Link to which entry was edited
- Markdown formatting
- Edit Drops
- Make checklists render without li bullets
- Better date and time formats