Updated Roadmap (markdown)

Marcin Kurczewski 2013-10-04 14:06:00 -07:00
parent 0e08f301df
commit a541602f6c

@ -28,67 +28,69 @@
# Posts # Posts
## Adding new post ## Adding new post
- ☐ Content type (image, flash, youtube) - ☐ Content type (image, flash, youtube)
- ☐ The post content itself - ☐ The post content itself
- ☐ Live preview of images - ☐ Live preview of images
- Ways to select the file: - Ways to select the file:
- ☐ Drag'n'drop - ☐ Drag'n'drop
- ☐ Click to select - ☐ Click to select
- ☐ Paste url - ☐ Paste url
- ☐ Customizable post thumbnail - ☐ Customizable post thumbnail
- [proposition] Flagging post: SFW/Sketchy/NSFW - ☐ Flagging post: SFW/Sketchy/NSFW
- ☐ Multiple upload - ☐ Multiple upload
- ☐ Ability to remove accidentally selected images before final upload - ☐ Ability to remove accidentally selected images before final upload
- ☐ Tags - ☐ Tags
- ☐ Autocomplete - ☐ Autocomplete
- ☐ Flagging: SFW/sketchy/NSFW - ☐ Flagging: SFW/sketchy/NSFW
- ☐ Content type changes UI behaviour (it's senseless to upload file with content type set to youtube) - ☐ Content type changes UI behaviour (it's senseless to upload file with content type set to youtube)
- Implementation details - youtube can be stored as files as well, just plaintext containing URL/ID - Implementation details - youtube can be stored as files as well, just plaintext containing URL/ID
- ☐ Image gets unique file name so that it can be hotlinked by registered users, but it's url cannot be guessed by unregistered ones (accessing nsfw post by `/post/30065d2112f85177a20b81d2c4dd08fe.jpg` vs `/post/244.jpg`) - ☐ Image gets unique file name so that it can be hotlinked by registered users, but it's url cannot be guessed by unregistered ones (accessing nsfw post by `/post/30065d2112f85177a20b81d2c4dd08fe.jpg` vs `/post/244.jpg`)
- Implementation detail: secret salt concatenated to random suffix [configurable] - Implementation detail: secret salt concatenated to random suffix [configurable]
- Ensure no other post exists with that name. - Ensure no other post exists with that name.
## Editing posts ## Editing posts
- Implementation details: try to avoid duplicated code between post adding and editing, especially for validation stuff. - Implementation details: try to avoid duplicated code between post adding and editing, especially for validation stuff.
- ☐ Tags - ☐ Tags
- ☐ Autocomplete - ☐ Autocomplete
- ☐ Adding - ☐ Adding
- ☐ Removal - ☐ Removal
- ☐ Thumbnail - ☐ Thumbnail
- ☐ Flagging: SFW/sketchy/NSFW - ☐ Flagging: SFW/sketchy/NSFW
- ☐ Favorites - ☐ Favorites
- ☐ Adding - ☐ Adding
- ☐ Removal - ☐ Removal
- ☐ Comments - ☐ Comments
- ☐ Adding comment - ☐ Adding comment
- ☐ Modification of comment contents - ☐ Modification of comment contents
- ☐ Comment removal - ☐ Comment removal
- ☐ Comment display - ☐ Comment display
- ☐ Processing contents with Markdown parser - ☐ Processing contents with Markdown parser
- ☐ Spoiler support (`[spoiler]...[/spoiler]`?) - ☐ Spoiler support (`[spoiler]...[/spoiler]`?)
- ☐ Post permalink support (`@123`) - ☐ Post permalink support (`@123`)
- ☐ Tag permalink support (`#mushishi`) - ☐ Tag permalink support (`#mushishi`)
## Browsing posts ## Browsing posts
- Search capabilities: - Search capabilities:
- ☐ No filter, just browsing - ☐ No filter, just browsing
- ☐ Containing tag X - ☐ Containing tag X
- ☐ Not containing tag X - ☐ Not containing tag X
- ☐ Uploaded by user X - ☐ Uploaded by user X
- ☐ Favorited by user X - ☐ Favorited by user X
- ☐ Favorited by >= X users - ☐ Favorited by >= X users
- ☐ Cool boolean logic - ☐ Cool boolean logic
- Sorting capabilities: - Sorting capabilities:
- ☐ Chronologically - ☐ Chronologically
- ☐ By tag count (?) - ☐ By tag count (?)
- ☐ By favorite count - ☐ By favorite count
- ☐ By comment count - ☐ By comment count
- ☐ By content type (image, youtube, flash) - ☐ By content type (image, youtube, flash)
- ☐ Paging - ☐ Paging
- ☐ Automatic retrieval of next page when scrolled to bottom [configurable, on/off] - ☐ Automatic retrieval of next page when scrolled to bottom [configurable, on/off]
- If we're going to implement SFW/Sketchy/NSFW: - ☐ Make SFW/sketchy/NSFW configurable:
- ☐ Make these configurable what to show to registered users and what not, - ☐ let admin decide what to show to registered users and what not
Otherwise: - ☐ let admin decide what's the default mask for any logged in user
- ☐ Hide some images from unregistered users by showing them placeholder images [configurable; dictionary containing one registered-only tag -> one URL to placeholder map] - ☐ when user changes SFW/sketchy/NSFW, remember his choice.
- ☐ In either appraoch, some kind of default filter (like there is on wallbase.cc) so registered users must opt-in before showing NSFW content
## Post removal ## Post removal
- ☐ Post removal - ☐ Post removal
@ -99,6 +101,8 @@
- ☐ Merging tags (!) - ☐ Merging tags (!)
- ☐ Approval of pending registrations [only if approval pending enabled in config] - ☐ Approval of pending registrations [only if approval pending enabled in config]
Almost all of above can be easily done with manual access to db. Are we sure we want to invest time implementing this?
# Misc # Misc
- ☐ Access ranks that are mapped into bit arrays, where each bit means something else (for example, admin has "can edit any comment" set to 1 while anonymous user has "can upload new post" set to 0). Configurable. - ☐ Access ranks that are mapped into bit arrays, where each bit means something else (for example, admin has "can edit any comment" set to 1 while anonymous user has "can upload new post" set to 0). Configurable.
- ☑ Every request should be able to show essential information in JSON format when accessed with ?json suffix in URL. This would be *the* API. - ☑ Every request should be able to show essential information in JSON format when accessed with ?json suffix in URL. This would be *the* API.