szurubooru/TODO
Marcin Kurczewski 5d0cc93c7f Updated TODO
Turned out these were some really bad ideas:

 1) mapping mime to file types would need to be duplicated in frontend
    and backend
 2) even if frontend and backend could share mime type map somehow,
    frontend would have problems with including it - ajax and the like
 3) it either would be impossible to refer to user avatar by their owner
    user names in URLs, or dao layer would need to synchronize avatar
    content files when user changes his name
 4) presenters still need to decorate urls with /data/ and
    /data/thumbnails/100x100
 5) managing file extensions of thumbnails would be a real pain since it
    partially shares its path names with real content, but under
    different mime type

Generally it's best to leave it to Apache to transmit correct mime.
2014-10-18 18:48:26 +02:00

168 lines
5.5 KiB
Text

This is transient file that lists functionalities to be implemented before
first major release.
everything related to posts:
- post list
- fav count
- score
- comment count
- single post view
- post content
- post tags
- number of tag usages
- basic information
- uploader's picture
- remember about support for anonymous uploads
- safety
- source
- image dimensions
- time of last edit
- time of upload
- time of last feature
- how many times the post was featured
- download
- permalink
- delete
- feature
- fav
- score (see notes about scoring)
- editing
- tags
- source
- safety
- content
- thumb
- relations
- ability to loop video posts
- relations
- previous and next post (difficult)
- remember last search
- take care of pages
- add A/D hotkeys
- hiding posts
- link to iqdb and/or tineye
- featured posts
- ability to feature the post
- show the post on main page
- tag list
- uploader
- random post
- regard safety settings
- ability to paste many urls in post upload
- post listing
- regard safety settings
- add warning if no posts were found
- search filters
- tag
- -tag
- submit:rr-
- comment:rr-
- comment: 3..5
- fav:rr-
- fav:3..5
- score:3..5
- tag:3..5
- date:today
- date:yesterday
- date:yyyy[-mm[-dd]]..yyyy[-mm[-dd]]
- filesize:3K..5M
- imgsize:huge/large/medium/small
- id:3,4,5
- hash:postName
- type:img/flash/yt/video
- special:liked
- special:disliked
- special:fav
- special:hidden
- search order
- order:id
- order:date
- order:score
- order:comments
- order:favs
- order:tags
- order:commentdate
- order:favdate
- order:filesize
- safe/sketchy/unsafe buttons and top navigation search goes to post
list presenter
everything related to users:
- banning
- show link to user's uploads
- show link to user's favs
- show link to user's liked posts
everything related to tags:
- tag autocompletion (difficult)
- time of last tag usage
- time of tag addition
- mass tag
- tag merging
- manual tag relations
- manual tag aliases
- tag categories (from config.ini)
- tag descriptions
everything related to comments:
- adding comments
- listing comments in post view
- listing comments in comment list view
- deleting
- editing
- markdown
- score (see notes about scoring)
refactors:
- make PostDao use TagDao when creating not existing tags (perhaps use
separate PostTagDao for this)
- post view proxy should retrieve full tags and full user
- centralize markdown prefix decorators
- add enum validation in IValidatables (needs refactors of enums and
possible disposal of EnumHelper in favor of something more subtle)
- (idea) keep denormalized data in separate tables, i.e. tag usages in
tag_meta or post favorite count in post_meta, so that it's obvious what
can be recalculated on demand and what is real data
- change AbstractSearchService to AbstractSearchParser
- embed AbstractSearchService into Dao (it sucks to include XSearchService
together with Dao)
- simplify template loading in presenters - right now template loading
requires _, util and promise:
promise.wait(util.loadTemplate('blah'))
.then(function(html) {
template = _.template(html); });
- move content spinner code to separate module - it makes little sense for
individual presenters to use PresenterManager
miscellaneous:
- add customizable favicon
- add add customizable logo
- add log engine and log everything that should be logged
- I don't think browsing online logs is very necessary
- add help, api documentation
- add version on homepage that reads version from package.json and git hash
- make script faster, right now every request to backend takes 200ms
(current suspect: dependency injector and sqlite)
- add tool for migrating szurubooru database
- endless pager should include information about page number
- add README and INSTALL - apache2 has good README:
http://svn.apache.org/repos/asf/httpd/httpd/trunk/README
remember to mention mod_mime_magic
- add spinner to forms such as registration, user query, login, settings
etc. make sure the code isn't too duplicated.
notes about scoring:
- anonymous users should be able to score posts
- anonymous users should be able to revoke and correct their scores
- it should be difficult to score post repeatedly (add protection in local
storage, anything more is probably an overkill)
- scored of authorized users should be persisted into database so it can be
searched for with special:liked and special:disliked
some day:
- configure mails and ensure it works with gmail