Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: clarify and update requirements of the async-race task #1765

Merged
merged 4 commits into from
Mar 24, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 35 additions & 5 deletions stage2/tasks/async-race/non-functional-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ Mentors will evaluate the "Async Race" Single Page Application (SPA) based on th

## πŸ“¦ Bundling and Tooling (20 points)

- **Use of Webpack or Similar (20 points):** Implement Webpack or another bundling tool to compile the project into a minimal set of files, ideally one HTML file, one JS file, and one CSS file.
- **Use bundler (Vite/Webpack or similar) (20 points):** Implement bundling tool to compile the project into a minimal set of files, ideally one HTML file, one JS file, and one CSS file.

## βœ… Code Quality and Standards (15 points)

- **Eslint with Airbnb Style Guide (15 points):** Adhere to the Airbnb ESLint configuration to maintain code quality. Specific rules may be adjusted only with mentor approval, and there should be no ESLint errors or warnings.
- **Eslint with Unicorn Style Guide (15 points):** Adhere to the Unicorn ESLint configuration to maintain code quality. There should be no ESLint errors or warnings

## πŸ“ Code Organization and Efficiency (15 points)

Expand All @@ -32,15 +32,45 @@ Mentors will evaluate the "Async Race" Single Page Application (SPA) based on th
## 🎨 Prettier and ESLint Configuration (10 points)

- **(5 points)** Prettier is correctly set up with two scripts in `package.json`: `format` for auto-formatting and `ci:format` for checking issues.
- **(5 points)** ESLint is configured with the [Airbnb style guide](https://github.com/airbnb/javascript). A `lint` script in `package.json` runs ESLint checks.
- **(5 points)** ESLint is configured with the [Unicorn](https://www.npmjs.com/package/eslint-plugin-unicorn). A `lint` script in `package.json` runs ESLint checks.
Specific rules may be adjusted only with mentor approval, e.g.:

```json
{
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
"unicorn/no-array-callback-reference": "off",
"unicorn/no-array-for-each": "off",
"unicorn/no-array-reduce": "off",
"unicorn/no-null": "off",
"unicorn/number-literal-case": "off",
"unicorn/numeric-separators-style": "off",
"unicorn/prevent-abbreviations": [
"error",
{
"allowList": {
"acc": true,
"env": true,
"i": true,
"j": true,
"props": true,
"Props": true
}
}
]
}
```

## 🌟 Overall Code Quality (35 points)

- **(Up to 35 points)** Discretionary points awarded by the mentor based on overall code quality, readability

## πŸ”’ Mandatory Requirements

- **No Libraries/Frameworks (-100%):** The use of libraries or frameworks such as JQuery, React, Angular, Lodash, Material Design, etc., is strictly prohibited. Bootstrap CSS is permitted for styling purposes only.
- **Typescript Usage (-100%):** The application must be developed using TypeScript. All method input and output parameters must be typed accurately, and the use of "any" type is not allowed.
- **No Libraries/Frameworks (-100%):** The use of libraries or frameworks such as JQuery, React, Angular, Lodash, Material Design, etc., is strictly prohibited.

- Bootstrap CSS is permitted for **styling purposes** only.
- CSS modules, CSS Preprocessors (`Sass`, `Less`, `Stylus`, `PostCSS`, etc.), CSS in JS libraries (`tailwindcss`, `jss`, `emotion/css`, etc.), `clsx/classnames` package are allowed.

- **Typescript Usage (-100%):** The application must be developed using TypeScript. All method input and output parameters must be typed accurately, and the use of explicit or implicit "any" type, type assertions (`foo as BarType`) and non-nullability assertions (`y!`) is not allowed.

These criteria emphasize the importance of clean code, proper architecture, and adherence to modern development practices. Mentors will use these guidelines to assess the technical execution and overall quality of the project.
Loading