{"id":13847462,"url":"https://github.com/radarsu/me","last_synced_at":"2025-12-30T21:07:34.289Z","repository":{"id":88330092,"uuid":"156095798","full_name":"radarsu/me","owner":"radarsu","description":"Highly personal and opinionated AWESOME stuff for Typescript, JavaScript and Node.js full-stack developers along with my own best practices and setups 🙈🙉🙊","archived":false,"fork":false,"pushed_at":"2020-02-01T07:46:20.000Z","size":162,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-22T13:33:47.657Z","etag":null,"topics":["angular","assets","awesome","awesome-list","config","configuration","full-stack","misc","miscellaneous","node","nodejs","opinionated","opinionated-defaults","personal","setup","typescript","util","utilities","windows"],"latest_commit_sha":null,"homepage":"https://radarsu.radrat.pl/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/radarsu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-11-04T15:23:33.000Z","updated_at":"2023-09-08T17:46:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"7bdfd3b1-3850-46f5-beb1-5e3cb21bcb42","html_url":"https://github.com/radarsu/me","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radarsu%2Fme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radarsu%2Fme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radarsu%2Fme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radarsu%2Fme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radarsu","download_url":"https://codeload.github.com/radarsu/me/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224246083,"owners_count":17279648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","assets","awesome","awesome-list","config","configuration","full-stack","misc","miscellaneous","node","nodejs","opinionated","opinionated-defaults","personal","setup","typescript","util","utilities","windows"],"created_at":"2024-08-04T18:01:27.104Z","updated_at":"2025-12-30T21:07:34.263Z","avatar_url":"https://github.com/radarsu.png","language":null,"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/radarsu/me/\" target=\"blank\" alt=\"me\"\u003e\u003cimg src=\"https://github.com/radarsu/me/blob/master/assets/logo.png?raw=true\" alt=\"me logo\" /\u003e\u003c/a\u003e\u003cbr/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cstrong\u003ePersonal version of \u003ca href=\"https://github.com/sindresorhus/awesome\" target=\"_blank\" alt=\"awesome\"\u003eAwesome\u003c/a\u003e, best practices and setups.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\tThe purpose of this repository is to share resources and setups interesting for TypeScript, Node.js and JavaScript full-stack developers.\n\u003c/p\u003e\n\n## Description\nAwesome repositories are usually targetted at certain things like - programming language, technology, books, etc. This one is composition of completely different stuff that's just personal, but might be useful for any full-stack developer interested in JavaScript, Node.js, Typescript and Angular - or simply working on same platform as I am (currently Windows).\n\n## Content\n- [Community](#community)\n  - [Gitter](#gitter)\n- [Performance](#performance)\n  - [Loops](#loops)\n  - [DOM](#dom)\n- [Practices](#practices)\n  - [Comments](#comments)\n  - [Naming](#naming)\n  - [Other Practices](#other-practices)\n- [Resources](#resources)\n  - [Angular](#angular)\n  - [TypeScript](#comments)\n  - [Other Resources](#other-resources)\n- [Windows Setup](#windows-setup)\n  - [Tools](#tools)\n  - [System](#system)\n  - [Windows Subsystem Linux](#windows-subsystem-linux)\n  - [Windows PowerShell](#windows-powershell)\n  - [Git, Node, Npm](#git-node-npm)\n  - [Docker](#docker)\n  - [Google Chrome](#google-chrome)\n  - [VS Code](#vs-code)\n  - [Run Commands (.rc)](#run-commands)\n\n# Community\n\n## Gitter\n- \u003cstrong\u003e\u003ca href=\"https://gitter.im/\" target=\"_blank\" alt=\"gitter\"\u003eGitter\u003c/a\u003e\u003c/strong\u003e - if you ever looked for a programmers chat where you could post a question and instantly get an answer (not like \u003ca href=\"https://stackoverflow.com\" target=\"_blank\" alt=\"stackoverflow\"\u003estackoverflow\u003c/a\u003e), I recommend joining channels: \n  - \u003cstrong\u003e\u003ca href=\"https://gitter.im/Microsoft/TypeScript\" target=\"_blank\" alt=\"typescript gitter\"\u003eTypeScript\u003c/a\u003e\u003c/strong\u003e\n  - \u003cstrong\u003e\u003ca href=\"https://gitter.im/angular/angular\" target=\"_blank\" alt=\"angular gitter\"\u003eAngular\u003c/a\u003e\u003c/strong\u003e\n  - \u003cstrong\u003e\u003ca href=\"https://gitter.im/nodejs/node\" target=\"_blank\" alt=\"node gitter\"\u003eNode.js\u003c/a\u003e\u003c/strong\u003e\n\n# Performance\n\n## Loops\n- Fastest loop:\n```ts\nfor (let i = array.length - 1; i \u003e= 0; --i) {\n\n}\n```\n- `for of` better than `forEach`\n\n## DOM\n- `innerHTML` \u003e `appendChild` (appendChild allows you to not lose events bound to DOM though)\n\n# Practices\n\n## Comments\n- `// Start comments upperFirst with a dot in the end.`\n- `/* Start comments upperFirst with a dot in the end. */`\n- Place a line breaks before and after \"comment block\" except for return:\n```ts\nif (true) {\n\n    // comment\n    doSomething();\n\n    // next comment\n    doSomethingElse();\n\n    // except for return\n    return noLineBreakAfterMe();\n}\n```\n\n## Naming\n- **\u0026 vs And** - prefer \"and\", leave \"\u0026\" for brand names and programming actions.\n- **0.0.0 vs 1.0.0** - start development with `0.0.0` version, use `1.0.0` for first working release.\n- **Add vs Create** - prefer \"add\". It's more intuitive for non-programmers.\n- `app.js` **vs** `index.js` **vs** `main.js` **vs** `server.js`** - prefer `main.js` for an entry file, as it is chosen by Angular and NestJS. Leave index for `index.html` and default exporting via `index.js`.\n- **Argument vs Parameter** - use params for method parameters, leave arguments for command line.\n- **Async vs Defer** - prefer defer over async.\n- **Attribute vs Property** - attribute for xml, properties for objects.\n- **Change vs Modify vs Update** - prefer \"update\". It's more standard.\n- **Common vs Partials vs Shared** - common for library names, shared for directory name, don't use partials, except as part of file extension.\n- **Configuration vs Options vs Preferences vs Settings**\n  - **Configuration** - for internal system (for example: `webpack.config.js`, `ecosystem.config.js`).\n  - **Options** - for others choices (especially other developers, for example: `\u003cradarsu-web-component options=\"\"\\\u003e`).\n  - **Settings** - for system-administrating end-user (for example: `admin dashboard`)\n  - **Preferences** - for end-user (for example: `website visitor`).\n- **Controller vs Resolver vs Route** - controller for REST, resolver for GraphQL, route for analysis of url, query and params and pointing to one of previously listed.\n- **createdAt vs creationDate** - prefer \"createdAt\" over \"creationDate\". It's shorter and more common.\n- **Delete vs Remove** - prefer \"remove\". It's more intuitive for non-programmers.\n- **Demo vs Showcase** - prefer \"showcase\".\n- **Entity vs Model** - use model, as it's part of MVC naming.\n- **Helper, Handler, Manager** - don't use those at all. They carry no meaning.\n- **Module vs Package** - module for internal stuff, package for external libraries.\n- **Page vs View** - use view, as sometimes one page/view may be part of another one (also it's part of MVC).\n- **Spec vs Test** - use spec, used by Angular and Google. Leave \"test\" for manual testing.\n- **Node.js vs NodeJS** - Node.js, it's how it stands at their official page.\n\nFor general rules watch \u003ca href=\"https://www.youtube.com/watch?v=CjOR5gCCZpk\u0026feature=youtu.be\u0026fbclid=IwAR08aUXhJ0AInlDnmIs2mnkPESOaro9B0hGFmMgVynQXbMvaVATE5o6If6U\" target=\"_blank\"\u003eHow to name things in programming?\u003c/a\u003e.\n\n## Other Practices\n- **Convention over Configuration** - prefer naming convetions over configuration of stuff. It often allows you to skip a lot of redundant code and data.\n- **directory-naming** - use lowercase and dashes (kebab-case) for directory naming, never use `_` in directory naming. `.` is allowed for domain names.\n- **Encoding** - utf8mb4_unicode_ci is the most correct.\n- **Export everything** - when writing modules export almost everything except highly private functions. You never know what somebody would like to reuse or hack into.\n- **File naming convention** - `file-name.scope.extension` (for example: `user.model.ts`, `news.controller.ts`).\n- **Line length 150** is reasonable size (good for PC and laptops with 1920x1080 resolution). Eventually use 120.\n- **Single method parameter** - prefer methods with single, complex parameter over multiple parameters - it's easier to refactor such method and keep backwards compatibility.\n- **Port practices**\n  - \u003c1000, 1337, 3000, 4200, 8080-9999 - do not use those, they're commonly used.\n  - 5001-5999 - production.\n  - 6001-6999 - development, except 6666.\n  - 7001-7999 - testing.\n- **Prefix interfaces** - prefer ISomeInterface over SomeInterface. TypeScript guidelines are against that, but that practice is actually very useful and stops you from common mistakes of trying to instantiate interfaces.\n- **Use trailing commas** in arrays and after multiline object properties - it makes it easier to expand the code.\n- **Use semicolons**, it's simply more popular (easier to copy code from documentations without need to adjust) and less error-prone.\n- **Sort everything alphabetically** - When there is no certain logical order in elements, object keys or function call order.\n- **Stay close to the metal** - do not make unnecessary wrappers, abstractions. If you use some library internally for example in an object constructor, allow passing configuration data to the library in an unchanged manner.\n- `\u003cstrong\u003e\u003ca\u003elink\u003c/a\u003e\u003c/strong\u003e` \u003e `\u003ca\u003e\u003cstrong\u003elink\u003c/strong\u003e\u003c/a\u003e`.\n\n# Resources\n\n## Angular\n- \u003cstrong\u003e\u003ca href=\"https://malcoded.com/posts/angular-fundamentals-modules\" target=\"_blank\" alt=\"angular modules explained\"\u003eAngular Modules\u003c/a\u003e\u003c/strong\u003e - definitions of angular modules `declaration`, `imports`, `providers` and `exports`.\n- \u003cstrong\u003e\u003ca href=\"https://itnext.io/choosing-a-highly-scalable-folder-structure-in-angular-d987de65ec7\" target=\"_blank\" alt=\"angular application structure\"\u003eApplication Structure\u003c/a\u003e\u003c/strong\u003e - angular or any other module-based application directory structure.\n\n## Typescript\n- \u003cstrong\u003e\u003ca href=\"https://github.com/torokmark/design_patterns_in_typescript\" target=\"_blank\" alt=\"typescript design patterns\"\u003eDesign patterns\u003c/a\u003e\u003c/strong\u003e\n\n## Other Resources\n- \u003ca href=\"http://chir.ag/projects/name-that-color/#722E75\" target=\"_blank\" alt=\"tool for color naming\"\u003eColor naming\u003c/a\u003e\n- \u003cstrong\u003e\u003ca href=\"https://graphql.org/learn/authorization/\" target=\"_blank\" alt=\"angular modules explained\"\u003eGraphQL authorization\u003c/a\u003e\u003c/strong\u003e\n- \u003ca href=\"https://tailwindcss.com/docs/\" target=\"_blank\" alt=\"utility first tailwind\"\u003eUtility-first CSS\u003c/a\u003e \u0026gt; BEM vs SMACSS vs OOCSS\n\n# Windows Setup\n\n## Tools\n- \u003ca href=\"https://www.7-zip.org/\" target=\"_blank\"\u003e7-zip\u003c/a\u003e\n- \u003ca href=\"https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe\" target=\"_blank\"\u003eDocker for Windows\u003c/a\u003e\n- \u003ca href=\"https://filezilla-project.org/\" target=\"_blank\"\u003eFilezilla\u003c/a\u003e\n- \u003ca href=\"https://www.google.com/intl/en/chrome/\" target=\"_blank\"\u003eGoogle Chrome\u003c/a\u003e\n- \u003ca href=\"https://getgreenshot.org/\" target=\"_blank\"\u003eGreenshot\u003c/a\u003e\n- Microsoft Office\n- \u003ca href=\"https://www.mongodb.com/download-center/compass\" target=\"_blank\"\u003eMongoDB Compass\u003c/a\u003e\n- \u003ca href=\"https://notepad-plus-plus.org/download/\" target=\"_blank\"\u003eNodepad++\u003c/a\u003e [set all text-files to be opened by default]\n- \u003ca href=\"https://www.getpostman.com/downloads/\" target=\"_blank\"\u003ePostman\u003c/a\u003e\n- \u003ca href=\"https://github.com/Eugeny/terminus/releases/latest\" target=\"_blank\"\u003eTerminus\u003c/a\u003e\n- \u003ca href=\"https://code.visualstudio.com/download/\" target=\"_blank\"\u003eVS Code\u003c/a\u003e\n\n### Optional\n- \u003ca href=\"https://www.bittorrent.com/lang/pl/\"\u003eBitTorrent\u003c/a\u003e\n- \u003ca href=\"https://discordapp.com/download\" target=\"_blank\"\u003eDiscord\u003c/a\u003e\n- \u003ca href=\"https://www.gimp.org/downloads/\" target=\"_blank\"\u003eGIMP\u003c/a\u003e\n- \u003ca href=\"https://letsview.com/\" target=\"_blank\"\u003eLetsView\u003c/a\u003e\n- \u003ca href=\"https://napiprojekt.pl/download/\" target=\"_blank\"\u003eNapiProjekt\u003c/a\u003e\n- \u003ca href=\"http://plantuml.com/download\"\u003ePlantUML\u003c/a\u003e\n- \u003ca href=\"https://protonvpn.com/download/\" target=\"_blank\"\u003eProtonVPN\u003c/a\u003e\n- \u003ca href=\"https://slack.com/intl/en-de/downloads/windows\"\u003eSlack\u003c/a\u003e\n- \u003ca href=\"https://www.videolan.org/\" target=\"_blank\"\u003eVLC Media Player\u003c/a\u003e\n\n## System\n- BIOS (F10 during system boot): enable Virtualization Technology (VT)\n- \u003ca href=\"https://www.fontsquirrel.com/fonts/fira-code\" target=\"_blank\"\u003eFiraCode Font\u003c/a\u003e\n- Windows Subsystem Linux Ubuntu (Microsoft Store)\n- At `C:\\Windows\\System32\\drivers\\etc\\hosts` add `127.0.0.1 localhost.radrat.pl`\n\n## Windows Subsystem Linux\n- `sudo apt install build-essential docker docker-compose make`\n\n## Windows PowerShell\n- Turn on Hyper-V for Docker: `Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All`\n\n## Git, Node, Npm\n`npm i -g @angular/cli @nestjs/schematics docusaurus-init eslint lerna lint-staged nodemon nps pm2 prettier prettier-eslint-cli ts-node tldr tslint typescript windows-build-tools webpack`\n\n`npm login`\n\n`git config --global user.name \"Artur Kurowski\"`\n\n`git config --global user.email \"radarsu@gmail.com\"`\n\n## Docker\n- Settings: `Expose deamon on tcp://localhost:2375 without TLS`  \n\n## Google Chrome\n- \u003ca href=\"https://chrome.google.com/webstore/detail/css-peeper/mbnbehikldjhnfehhnaidhjhoofhpehk\" target=\"_blank\"\u003eCSSPeeper\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/nodejs-v8-inspector-manag/gnhhdgbaldcilmgcpfddgdbkhjohddkj\" target=\"_blank\"\u003eNode Inspector Manager\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/pop-up-blocker-for-chrome/bkkbcggnhapdmkeljlodobbkopceiche\" target=\"_blank\"\u003ePop up blocker\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/red-labels-for-pivotal-tr/agijkohaieagbidlmjjlajhlkpfoegao\" target=\"_blank\"\u003eRed Labels for Pivotal Tracker\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd\" target=\"_blank\"\u003eRedux DevTools\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo\" target=\"_blank\"\u003eTampermonkey\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/ublock-plus-adblocker/oofnbdifeelbaidfgpikinijekkjcicg\" target=\"_blank\"\u003euBlock Plus Adblocker\u003c/a\u003e\n- \u003ca href=\"https://chrome.google.com/webstore/detail/youtube-nonstop/nlkaejimjacpillmajjnopmpbkbnocid\" target=\"_blank\"\u003eYouTube NonStop\u003c/a\u003e\n\n## VS Code\n- Better comments\n- Bracker Pair Colorizer 2\n- Browser Preview\n- Cobalt2\n- Docker\n- Editorconfig for VS Code\n- ESlint\n- Git Graph\n- GitLab Workflow\n- Gitlens\n- GraphQL\n- Markdown all in one\n- Material Icon Theme\n- Prettier\n- Remote Development\n- Sort js object keys\n- Toggle quotes\n- TSlint\n- TypeScript Hero\n \n## Run Commands\n- .bashrc\n  - Ending: \n```\n# nvm\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 \\. \"$NVM_DIR/nvm.sh\"  # This loads nvm\n[ -s \"$NVM_DIR/bash_completion\" ] \u0026\u0026 \\. \"$NVM_DIR/bash_completion\"  # This loads nvm bash_completion\n\n# docker\nexport DOCKER_HOST=tcp://0.0.0.0:2375\n\n# npm\nexport NPM_TOKEN=\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\n```\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradarsu%2Fme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradarsu%2Fme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradarsu%2Fme/lists"}