Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dominique-mueller/my-development-setup

My personal development setup, for Frontend Development on Windows.
https://github.com/dominique-mueller/my-development-setup

chrome conemu development environment frontend git node npm powershell setup vscode windows

Last synced: 10 days ago
JSON representation

My personal development setup, for Frontend Development on Windows.

Awesome Lists containing this project

README

        

# My Development Setup

My personal development setup, for Frontend Development on Windows.



## Code Editor: [Visual Studio Code](https://code.visualstudio.com/)

Lightweight Code Editor, focused on and optimized for web development.

If I have to look into code other than Frontend, I usually install and use
**[IntelliJ](https://www.jetbrains.com/de-de/idea/download/#section=windows)** for that.


### Theme

I am currently using my own custom theme **[Deep Ocean](https://marketplace.visualstudio.com/items?itemName=itsdevdom.theme-deep-ocean)**
which is based on the Oceanic Next color palette! It's simple, it's dark - it's fantastic!


### Font

I am currently using the **[MonoLisa](https://www.monolisa.dev/)** font (paid) and I really do enjoy it a lot. If you are looking for an
alternative, I can highly recommend Microsoft's **[Cascadia Code](https://github.com/microsoft/cascadia-code)** font (free).


### Extensions

The following are my must-have extensions for all kinds of web development. Depending on the project I am currently working on, I sometimes
disable some extensions.

| Extension | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| **[Angular Language Service](https://marketplace.visualstudio.com/items?itemName=Angular.ng-template)** | Improve editing experience in Angular HTML templates |
| **[Auto Close Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag)** | Automatically close paired HTML / XML / JSX tags |
| **[Auto Rename Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag)** | Automatically rename paired HTML / XML / JSX tags |
| **[Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments)** | Improved code comment colorization |
| **[Cloak](https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-cloak)** | Hide secrets in env files |
| **[CodeMetrics](https://marketplace.visualstudio.com/items?itemName=kisstkondoros.vscode-codemetrics)** | Code complexity computation in JavaScript / TypeScript |
| **[Color Highlight](https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight)** | Highlight colors |
| **[DotENV](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv)** | Support for dotenv file syntax |
| **[EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)** | Apply settings defined in .editconfig file |
| **[Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens)** | Improve error and warning highlighting |
| **[ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)** | ESLint support |
| **[Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory)** | Enhanced Git |
| **[GitHub Markdown Preview (Extension Pack)](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview)** | Markdown Preview, using the Github Theme |
| **[GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)** | Enhanced Git |
| **[Guides](https://marketplace.visualstudio.com/items?itemName=spywhere.guides)** | Indentation guide lines |
| **[Image Preview](https://marketplace.visualstudio.com/items?itemName=kisstkondoros.vscode-gutter-preview)** | Image previews within gutter |
| **[IntelliCode](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode)** | AI-assist |
| **[IntelliCode API Usage Examples](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.intellicode-api-usage-examples)** | Code examples |
| **[JSON5 syntax](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-json5)** | JSON5 language support |
| **[Kubernetes](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools)** | Kubernetes support |
| **[Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare)** | Real-time collaboration |
| **[MDX](https://marketplace.visualstudio.com/items?itemName=silvenon.mdx)** | MDX language support |
| **[Open in Browser](https://marketplace.visualstudio.com/items?itemName=techer.open-in-browser)** | Open HTML files in browser(s) |
| **[Partial Diff](https://marketplace.visualstudio.com/items?itemName=ryu1kn.partial-diff)** | Diffing tool |
| **[Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)** | Prettier |
| **[Sass](https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented)** | SASS language support |
| **[Sass Lint](https://marketplace.visualstudio.com/items?itemName=glen-84.sass-lint)** | SASS linter |
| **[Sort JS object keys](https://marketplace.visualstudio.com/items?itemName=zengxingxin.sort-js-object-keys)** | Quickly sort JS objects by key |
| **[Sort JSON objects](https://marketplace.visualstudio.com/items?itemName=richie5um2.vscode-sort-json)** | Quickly sort JSON objects by key |
| **[Sort lines](https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines)** | Quickly sort lines in different ways / by different criteria |
| **[Sync Scroll](https://marketplace.visualstudio.com/items?itemName=dqisme.sync-scroll)** | Synchronize scolling across editor tabs |
| **[TODO Highlight](https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight)** | Highlight TODOs, FIXMEs and similar comments |
| **[Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree)** | Panel listing all TODO comments |
| **[Total TypeScript](https://marketplace.visualstudio.com/items?itemName=mattpocock.ts-error-translator)** | Improved TypeScript error messages |
| **[Trailing Spaces](https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces)** | Highlighting and auto-removal of trailing spaces |
| **[Version Lens](https://marketplace.visualstudio.com/items?itemName=pflannery.vscode-versionlens)** | Dependency version infos in `package.json` |
| **[XML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml)** | XML language support |
| **[YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)** | YAML language support |


### Settings

The following are my settings (includes settings for extensions, theme, font, ...):

```json
{
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json5]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.quickSuggestions": {
"comments": "off",
"other": "off",
"strings": "off"
},
"editor.wordWrap": "off"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[yaml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"breadcrumbs.enabled": false,
"debug.javascript.codelens.npmScripts": "never",
"editor.accessibilitySupport": "off",
"editor.bracketPairColorization.enabled": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"editor.fontFamily": "'MonoLisa', Consolas, 'Courier New', monospace",
"editor.fontSize": 13,
"editor.guides.highlightActiveIndentation": false,
"editor.guides.indentation": false,
"editor.lineHeight": 22,
"editor.linkedEditing": true,
"editor.minimap.maxColumn": 140,
"editor.rulers": [
140
],
"editor.stickyScroll.enabled": true,
"editor.suggestSelection": "first",
"editor.tabSize": 2,
"editor.tokenColorCustomizations": {
"textMateRules": []
},
"emmet.showExpandedAbbreviation": "never",
"emmet.triggerExpansionOnTab": true,
"explorer.confirmDragAndDrop": false,
"extensions.ignoreRecommendations": true,
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"git.enableCommitSigning": true,
"git.openRepositoryInParentFolders": "always",
"gitlens.codeLens.enabled": false,
"gitlens.currentLine.enabled": false,
"html.format.indentHandlebars": true,
"html.format.indentInnerHtml": true,
"html.format.wrapLineLength": 140,
"javascript.preferences.importModuleSpecifier": "relative",
"javascript.preferences.quoteStyle": "single",
"markdown-preview-github-styles.colorTheme": "light",
"prettier.printWidth": 140,
"prettier.singleQuote": true,
"redhat.telemetry.enabled": true,
"terminal.external.windowsExec": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"terminal.integrated.cursorBlinking": true,
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.scrollback": 10000,
"totalTypeScript.hideAllTips": true,
"totalTypeScript.hideBasicTips": true,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": true,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": true,
"typescript.locale": "en",
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.preferences.quoteStyle": "single",
"typescript.updateImportsOnFileMove.enabled": "always",
"vs-kubernetes": {
"vscode-kubernetes.minikube-path.windows": "C:\\Users\\domin\\.vs-kubernetes\\tools\\minikube\\windows-amd64\\minikube.exe"
},
"window.commandCenter": true,
"window.newWindowDimensions": "maximized",
"workbench.colorTheme": "Deep Ocean",
"workbench.editor.closeOnFileDelete": true,
"workbench.editor.decorations.badges": false,
"workbench.layoutControl.enabled": false,
"workbench.startupEditor": "none",
"workbench.tips.enabled": false,
"workbench.tree.indent": 13
}
```


### Keyboard Shortcuts

The following are my keyboard shortcuts:

```javascript
[
{
key: 'ctrl+shift+space',
command: 'editor.action.commentLine',
when: 'editorTextFocus && !editorReadonly',
},
{
key: 'ctrl+shift+alt+f4',
command: 'workbench.action.reloadWindow',
},
];
```




## Console: [ConEmu](https://conemu.github.io/en/Downloads.html) running [PowerShell](https://www.microsoft.com/store/productId/9MZ1SNWT0N5D)

ConEmu is a terminal wrapper application, adding useful features and customizations. Most interestingly, multiple consoles (even of
different types) can run in the same window via a tab interface, and even be arranged in a single split-view.

> [Windows Terminal](https://www.microsoft.com/store/productId/9N0DX20HK701) kinda goes into a similar direction, but is missing the same
> level of split-view customization (e.g. freely movable borders, vertical split-views). So it's not a replacement / better alternative
> (yet).


### ConEmu Settings

At "General",

- find "Choose color scheme", then select "Twilight"

At "Startup",

- find "Specific named task", and make sure that "PowerShell" is selected

At "Startup" > "Tasks", find the Powershell tasks and

- enable both "Default task for new console" and "Default shell"
- update the "Commands" to use "pwsh.exe"
- click "Startup dir..." and select your projects folder


### PowerShell Settings

Auto-complete based on command history can be enabled in PowerShell.

Open PowerShell profile file (will be created if it does not exist):

```powershell
Notepad $profile
```

Add following configuration:

```powershell
# Autocomple based on history, via arrow keys
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
```


### PowerShell Extension: [PoshGit](https://github.com/dahlbyk/posh-git) for PowerShell

Displays additional Git status information (e.g. current branch, changes) within the PowerShell at the beginning of lines. Git, obviously,
needs to be installed upfront.

Run the following commands within a PowerShell:

```powershell
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
Add-PoshGitToProfile -AllHosts
```




## Version Control: [Git](https://git-scm.com/)

Version Control Software, accessibly via command line.


### Settings

Look at the current configuration using:

```bash
git config --global --list
```

Add options using:

```bash
git config --global user.name
git config --global user.email
git config --global core.ignorecase false # act case sensitive
git config --global status.showUntrackedFiles all # show indivisual files in untracked directories
git config --global push.default current # push new branches to origin by default
git config --global push.autoSetupRemote true # auto-track branches pushed to origin
git config --global credential.helper wincred # Remember credentials via Windows
```

> Also read **[Better Git configuration](https://blog.scottnonnenberg.com/better-git-configuration/)**.


### Commit Signing with GPG

Sometimes it is a good idea / might be required to setup **[Commit Signing via GPG](https://help.github.com/articles/signing-commits-with-gpg/)**.

After installing **[GNU (for Windows)](https://gnupg.org/download/)**, continue **[generating a new GPG key and make it available to GitHub](https://help.github.com/articles/generating-a-new-gpg-key/)**. Then, use the following coniguration for Git:

```conf
user.signingkey=
commit.gpgsign=true
gpg.program=C:\Program Files (x86)\GnuPG\bin\gpg.exe
```




## Runtime: [NodeJS](https://nodejs.org/)

I manage multiple NodeJS versions via **[Volta](https://github.com/volta-cli/volta)**, a tool that's very similar to nvm but also runs
properly on Windows.

Pre-requisite: Enable Developer Mode in the Settings app under "Privacy & security" > "For developers".

Install preferred Node.js version:

```bash
volta install node@
```




## Browser: [Google Chrome](https://www.google.de/chrome/index.html)

Primary browser for development purposes.


### Extensions

The following are my must-have extensions for Frontend development in general. Depending on the project I am currently working on, I
sometimes disable some extensions.

| Extension | Description |
| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| **[Augury](https://chrome.google.com/webstore/detail/augury/elgalmkoelokbchhkhacckoklkejnhcd)** | Adds tools for debugging and profiling Angular applications |
| **[aXe](https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd)** | Adds tools for accessibility testing |
| **[Baseliner](https://chrome.google.com/webstore/detail/baseliner/agoopbiflnjadjfbhimhlmcbgmdgldld)** | Show lines for vertical rhythm |
| **[ChromeLens](https://chrome.google.com/webstore/detail/chromelens/idikgljglpfilbhaboonnpnnincjhjkd)** | Simulates visual impairments |
| **[ColorZilla](https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp)** | Color Picker |
| **[Contributors on GitHub](https://chrome.google.com/webstore/detail/contributors-on-github/cjbacdldhllelehomkmlniifaojgaeph)** | Shows contribution details on GitHub PRs |
| **[Dimensions](https://chrome.google.com/webstore/detail/dimensions/baocaagndhipibgklemoalmkljaimfdj)** | Measure dimensions of elements on hover |
| **[Feature Queries Manager](https://chrome.google.com/webstore/detail/feature-queries-manager/fbhgnconlfgmienbmpbeeenffagggonp)** | Manage CSS feature queries |
| **[Fireshot](https://chrome.google.com/webstore/detail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg)** | Makes full-sized screenshots |
| **[Mindful](https://chrome.google.com/webstore/detail/mindful-beta/cieekmjjdkckhpidgaffphlaljdfhhab)** | Shows a beautiful notepad as the new tab page |
| **[JSON Formatter](https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa)** | Formats JSON files opened in the browser |
| **[Pesticide](https://chrome.google.com/webstore/detail/pesticide-for-chrome/bblbgcheenepgnnajgfpiicnbbdmmooh)** | Shows elements outlines |
| **[GitHub Markdown Menu](https://chrome.google.com/webstore/detail/github-markdown-menu/jekgocfoijmbgcjejohdgmojaejofdpo)** | Shows a markdown table of contents as a dropdown menu |
| **[React Developer Tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi)** | Adds tools for debugging and profiling React applications |
| **[Tab Size on GitHub](https://chrome.google.com/webstore/detail/tab-size-on-github/ofjbgncegkdemndciafljngjbdpfmbkn)** | Decreases GitHub indentation wideness |
| **[VisBug](https://chrome.google.com/webstore/detail/visbug/cdockenadnadldjbbgcallicgledbeoc)** | Design debugging tools |
| **[Wappalyzer](https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg)** | Detects technologies used by a website |
| **[WAVE Evaluation Tool](https://chrome.google.com/webstore/detail/wave-evaluation-tool/jbbplnpkjmmeebjpijfedlgcdilocofh)** | Adds tools for accessibility testing |
| **[Web Developer](https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm)** | Toolbar with various development helpers |
| **[Web Vitals](https://chrome.google.com/webstore/detail/web-vitals/ahfhijdlegdabablpippeagghigmibma)** | Website health metrics |
| **[WhatFont](https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm)** | Shows used font family on hover |




## Other Software

The following is a list of further Software I usually get for development and testing purposes.


### Browsers

| Name | Source | Description |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| **Google Chrome** | [Website](https://www.google.de/chrome/index.html) | Primary browser |
| **Mozilla Firefox** | [Store](https://www.microsoft.com/store/productId/9NZVDKPMR9RD), [Website](https://www.mozilla.org/en-US/firefox/browsers/) | Additional browser |


### Design

| Name | Source | Description |
| --------------------- | ------------------------------------------------------ | ---------------------------------------- |
| **Figma** | [Website](https://www.figma.com/de/downloads) | Design, Wireframing, Prototyping |
| **Just Color Picker** | [Website](https://annystudio.com/software/colorpicker) | Global color picker |
| **ScreenToGif** | [Website](https://www.screentogif.com) | GIF screen recorder (e.g. for docs, PRs) |


### Development Tools

| Name | Source | Description |
| -------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
| **Notepad++** | [Website](https://notepad-plus-plus.org/downloads) | Universal file editor |
| **Postman** | [Website](https://www.getpostman.com) | HTTP API testing |
| **WinMerge** | [Website](https://winmerge.org) | Compare files and folders |
| **Fiddler Classic** | [Website](https://www.telerik.com/fiddler/fiddler-classic) | Analyze HTTP / HTTPS traffic, simulate corporate proxy |
| **Firecamp** | [Website](https://firecamp.io) | HTTP / GraphQL / WebSocket API testing |
| **Hoppscotch (prev. Postwoman)** | [Website](https://hoppscotch.io) | HTTP / WebSocket & SSE API testing |
| **GitHub CLI** | [Website](https://cli.github.com/) | GitHub CLI |
| **NVDA** | [Website](http://nvda.bhvd.de) | Screenreader (for testing accessibility) |
| **FileZilla** | [Website](https://filezilla-project.org) | Simple FTP Client |
| **pgAdmin** | [Website](https://www.pgadmin.org/download/pgadmin-4-windows) | PostgreSQL database tool |
| **MongoDB Compass** | [Website](https://www.mongodb.com/try/download/compass) | MongoDB database tool |
| **MQTT Explorer** | [Website](http://mqtt-explorer.com) | MQTT testing |
| **Docker Desktop** | [Website](https://docs.docker.com/desktop/install/windows-install) | Docker container management |
| **MiniKube** | [Website](https://minikube.sigs.k8s.io/docs) | Running Kubernetes clusters locally |
| **kubectl** | [Website](https://kubernetes.io/docs/tasks/tools) | Manage Kubernetes clusters |
| **k9s** | [Website](https://k9scli.io/) | Manage Kubernetes clusters |