StarHackIt Analysis - mitrais-cdc-js/starhackit GitHub Wiki

Backend:

  • Engine use Koa instead of Express. Koa is next generation web framework for NodeJs designed by the team behind Express, with async/await support and greatly increase error-handling. However the learning curve for Koa is high compare to Express.
  • Database ORM/ORD: Sequelize with support for MySQL, Postgres, SQL Server, and SQLite.
  • Do not use server side templating.
  • Routing use the Koa routing engine.

Complete Backend documentation

Frontend:

  • UI use Material UI instead of Bootstrap and use just plain CSS (without CSS preprocessor SASS/Less/Stylus).
  • State container or management using famous Redux.
  • Use React Router.

Complete Frontend documentation

Maintainability and extensibility:

This is the important part that describe how easily we can do the changes and extend the framework.

So far I only able to edit landing page, title, and some simple change on field. The difficult part is creating full CRUD since apparently the backend is very complex and difficult to understand.

Development:

  • Pre installation and running framework for first time: Very complex since we need to start two servers (backend and frontend) and have error ‘eslint src’ when starting backend server.

  • Initial Learning Curve: This framework is difficult to learn even for the simplest CRUD code changes.

  • Ease of Development: Not yet explore this criteria due to initial learning curve.

  • File and folder structure is grouped by Client and Server. Then each folder are divided by by modules and functions.

  • Popularity and Google/Stack Overflow references: This framework do not have google or Stack Overflow references.

Security:

  • Fined-grained Authorization based on users, groups and resources.
  • Local Authentication using Json Web Token.
  • Social Authentication with Facebook, Google, etc .. Powered by passport

QA:

  • Unit test: has extensive support for both backend and frontend unit test
  • E2E test: support with Nightwatch
  • Code coverage: has extensive analysis using CodeClimate and Coveralls.
  • Lint/check style: using Eslint

Other special feature, for example:

  • Use GraphQL
  • Support concatenation, minification, obfuscation, and compression
  • DevOps: This framework has awesome support for Travis, DevLab, Trevor, Ansible, and Docker
  • Monitoring using PM2
  • Localization (L10n) and Internationalization (I18n) using i18next
  • Redis session store
  • A use case for using a RabbitMq
  • Comprehensive logging with timestamp and filename.

Weakness:

  • Seems do not have example for Isomorphic/Universal JavaScript. Isomorphic JavaScript is the new term ascribed to websites that can be rendering server side OR client side. This is useful when the complexity of the User Experience increases.
  • No generator/scaffolding for creating module or API
  • Slow page loading response

Recommendation or purpose:

Still do not explore yet. But seems can be use for complex production web app like:

  • Social media twitter or facebook style app
  • Dashboard app
  • Marketplace app