Author Topic: The development of darqforum: a websockets real-time live updating smflike forum  (Read 2963 times)

0 Members and 1 Guest are viewing this topic.

adarqui

  • Administrator
  • Hero Member
  • *****
  • Posts: 30416
  • who run it.
  • Respect: +7440
    • View Profile
    • Email
This is very early in the design stage. Just going to fill this initial post with ideas that pop into my head.

Goal of the project

To design a forum in nodejs that makes use of live updates at every level. Also, a barebones system that is plugin-capable at pretty much every level. I'm mostly interested in getting the skeleton programmed, the most basic functioning level of this system. Eventually, added functionality should be plugin-capable, which doesn't mean the modification of core code, but in fact means plugins that set hooks into the base code and add functionality in this manner. I don't want actual code patching, i'd rather have patching via hooking into various public interfaces in the base code.


Ideas

  • Must be real-time, live updating: New posts should automatically show up, latest threads updated, current users updated, etc etc.
  • Needs to be compatible with SMF's MYSQL db structure. darqforum db entries should be indistinguishable from smf, hand in hand
  • There needs to be an intermediary layer to notify darqforum when a post goes through on the normal SMF forum since both will be running initially
  • Each "VIEW" needs a VIEW_ID. Views are: category list, subforum topic list, per-thread list. Users will obtain updates based on their 'current VIEW_ID'
  • New topic: Update all users browsing the MAIN INDEX CATEGORIES LIST and the SPECIFIC SUBFORUM LIST
  • New post: Update ^^^ ... Also update any user who is currently viewing that specific thread VIEW_ID
  • Need specific color codings for: new thread, new post, modified post in thread
  • Users should be able to send each other live pm's: small facebook-like pm list + tabs
  • Various thread templates: Blog (post from user, comments to post from others), Todo List, Notes, Normal, Page (only one post), etc
  • User logs in: update everyone viewing the MAIN INDEX CATEGORIES LIST
  • User logs out: ^^^ same
  • HTML5 web cache all css files
  • User definable color schemes
  • If member is posting: If someone posts to that thread, need to update all users who are posting in that SPECIFIC THREAD VIEW ID
  • No need to refresh, but make sure nothing screws up if someone does refresh (need smart urls at all times)
  • User's profiles are more like FB walls with: status posts, favorite posts/threads, videos/pics uploads, and comments on all of that stuff
  • Smart "workout templates" (plus other kinds of templates) for posts? Ability to post in template which ends up in thread, but also updates databases for progress tracking/graphs etc.
  • Possible smart keyword/linking, ie, squat, could link to a page with squat demo videos
  • Navigation should NOT require any actual page refreshes
  • This server MUST force https communication.
  • GZIP'd/BZIP'd communication/updates. Need compression.
  • MUST: Need an extremely flexible template system.. html files, plugins, etc, all made up of variables: MAIN_INDEX, USERS_247, etc, so people can easily set things up how they want.




Ideas

Example html templates:
Code: [Select]
TITLE: blah
MENU
CATEGORIES
USERS24_7
RECENT_POST
USERS24_7

etc..

Need a modules template system too..
Code: [Select]
LOAD /pub/mods/blah

^^ This will add a module/plugin to the system.

We need PRE AND POST hooks for each major code section or some way that plugin code can dynamically link in, properly.. so, instead of people's plugins modifying the actual darqforum framework code, it instead just inserts itself somewhere... to an appropriate area that is able to get hooked.







Resource   POST
(create)   GET
(read)   PUT
(update)   DELETE
(delete)
/products   create a new product   list products   bulk update products   delete all products
/products/1234   error   show 1234   if exists update 1234, else error

POST GET PUT DELETE
/thread/
/index
/profile
/chat

/forum/
/forum/subforum

http://www.pixelhandler.com/blog/2012/02/09/develop-a-restful-api-using-node-js-with-express-and-mongoose/


/login
 - GET: get login information for self
 - POST: attempt to login
 - PUT: try and escalate privs?
 - DELETE: logout

/forum/
 - GET: returns list of subforums and most recent topic
 - POST: as admin, will create a subforum
 - PUT: as admin, will update a subforum (title/description etc)
 - DELETE: as admin, will delete a subforum

/forum/<subforum>
 - GET: returns a list of threads within that subforum
 - POST: posts a thread within that subforum
 - PUT: if owner, updates a thread's subject within that subforum
 - DELETE: if owner, deletes thread

/forum/<subforum>/<topic>/
 - GET: returns that thread (page indexed)
 - POST: creates, modifies (if owner of post), or replies to a thread
 - PUT: updates a thread
 - DELETE: if owner, deletes a thread or post within that thread

/users
 - GET: list of users on forum
 - POST: if admin, add a user
 - PUT: if admin, update a user
 - DELETE: if admin, delete a user

/profile
 - GET: returns current profile
 - PUT: updates current profile

/profile/<user>
 - GET: returns profile of a user

/search/
 - GET: search something