Professional Documents
Culture Documents
1. Back-End Technologies.............................................................................................................................3
A. Used Frameworks | DBMS | Libraries:...............................................................................................3
B. Naming Conventions...........................................................................................................................3
C. Questions & Answers:.........................................................................................................................4
I. Why did we choose NodeJS?..............................................................................................................4
II. Why not Django?.............................................................................................................................4
III. Why not NestJS?..............................................................................................................................4
IV. Why Express?..................................................................................................................................5
V. Why not SQL?.................................................................................................................................5
VI. Why NoSQL?..................................................................................................................................5
VII. Why these naming conventions ?....................................................................................................5
VIII. Why MongoDB not Cassendra?...................................................................................................6
IX. Unit Testing.....................................................................................................................................6
2. Front-End Technologies.............................................................................................................................7
A. Used Frameworks/Technologies/tools/libraries:.................................................................................7
B. Naming Convention:...........................................................................................................................7
C. Questions.............................................................................................................................................7
D. Answers...............................................................................................................................................8
I. React JS...............................................................................................................................................8
II. Technical Analysis...........................................................................................................................9
III. Angular............................................................................................................................................9
IV. Tailwind...........................................................................................................................................9
V. Bootstrap........................................................................................................................................10
VI. Naming Conventions.....................................................................................................................10
VII. Jest.................................................................................................................................................10
VIII. Mocha/Jasmine...........................................................................................................................10
IX. React Docgen.................................................................................................................................10
1. Back-End Technologies
A.Used Frameworks | DBMS | Libraries:
NodeJS (JavaScript runtime environment)
NPM (Package Manager)
MongoDB (database management system)
Mongoose (library built on top of Mongo)
Jest (Testing)
B.Naming Conventions
Files, Components: PascalCase
Components instances: camelCase
CSS classes: flat case (all lowercase)
Constants: Screaming_Snake_case (Ex: API_URL)
Utility functions: camelCase
Props: camelCase & PascalCase for React Components
Variables: camelCase
Handlers: handleEvent or handleComponentEvent (e.g. handleCommentSubmit)
C.Questions & Answers:
I. Why did we choose NodeJS?
According to Figure (1). NodeJS is the most popular back-end library, with 42.65% of respondents
saying they use it. It is also the most wanted front-end library, with 35.25% of respondents saying they
would like to learn it.
Node.js comes with NPM, a powerful package manager that provides access to a vast ecosystem of
open-source libraries and frameworks.
Node.js is built on an event-driven, non-blocking I/O model, making it efficient for handling concurrent
connections and building scalable applications.
Node.js has a large and active community of developers, providing resources, tutorials, and support.
B.Naming Convention:
Files, Components: Pascal Case
Components instances: camelCase
CSS classes: flat case (all lowercase)
Constants: Screaming Snake case (Ex: API_URL)
Utility functions: camelCase
Props: camelCase & Pascal Case for React Components
Variables: camelCase
Handlers: handleEvent or handleComponentEvent (e.g. handleCommentSubmit)
C.Questions
Why did we use React?
Why not Angular?
Why Tailwind?
Why not Bootstrap?
Why those naming convention?
Why Jest for unit testing?
Why not Mocha/Jasmine for unit testing?
Why Docgen?
D.Answers
I. React JS
React is a wide used Java script library our current life, we chose it based on the facilities the library will
give us technically for this project, and what it will give as an experience, such experience can help us in
the market nowadays, we will first take a look on the market analysis of front-end developers.
Market analysis
According to Figure (2), React is the most popular front-end library. It has a large community and
ecosystem.
According to Figure (3), you can see that React is widely used nearly 80% of the Front-end developers
use, either in work, school, or for freelancing.
React has a large and active community, with over 1.5 million contributors on GitHub. This means that
there is a wealth of resources available to React developers, including tutorials, documentation, and
libraries.
Based on LinkedIn data and industry research, React is the most popular and in-demand front-end
technology.
Figure 3: Ranking of Usage Over Time
III. Angular
React apps are generally faster than Angular apps because of the virtual DOM.
React is fast, efficient, and is growing in popularity because it is lightweight and suitable for mobile
native.
IV. Tailwind
Utility-first approach: Tailwind CSS uses a utility-first approach, which means that it provides a set of
low-level CSS utility classes that can be combined to create any design. This means a lot of control over
CSS and makes it easy to create custom designs.
V. Bootstrap
Bootstrap uses a component-based approach, which means that it provides a set of pre-built CSS
components. This can make it easier to get started with Bootstrap, but it can also be less flexible in some
cases.
Bootstrap comes with a built-in design system that can be difficult to customize.
Tailwind CSS is generally faster than Bootstrap. This is because Tailwind CSS produces smaller and
more efficient CSS files.
Tailwind CSS is easier to learn than Bootstrap. This is because Tailwind CSS has a simpler and more
intuitive API.
VII. Jest
Jest comes with built-in features like mocking, code coverage, and snapshot testing, so we don't need to
set up additional tools or configurations to start writing tests.
It has gained significant popularity in the React community. As a result, it has a large and active
community that can provide support, share best practices, and contribute to the tool's development.
It has a "zero configuration" philosophy, meaning it works well with React projects out of the box
without requiring extensive setup. It automatically detects your test files and runs them, making it easier
to get started with testing.
VIII. Mocha/Jasmine
Jest has a simpler and more intuitive API compared to Mocha and Chai. They provide a declarative and
straightforward syntax that makes it easier to write and read tests.
Jest is an all-in-one testing framework with features like mocking, assertion, and code coverage analysis,
While Mocha is a more lightweight framework that focuses on providing a flexible test runner and
letting you choose your assertion library and mocking library.
While both Jest and Jasmine are capable testing frameworks, Jest may be a better choice for more
complex testing scenarios due to its richer feature set and faster execution speed.