Updated Roadmap (markdown)

Marcin Kurczewski 2013-10-01 14:25:01 -07:00
parent 70e46f587b
commit b60223f4cc

@ -1,69 +1,82 @@
- Registration stuff - Registration stuff
- Logging in - □ Logging in
- Registering - □ Registering
- First user becomes superadmin - □ First user becomes superadmin
- Optional e-mail address - □ User name
- Configurable activation URLs on/off - □ Password (twice)
- Checkboxes during registration with configurable texts in Markdown (so we can do "I agree that by registering I will be shown R18 content") - □ Optional e-mail address
- Editing owe's details - □ Sending activation e-mail [configurable, on/off]
- E-mail address - □ Must-check checkboxes [configurable, on/off +texts in Markdown so we can do "I agree that by registering I will be shown R18 content"]
- Password - □ Editing one's details
- [Configurable] name - □ E-mail address
- Gravatar support - □ Password
- Logging out - □ Name [configurable, on/off]
- Retrieving lost password through e-mail address - □ Gravatar support
- □ Logging out
- □ Retrieving lost password through e-mail address
- Posts stuff - Posts stuff
- Adding post - Adding 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 - [proposition] Flagging post: SFW/Sketchy/NSFW
- Multiple images? - □ Multiple upload
- Ability to remove accidentally selected images before final upload - Ability to remove accidentally selected images before final upload
- Tags - Tags
- Autocomplete - Autocomplete
- 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: configurable secret salt concatenated to random suffix - 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
- Pretty much same as above. 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
- □ Autocomplete
- □ Thumbnail
- [Proposition] flagging: SFW/sketchy/NSFW
- Browsing posts - Browsing posts
- Search capabilities: - Search capabilities:
- Containing tag X - □ No filter, just browsing
- Not containing tag X - □ Containing tag X
- Uploaded by user X - □ Not containing tag X
- Favorited by user X - □ Uploaded by user X
- Favorited by >= X users - □ Favorited by user X
- Cool boolean logic - □ Favorited by >= X users
- □ 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 - □ Automatic retrieval of next page when scrolled to bottom [configurable, on/off]
- If we're going to implement SFW/Sketchy/NSFW, make these configurable what to show to registered users and what not. Otherwise hide some images from unregistered users by showing them placeholder images (tag to placeholder dictionary becomes configurable); also in either approach there should be some kind of default filter (like there is on wallbase.cc) - If we're going to implement SFW/Sketchy/NSFW:
- Post removal - □ Make these configurable what to show to registered users and what not,
- Adding post to favorites Otherwise:
- Removing post from favorites - □ Hide some images from unregistered users by showing them placeholder images [configurable; dictionary containing one registered-only tag -> one URL to placeholder map]
- □ 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
- □ Adding post to favorites
- □ Removing post from favorites
- Comments stuff - Comments stuff
- 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
- Privileges stuff - Privileges stuff
- 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.
- Admin stuff - Admin stuff
- Listing users - □ Listing users
- Changing user passwords/mails/whatever - □ Changing user passwords/mails/whatever
- Renaming tags - □ Renaming tags
- Merging tags (!) - □ Merging tags (!)
- Misc
- ▣ Every request should be able to show essential information in JSON format when accessed with ?json suffix in URL. This would be *the* API.