What's behind noodles.dev
Problem we'are trying to solve:
Finding quality learning resources proved to be difficult as there are many low quality, incomplete, outdated or incomplete tutorials Search engines are not able to rate the quality of learning resources and unfortunately very good content gets burried under many SEO optimized articles.
The solution:
A community curated database of tutorials/courses/books would save developers countless hours on learning new technologies
Features
User Types
Regular user
- create new technology/learning resource
- can edit own resource
- submit edit suggestions on already created technology/learning resource
- review learning resource
- cast votes on technologies/edit suggestions
Moderator
- can publish/reject edit suggestions
- can directly edit a resource
Social Login
- users can login/signup into noodles.dev by using their facebook/google account
- can be extended to use any other existing identity provider
User Content Type
Technologies
Learning resources
- can have one or many technologies.
- each technology can have a version
Collections
- a grouping of multiple learning resources
- can be private or public
Searchable Database of Content
- all the user created content can be filtered and searched
Wikipedia-like editing
- any registered user can suggest edits on a particular resource
- the suggested edits can be voted by the other users and can be published/rejected by moderators
Reward system for contributing
Every registered user has a score tracking the interactions
- tracking other users voting on user’s content:
- whenever a user’s resource or review get voted by other users, we track both thumbs up and thumbs down for the author.
- thumbs up go into positive-score, thumbs down go into negative-score
- tracking user voting on other authors:
- we keep track of user votes thumbs up/down on someone’s content
Adding any resource (technology/learning resource) will contribute to the user’s positive score
Getting edit suggestions published will be rewarded, whereas getting rejected has a small score penalty
Measurables
Curent capabilities
- up to 25 000 users/day
- search through up to 1.2 milion records in under 0.5s
Speed
- 0.7s load time for homepage
- 0.7s load time for searchpage
- 99/100 score on Google PageSpeed
Bundle Sizes
- 1 .css file of 10.8 kB (top 10% of css bundle sizes < 14 kB)
- 3 .js files totaling 72.1 kB - in the top 10% js bundle sizes < 108 kB)
Running costs
- 16 USD/month
Implementation & Tech Stack
Priorites
- SEO optimized
- Fast
- Low running costs
- Maintainable
Tech Stack
- frontend:
CSS3
,HTML5
,ReactJS
,JavaScript
- backend:
django 3.11
,PostgreSQL
,Redis
,Elasticsearch 7.1
- served with:
nginx
,gunicorn
- development tools:git
,webpack
,npm