Professional Documents
Culture Documents
Gigachat Proposal
Gigachat Proposal
Project Proposal
SWE Team 1
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)
2
- Node.js comes with NPM, a powerful package manager that provides access to a vast
ecosystem of open-source libraries and frameworks.
- Node.js has a large and active community of developers, providing resources, tutorials,
and support.
WHY EXPRESS?
- Simplicity: Express offers a minimalist and intuitive API, allowing developers to focus on clean
and concise code without unnecessary complexity.
- Middleware: Express has a robust middleware system for adding modular and reusable
functionality to applications, such as request parsing, authentication, and error handling.
- Routing: Express provides a flexible routing system for handling different types of requests and
implementing RESTful APIs, with support for route parameters and query parameters.
- Integration with Node.js ecosystem: Express seamlessly integrates with other Node.js modules
and libraries, leveraging the vast ecosystem of packages and tools available.
- Performance: Express is lightweight, efficient, and designed for high concurrency, making it
suitable for large-scale applications and performance optimization techniques.
WHY NOSQL?
- Flexible Data Model: NoSQL databases offer a flexible schema-less design, accommodating
unstructured or evolving data structures.
- Scalability: NoSQL databases scale horizontally, distributing data across multiple servers for
handling large amounts of data and high traffic loads.
- High Performance: NoSQL databases prioritize performance, optimizing read and write
operations for fast data retrieval and processing.
- Schema-less Design: NoSQL databases eliminate rigid schemas, allowing for easier data
modeling and manipulation.
- Our Project doesn’t need very complex queries which is the best advantage of SQL.
UNIT TESTING
Why Jest?
4
- 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.
Why not other testing tools e.g. 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.
- Source: www.browserstack.com/guide/jest-vs-mocha-vs-jasmine
FRONT-END TECHNOLOGIES
Used Frameworks/Technologies/tools/libraries:
ReactJs. (Java script library)
Jest. (Testing)
Naming Convention:
Files, Components: Pascal Case
Variables: camelCase
5
Handlers: handleEvent or handleComponentEvent (e.g. handleCommentSubmit)
Questions
Why did we use React?
Why Tailwind?
Why Docgen?
Answers
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), 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.
Technical Analysis
React's component-based architecture enables developers to break down their user interfaces into
small, reusable components. This makes it easier to develop, maintain, and scale large and complex
UIs.
React has a shallow learning curve and most of us have already started learning it
React uses a virtual DOM, which is a lightweight representation of the actual DOM. This allows React
to efficiently update the UI when there is a change in the data without having to redraw the entire page.
This makes React apps fast and responsive.
7
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.
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.
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.
NAMING CONVENTIONS
We searched some articles and found that these are the most famous best practices by experienced
people, you will find in the references those articles.
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.
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.
8
REACT DOCGEN
React Docgen automates the process of generating documentation for components. saving us the time
of writing and maintaining documentation manually.
The generated documentation from React Docgen provides a clear and standardised format for
understanding and using the components. It includes information about props, prop types, default
values, and other relevant details.