NodeBB development platform and tools for novice
-
Hi Friends, I am really excited to write my first post here. I am visiting nodeBB for more than six months but never had courage to write as I am new to node.js technologies but I love forums and nodeBB.
So as for the newcomers like me and others who want to join nodeBB development including plugins, widgets and themes, I think its important to understand basic nodeBB architecture and development tools.
I am requesting you to make a list of technologies and tools one must know/learn to contribute. For example like OS, IDE, frameworks, languages, database, design/UX tools etc.
I am totally new to programming languages, as I am a database administrator (SQL).
Thank you.
-
Hey and welcome on... wait... you've been six months around already as you say
Just Hey thenHere is a list that comes to my mind:
Programming Languages, Frameworks, etc.
Plugins
- GIT - if you want a VCS for your work (you're free to use any other of cause but I highly recommend GIT)
- JavaScript (or any super-language that compiles into javascript)
- JSON - even so it's an essential part of javascript I mention it once more since it gets used a lot for configuration-files, etc.
- Node.js globals - for the very start modules is the most important. Some other important ones ain't important for most NodeBB plugins/themes but for own node.js projects they will be (path, process, file system)
- NPM basics most importantly the Getting started section to be able to use
npm
on command-line (GNU/Linux). I don't know anything about usage of NPM in MS Windows. The package.json structure is also important. - Some stuff from the NodeBB docs - especially the Writing Plugins for NodeBB section
Some NPM modules in detail:
- Grunt / Gulp is always a good thing to know about, you only need it for NodeBB module-dev if you're using testing or a super-language that compiles into js thought
- Bower is always a good thing to know about, you don't need it for NodeBB module-dev thought
- socket.io communication basics - for communication between server-side js and client-side js
- winston - server-side logging if you need to, not much to learn thought
- ... depends on targeted functionality
Example: https://github.com/NodeBB/nodebb-plugin-quickstart
Widgets (additionally)
- LESS - it's basically CSS with nested selectors allowed, every valid CSS is valid LESS
- Bootstrap - there has been at least one 3rd-party effort to add support for some other framework alike thought, not sure about the status since I like bootstrap
- psychobunny's templates.js syntax and usage
Example (@julian for consistency a nodebb-widget-quickstart would be great https://github.com/NodeBB/nodebb-widget-essentials
Themes (additionally)
- You can consider using a Bootswatch "skin" before starting customization
Example: https://github.com/NodeBB/nodebb-theme-quickstart
Development Environment
Operating System
I generally recommend GNU/Linux since it's clearly the superior OS with more clean command-line.
Anyways you're free to use any other OS as long as you can installIDE
Whatever you want.
I prefer Webstorm but it's not freeware (andvim
for fast changes )...
Many others seem to prefer Sublime Text.
Search for it here on board, there have been some threads about it...Workspace
As mentioned above Grunt or Gulp are the tools of choice for task automatization (e.g. compilation of CoffeeScript into JavaScript whenever a .coffee-file changes).
Database
NodeBB has core support for Redis and mongoDB (and levelDB if I'm right, would need to check source to ensure... ...nevermind, dropped support long ago) - even so mongoDB gets used key-value like instead of fully featuring it's power.
These are NoSQL (Not Only SQL) Databases, thus it's not recommended to actually access them using SQL commands.
But in general you won't need to access the databases directly for most plugins since there is a Settings Framework that may store plugin-dependent data and for common storage-additions there is support within the appropriate Hook-definition.
Design / UX Tools
I don't need anything other than chromium development-tools (browser console, DOM manipulation, etc.).
You may consider using a color-selection page (like http://paletton.com/) for neat color-composition.etc.
- Much practice with JavaScript and Node.js especially
- Learn interaction with NodeBB API by watching how other plugins do it
- If the former is not enough: some reverse-engineering of NodeBB core for better insight and to know which modules you may want to
require()
- For themes/widgets prefix any URL with /api to see which template-variables you have access to
Have fun and great that you want to participate
-
Thank you thousand times @frissdiegurke .
Much appreciate your reply. Its simple and clear. Will help newcomers and novice like me.