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).
Hey and welcome on... wait... you've been six months around already as you say
Just Hey then
Here is a list that comes to my mind:
Programming Languages, Frameworks, etc.
- GIT - if you want a VCS for your work (you're free to use any other of cause but I highly recommend GIT)
- 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
npmon 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
- 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
- You can consider using a Bootswatch "skin" before starting customization
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 install
Whatever you want.
I prefer Webstorm but it's not freeware (and
vimfor fast changes )...
Many others seem to prefer Sublime Text.
Search for it here on board, there have been some threads about it...
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.
- 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
- 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.
How do I mark this thread to solved?