Skip to content
Open
Show file tree
Hide file tree
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
189 changes: 189 additions & 0 deletions active-tasks/node-nodejs-data-processing-cli.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
{
"taskName": "Data Processing CLI",
"github": "https://github.com/AlreadyBored/nodejs-assignments/blob/main/assignments-v2/02-data-processing-cli/assignment.md",
"criteria": [
{
"type": "title",
"title": "The task must be checked on the LTS version of Node.js.\nIf there are uncertainties about whether to lower the evaluation for the assignment or not, the benefit of the doubt is given to the student."
},
{
"type": "title",
"title": "1.Basic Scope: +42"
},
{
"type": "subtask",
"text": "Application starts with npm run start and displays welcome message",
"max": 6
},
{
"type": "subtask",
"text": "Application exits gracefully with `.exit` command or `Ctrl+C` and displays goodbye message",
"max": 10
},
{
"type": "subtask",
"text": "Current working directory is printed at startup and after each successful operation",
"max": 6
},
{
"type": "subtask",
"text": "Unknown or invalid commands display Invalid input and application continues running",
"max": 10
},
{
"type": "subtask",
"text": "Operations that fail display Operation failed and application continues running",
"max": 10
},

{
"type": "title",
"title": "2.Navigation Commands: +28"
},
{
"type": "subtask",
"text": "`up` command moves up one directory level correctly",
"max": 8
},
{
"type": "subtask",
"text": "`cd` command navigates to specified directory (both relative and absolute paths)",
"max": 8
},
{
"type": "subtask",
"text": "`ls` command lists files and folders with proper sorting (folders first, then files, alphabetically)",
"max": 12
},
{
"type": "title",
"title": "3.Data Processing Commands: +80"
},
{
"type": "subtask",
"text": "`csv-to-json` command works correctly (headers parsed, rows converted to objects, output is valid JSON array, uses Streams)",
"max": 20
},
{
"type": "subtask",
"text": "`json-to-csv` command works correctly (headers from object keys, values as rows, uses Streams)",
"max": 20
},
{
"type": "subtask",
"text": "`count` command works correctly (lines, words, characters counted via Streams, output format matches specification)",
"max": 12
},
{
"type": "subtask",
"text": "`hash` command works correctly (SHA256 by default, supports `md5` and `sha512` via `--algorithm` option, uses Streams, supports `--save` to write hash file next to input)",
"max": 12
},
{
"type": "subtask",
"text": "`encrypt` command works correctly (AES-256-GCM, key derivation from password+salt, Streams, output format matches spec)",
"max": 8
},
{
"type": "subtask",
"text": "`decrypt` command works correctly (AES-256-GCM, key derivation from password+salt, Streams, authTag verified, result matches original)",
"max": 8
},
{
"type": "title",
"title": "4.Path Resolution: +26"
},
{
"type": "subtask",
"text": "All file paths in commands are correctly resolved relative to current working directory",
"max": 16
},
{
"type": "subtask",
"text": " All file operations properly handle errors (non-existent files, invalid paths, permission errors)",
"max": 10
},
{
"type": "title",
"title": "5.Advanced Scope: `log-stats` command works correctly: +28"
},
{
"type": "subtask",
"text": "File is split into chunks equal to the number of CPU cores (line boundaries preserved)",
"max": 6
},
{
"type": "subtask",
"text": "Each chunk is processed in a separate Worker Thread",
"max": 10
},
{
"type": "subtask",
"text": "Partial stats are merged correctly (counters, maps, totals)",
"max": 6
},
{
"type": "subtask",
"text": "Final output JSON matches the specification",
"max": 6
},
{
"type": "title",
"title": "5.Advanced Scope: Project structure follows the specification : +16"
},
{
"type": "subtask",
"text": "Project structure follows the specification (separate files for navigation, commands, utilities, worker)",
"max": 16
},
{
"type": "title",
"title": "5.Advanced Scope: Interactive REPL implementation: +20"
},
{
"type": "subtask",
"text": "Maintains application state (current working directory) across commands",
"max": 10
},
{
"type": "subtask",
"text": "Properly handles readline for continuous command input",
"max": 10
},
{
"type": "title",
"title": "5.Advanced Scope: `hash-compare` command works correctly: +10"
},
{
"type": "subtask",
"text": "`hash-compare` command works correctly (reads expected hash from file, computes current hash with selected algorithm, returns OK / MISMATCH)",
"max": 10
},

{
"type": "penalty",
"text": "-95% of total task score Any external tools/libraries are used",
"max": -237.5
},
{
"type": "penalty",
"text": "-30% of total task score Commits after deadline (except commits that affect only Readme.md, .gitignore, etc.)",
"max": -75
},
{
"type": "penalty",
"text": "-20 Missing PR or its description is incorrect",
"max": -20
},
{
"type": "penalty",
"text": "-20 No separate development branch",
"max": -20
},
{
"type": "penalty",
"text": "-20 Less than 3 commits in the development branch, not including commits that make changes only to `Readme.md` or similar files (`tsconfig.json`, `.gitignore`, `.prettierrc.json`, etc.)",
"max": -20
}
]
}
2 changes: 1 addition & 1 deletion tasks-to-render.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"0":"active-tasks/angular-connections-project.json","1":"active-tasks/angular-train-a-project.json","2":"active-tasks/Angular-YouTube-client.json","3":"active-tasks/art-quiz.json","4":"active-tasks/async-race.json","5":"active-tasks/audio-player.json","6":"active-tasks/calculator.json","7":"active-tasks/christmas-shop-1.json","8":"active-tasks/christmas-shop-2.json","9":"active-tasks/christmas-shop-3.json","10":"active-tasks/clean-code-s1e1.json","11":"active-tasks/codejam-2022q3.json","12":"active-tasks/codejam-css-bayan.json","13":"active-tasks/codejam-the-gem-puzzle.json","14":"active-tasks/coffee-house-week-1.json","15":"active-tasks/coffee-house-week-2.json","16":"active-tasks/coffee-house-week-3.json","17":"active-tasks/covid-dashboard.json","18":"active-tasks/css-meme-slider.json","19":"active-tasks/custom-video.json","20":"active-tasks/cv-stage1.json","21":"active-tasks/cv.json","22":"active-tasks/decision-making-tool.json","23":"active-tasks/eco-sounds.json","24":"active-tasks/ecommerce-application-sprint-1.json","25":"active-tasks/ecommerce-application-sprint-2.json","26":"active-tasks/ecommerce-application-sprint-3.json","27":"active-tasks/ecommerce-application-sprint-4.json","28":"active-tasks/english-for-kids.json","29":"active-tasks/english-puzzle.json","30":"active-tasks/fancy-weather.json","31":"active-tasks/fun-chat.json","32":"active-tasks/hangman.json","33":"active-tasks/HTML&CSS.json","34":"active-tasks/html-builder.json","35":"active-tasks/image-galery.json","36":"active-tasks/js30.json","37":"active-tasks/library-part1.json","38":"active-tasks/library-part2.json","39":"active-tasks/library-part3.json","40":"active-tasks/memory-game.json","41":"active-tasks/minesweeper.json","42":"active-tasks/momentum-stage1.json","43":"active-tasks/momentum.json","44":"active-tasks/movie-app.json","45":"active-tasks/movie-search.json","46":"active-tasks/museum-adaptive.json","47":"active-tasks/museum-dom.json","48":"active-tasks/museum-fixed.json","49":"active-tasks/museum-stage0.json","50":"active-tasks/museum.json","51":"active-tasks/node-battleship.json","52":"active-tasks/node-crud-api.json","53":"active-tasks/node-file-manager.json","54":"active-tasks/node-graphql-basics.json","55":"active-tasks/node-home-library-service-part-1.json","56":"active-tasks/node-nodejs-basics.json","57":"active-tasks/Nodejs_basic-task1-caesar.json","58":"active-tasks/not-fight-club.json","59":"active-tasks/online-store.json","60":"active-tasks/pair-em-up.json","61":"active-tasks/photo-filter.json","62":"active-tasks/plants-part1.json","63":"active-tasks/plants-part2.json","64":"active-tasks/plants-part3.json","65":"active-tasks/portfolio-part1.json","66":"active-tasks/portfolio-part2.json","67":"active-tasks/portfolio.json","68":"active-tasks/random-game.json","69":"active-tasks/random-jokes.json","70":"active-tasks/react-class-components.json","71":"active-tasks/react-schedule.json","72":"active-tasks/react-xcheck.json","73":"active-tasks/react_final.json","74":"active-tasks/react_forms.json","75":"active-tasks/react_nextJs.json","76":"active-tasks/react_redux.json","77":"active-tasks/react_routing.json","78":"active-tasks/react_testing_and_context.json","79":"active-tasks/rs-clone-presentation.json","80":"active-tasks/rs-clone.json","81":"active-tasks/rs-ds-2-linear-regression.json","82":"active-tasks/rs-ds-7-clustering-dimensionality-reduction.json","83":"active-tasks/rs-lang.json","84":"active-tasks/rs-scc.json","85":"active-tasks/rslang.json","86":"active-tasks/rss-english-for-kids.json","87":"active-tasks/rss-fancy-weather.json","88":"active-tasks/rss-movie-search.json","89":"active-tasks/rss-nonograms-checklist.json","90":"active-tasks/rss-singolo-dom-and-responsive.json","91":"active-tasks/rss-singolo.json","92":"active-tasks/rss-virtual-keyboard.json","93":"active-tasks/schedule.json","94":"active-tasks/shelter-part-1.json","95":"active-tasks/shelter-part-2.json","96":"active-tasks/shelter-part-3.json","97":"active-tasks/simon-says.json","98":"active-tasks/song-bird.json","99":"active-tasks/songbird.json","100":"active-tasks/speakit.json","101":"active-tasks/tic-tac-toe.json","102":"active-tasks/travel-part1.json","103":"active-tasks/travel-part2.json","104":"active-tasks/travel-part3.json","105":"active-tasks/typescript-essentials.json","106":"active-tasks/virtual-keyboard-2023q1.json","107":"active-tasks/virtual-keyboard.json","108":"active-tasks/virtual-piano.json","109":"active-tasks/wildlife.json","110":"active-tasks/node-nodejs-fundamentals.json"}
{"0":"active-tasks/angular-connections-project.json","1":"active-tasks/angular-train-a-project.json","2":"active-tasks/Angular-YouTube-client.json","3":"active-tasks/art-quiz.json","4":"active-tasks/async-race.json","5":"active-tasks/audio-player.json","6":"active-tasks/calculator.json","7":"active-tasks/christmas-shop-1.json","8":"active-tasks/christmas-shop-2.json","9":"active-tasks/christmas-shop-3.json","10":"active-tasks/clean-code-s1e1.json","11":"active-tasks/codejam-2022q3.json","12":"active-tasks/codejam-css-bayan.json","13":"active-tasks/codejam-the-gem-puzzle.json","14":"active-tasks/coffee-house-week-1.json","15":"active-tasks/coffee-house-week-2.json","16":"active-tasks/coffee-house-week-3.json","17":"active-tasks/covid-dashboard.json","18":"active-tasks/css-meme-slider.json","19":"active-tasks/custom-video.json","20":"active-tasks/cv-stage1.json","21":"active-tasks/cv.json","22":"active-tasks/decision-making-tool.json","23":"active-tasks/eco-sounds.json","24":"active-tasks/ecommerce-application-sprint-1.json","25":"active-tasks/ecommerce-application-sprint-2.json","26":"active-tasks/ecommerce-application-sprint-3.json","27":"active-tasks/ecommerce-application-sprint-4.json","28":"active-tasks/english-for-kids.json","29":"active-tasks/english-puzzle.json","30":"active-tasks/fancy-weather.json","31":"active-tasks/fun-chat.json","32":"active-tasks/hangman.json","33":"active-tasks/HTML&CSS.json","34":"active-tasks/html-builder.json","35":"active-tasks/image-galery.json","36":"active-tasks/js30.json","37":"active-tasks/library-part1.json","38":"active-tasks/library-part2.json","39":"active-tasks/library-part3.json","40":"active-tasks/memory-game.json","41":"active-tasks/minesweeper.json","42":"active-tasks/momentum-stage1.json","43":"active-tasks/momentum.json","44":"active-tasks/movie-app.json","45":"active-tasks/movie-search.json","46":"active-tasks/museum-adaptive.json","47":"active-tasks/museum-dom.json","48":"active-tasks/museum-fixed.json","49":"active-tasks/museum-stage0.json","50":"active-tasks/museum.json","51":"active-tasks/node-battleship.json","52":"active-tasks/node-crud-api.json","53":"active-tasks/node-file-manager.json","54":"active-tasks/node-graphql-basics.json","55":"active-tasks/node-home-library-service-part-1.json","56":"active-tasks/node-nodejs-basics.json","57":"active-tasks/Nodejs_basic-task1-caesar.json","58":"active-tasks/not-fight-club.json","59":"active-tasks/online-store.json","60":"active-tasks/pair-em-up.json","61":"active-tasks/photo-filter.json","62":"active-tasks/plants-part1.json","63":"active-tasks/plants-part2.json","64":"active-tasks/plants-part3.json","65":"active-tasks/portfolio-part1.json","66":"active-tasks/portfolio-part2.json","67":"active-tasks/portfolio.json","68":"active-tasks/random-game.json","69":"active-tasks/random-jokes.json","70":"active-tasks/react-class-components.json","71":"active-tasks/react-schedule.json","72":"active-tasks/react-xcheck.json","73":"active-tasks/react_final.json","74":"active-tasks/react_forms.json","75":"active-tasks/react_nextJs.json","76":"active-tasks/react_redux.json","77":"active-tasks/react_routing.json","78":"active-tasks/react_testing_and_context.json","79":"active-tasks/rs-clone-presentation.json","80":"active-tasks/rs-clone.json","81":"active-tasks/rs-ds-2-linear-regression.json","82":"active-tasks/rs-ds-7-clustering-dimensionality-reduction.json","83":"active-tasks/rs-lang.json","84":"active-tasks/rs-scc.json","85":"active-tasks/rslang.json","86":"active-tasks/rss-english-for-kids.json","87":"active-tasks/rss-fancy-weather.json","88":"active-tasks/rss-movie-search.json","89":"active-tasks/rss-nonograms-checklist.json","90":"active-tasks/rss-singolo-dom-and-responsive.json","91":"active-tasks/rss-singolo.json","92":"active-tasks/rss-virtual-keyboard.json","93":"active-tasks/schedule.json","94":"active-tasks/shelter-part-1.json","95":"active-tasks/shelter-part-2.json","96":"active-tasks/shelter-part-3.json","97":"active-tasks/simon-says.json","98":"active-tasks/song-bird.json","99":"active-tasks/songbird.json","100":"active-tasks/speakit.json","101":"active-tasks/tic-tac-toe.json","102":"active-tasks/travel-part1.json","103":"active-tasks/travel-part2.json","104":"active-tasks/travel-part3.json","105":"active-tasks/typescript-essentials.json","106":"active-tasks/virtual-keyboard-2023q1.json","107":"active-tasks/virtual-keyboard.json","108":"active-tasks/virtual-piano.json","109":"active-tasks/wildlife.json","110":"active-tasks/node-nodejs-fundamentals.json","111":"active-tasks/node-nodejs-data-processing-cli.json"}