Giter Site home page Giter Site logo

ivorytower.com's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ivorytower.com's Issues

Combine the unread threads pager and subforum visuals

Seems strange that they're so similar yet don't share anything.

  • New shared component: LargeNavLink?
  • Style options: "previous" (back home), "next" (next unread thread), and "list" (forums index)—controls height, placement of the arrow, which text goes on top, and the colors

Draft posts

Save drafts of posts, edits, etc. that aren't used before navigating away.

  • Editor: add a draftKey property that you set to any unique string like "/threads/12345#Post123" (doesn't have to be an URL), and if a new Editor is instantiated with that same key, use that saved draft instead of the default
  • Add a discardDraft() method that would be used by callers after getHtml()
  • Garbage collect drafts (a second after each load)

Polls

Totally new, not shackled by the constraints of yesterday!

  • Page to let people make their own polls
  • Edit existing polls, including renaming choices and adding new ones
  • Include the poll inline in a forum post if the user references it in a link: <a href="/polls/123"></a>
  • Poll listing page

Alternating post background colors

  • Do it for everyone at first, not an option
  • Add --background-alt between light4 and white on light theme, and full black on dark theme
  • Add an option if necessary

Email and password change

  • Password reset page
  • Password reset API
  • Email reset page
  • Email reset API
  • Persistent storage for pending resets (can't just do it all in-memory)
  • Links in emails to go new site

Vote component visuals

  • Consider: When a vote is set, and the control isn't hovered or focused, hide the other icon entirely
  • Consider: Hide the buttons when disabled, instead of just making them really faint
  • Animate on hover like regular buttons
    • Can you add another option to Button that lets it render as a <div> instead of a <button> or <a> like today? Then you could reuse those visuals pretty easily.

Login page

  • New centered design for the Login component (/login)
  • Full-screen overlay hosted by the core layout, not the Login component
  • Overlay visible whenever no logged-in user OR route starts with "/login" but NOT when it starts with "/test"
  • Respect prefers-reduced-motion

Icons for ignored threads

  • Unignored
  • Ignored
  • In the button
  • In the thread listing
    • Alternate "unignored thread" icon (faint dot?) since that's the default state

Unread post tracking by index

Switch unread post tracking to be based on index, not counts: better performance and scalability, simpler to work with, etc.

WYSIWYG editor

After adding Markdown support (#38), add an editor to make it convenient to write and look at it, like how HTML used to be in the golden era.

Free WYSIWYG editor with first-class Markdown and Svelte support: TipTap, which itself is built on top of ProseMirror. (Additional Svelte wrapper that lets you host Svelte components in the editor)

There's also Editor.js, which produces JSON, and would be paired with a Markdown importer/exporter.

SimpleMDE is a Markdown-first editor, basically just syntax highlighting for Markdown.

Lexical is the editor framework from Meta.

Investigate verb tunneling

Do you need to build some kind of HTTP handler to implement verb tunneling, where requests that aren't GET or POST are submitted as POST requests with an "X-HTTP-Method: […]" header? I guess people will let you know if things are broken after starting to use more obscure HTTP methods from the new API. Probably won't need this though.

Support duplicate image filenames

When uploading an image with the same filename as an existing one, and the user's time has expired so they can't replace the old image, generate a new unique name for it instead of throwing an error.

Touch interactions for posts

Can you build a better way to surface the Edit and Reply actions for a post on phones? How about a touch-first interaction like iMessage and Messenger? (But remember that touch is not the same thing as "narrow window," so you'd still need the narrow window mouse version!)

Error pages

  • Better 404/error responses for thread pages
  • If the URL ends in ".aspx", redirect to the appropriate page on the new site, or the old site if there's no new equivalent

Debugging in VS Code

Debugging support for the project is fairly nonexistent. Probably should get that working.

  • Integration with the VS Code extension for Azure SWA
  • Debugging browser TypeScript (breakpoints and stepping and such)
  • Running the Azure Static Web Apps swa reverse proxy locally

Reimagined profiles

  • Essential information like name, cohort, and so on
  • Minimal fixed fields, but definitely a big freeform textbox
  • List of links
  • Deprecate all of the old contact info stuff?
  • Deprecate birthdays?

Deleted post visuals

Fade out the post and superimpose an X or slash.

(What visuals would you want for moderators who can see deleted posts?)

Edit timers

Why can't editing a post be as exciting as defusing a bomb?

Maybe the not-yet-existing edit timer shouldn't appear at all until there are less than 5 minutes remaining.

Forums search

  • Show search results in the new site (without redirecting)
  • Do what you can to make the results UX better without changing the (totally awesome) functionality

Vote tooltips

For now they can just all be in the JavaScript. No real need to make that service-driven.

Upvote and downvote counts

  • Track and return upvote and downvote counts, not just the score
  • Fix the very minor bug where Vote goes to 0 instead of / after cancelling the only vote
  • Show the individual upvote and downvote counts on hover

Reprocess old posts

  • Back up first
    • Make sure you can restore that backup
  • Convert all emoticon images to emoji (using the same rules as the new site)
  • Convert all forum links to new URLs

Current emoji rules

Emoticons are converted to images using this template:

<img src="Bitmaps/Emo/{0}.png" width="12" height="12" class="emo" alt="{1}" title="" />

Supported emoji:

Sequence Filename Equivalent emoji
:) :-) Smiley 🙂
:( :-( Frown 🙁
:P :p :-P :-p :oP Silly 😝
:O :o :-O :-o :-0 Gasp 😮
:-D :D Grin 😁
:-/ :-| :-\ :| Unsure 😕
:-[ >.< Wince 😣
;) ;-) Wink 😉
-_- Glare 😑
^_^ Pleased 😊
<3 Heart
</3 HeartBroken 💔
(hqf) Harlequin 🤡
(cy) Cylon 🤖
(tymk) TMYK 🌈🌟
(nyan) Nyan 🌈
(usa) USA 🇺🇸
:-J Jmote 😇
E( Emo 😞

New API

The current API used by the new site is a crappy placeholder. Let's make a real one.

Currently working on a branch: api

  • Add a new Azure Functions .NET 6 C# API to /api in this repo
  • Recreate / port the model classes used for accessing the database
  • Build new authorization code using JWTs on the server User? user = IvoryTower.Auth.GetCurrentUser(request); that just always succeeds and returns Travis
  • Make that authorization code actually check the token in the header
  • Update the API-calling client code to save tokens sent from server
  • Update the API-calling client code to send the appropriate tokens with requests
  • Move the initial set of test APIs to the new API
    • Hello
    • Login
    • Get all user data
    • Forums listing
    • Get single forum contents
    • Upload an image
    • Post reply
    • Get single post
    • Delete a post
    • Edit a post
    • Accept terms
    • Ignore thread
    • Get single thread contents
    • Create new thread
    • Get unread threads list
  • Once all of those are implemented, you can get rid of all of the API code in legacy VB IvoryTower entirely

External image handling

Assuming IvoryTower continues to allow hotlinking external images:

  • Add decoding="async" loading="lazy"

Post bookmarks

Used to be flags, now they're bookmarks!

  • Bookmark posts
  • Page to see your bookmarked posts

Post contents disappear on edit

On any post with a magic forums link, click Edit and then Cancel. The post contents disappear.

Maybe you need to do something special to unmount the ForumLink component—or maybe you can fix things by ripping out and replacing the entire PostView with a new one.

SDK error handling

Currently, errors are mostly ignored by the SDK. Probably shouldn't do that.

  • Pay attention to HTTP error codes
  • Return better error information from the API
    • Think about how well-designed services return error information

Markdown

Markdown: coming, eventually, by popular demand!

  • Add a Markdown processor
    • Don't allow inline HTML
    • Add support for custom spoiler tags

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.