Skip to content

sharevb/it-tools

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BREAKING CHANGE for Container Image

Since the base image is now nginx-unpriviledged the container will now listen to port 8080 and not 80. So you need to update your port mapping, i.e. from 8080:80 to 8080:8080.

If the container needs to listen to IPv6, it needs to be enabled: https://serverfault.com/questions/1147296/how-to-enable-ipv6-on-ubuntu-20-04. Alternatively, you can mount your own nginx.conf own using docker option -v "./nginx.conf:/etc/nginx/conf.d/nginx.conf" (with listen [::]:8080; removed)

PR Welcome

Especially for UI improvements and translation. And for anything else.

Want to support this fork of IT Tools: Buy me a coffee

HTTPS is recommended

Some tools like PGP encryption rely on WebCrypto API that is only available in HTTPS/SSL. Also, if you want to use PWA, HTTPS is required.

So even on internal installations, you should enable HTTPS using Let's Encrypt using DNS Challenge

Some docs about DNS Challenge:

Related doc for CyberPanel: https://community.cyberpanel.net/t/reverse-proxy-traffic-to-docker-container-on-cyberpanel/30644

You can use my image in your docker-compose/quadlet file if you want an up-to-date version of it-tools (with my PR and some of others) until the main branch has been updated.

(Thanks to gitmotion for this model of README fork)

Contributors

Big thanks to all the people who have already contributed!

contributors

Development under Windows

Use of WSL2 is recommended to develop using VSCode on Windows. Direct development is tricky (because of some dependencies)

Added features

Almost all tools PR of it-tools.

Container images

GitHub Container Registry: ghcr.io/sharevb/it-tools:latest

Docker Hub: sharevb/it-tools:latest

Use in Docker Compose file

services:
  it-tools:
    container_name: it-tools
    image: sharevb/it-tools:latest
    pull_policy: always
    restart: unless-stopped
    ports:
      - 8080:8080

Use in Podman Quadlet file

[Unit]
Description=IT Tools container
After=network-online.target

[Container]
AutoUpdate=registry
Image=ghcr.io/sharevb/it-tools:latest
PublishPort=8080:8080
Label=io.containers.autoupdate=registry

[Install]
WantedBy=multi-user.target default.target

[Service]
Restart=always

Filter tools and add home custom content

You can add custom content in Home page by mounting a home.custom.md in /usr/share/nginx/html.

You can filter available tools by mounting tools-filter.json in /usr/share/nginx/html. It can contains the following filtering regex:

{
  "excludeCategoryFilterRegex": "",
  "includeCategoryFilterRegex": "",
  "excludeToolsFilterRegex": "",
  "includeToolsFilterRegex": ""
}

Category matches on category (English) names ; Tools matches on tools path/url.

See (docker-tools-filter-and-home-content)[https://github.com/sharevb/it-tools]

Setting default tools parameters / default UI language at runtime

You can set default tool parameters by mounting a tools-setting.json in /usr/share/nginx/html.

It is a two level json, with the first level being for tool name and the second level for parameter name:

{
  "regex-tester": {
    "multi": true,
    "regex": "some regex",
    "global": false
  }
}

You can find tool name and parameter name in the tools source code src/tools subfolder :

  • example pattern for const global = useQueryParamOrStorage({ storageName: 'regex-tester:g', name: 'global', defaultValue: true });:
{
  "regex-tester": {
    "global": false
  }
}
  • example pattern for const value = useQueryParam({ tool: 'barcode-gen', name: 'text', defaultValue: '123456789' });:
{
  "barcode-gen": {
    "text": "4356"
  }
}
  • example pattern for const width = useITStorage('ascii-text-drawer:width', 80);:
{
  "ascii-text-drawer": {
    "width": 80
  }
}

To define the default UI language, add a default_locale key to json:

{
  "default_locale": "fr"
}

To build using a custom default language:

docker build -t it-tools-fr --build-arg VITE_LANGUAGE=fr .
docker run -d --name it-tools-fr --restart unless-stopped -p 8080:8080 it-tools-fr

Build container image for a custom subfolder

According to https://github.com/sharevb/it-tools/pull/461#issuecomment-1602506049 and CorentinTh#461:

docker build -t it-tools  --build-arg BASE_URL="/my-folder/" .
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 it-tools

Then if you go to http://localhost:8080 you'll get a blank page, but opening the DevTools (& refreshing) you'll notice in the Network tab that the app is trying to fetch assets from /my-folder/...

So you would need to put another server in front of it, like Nginx Proxy Manager, Traefik, caddy etc. Then setup a reverse proxy pass using /my-folder

Docker compose for hosting in a /it-tools/ subfolder

For /it-tools/ subfolder, you can use baseurl-it-tools tag.

See sample of docker-compose.yml and nginx.conf, this docker image needs to have another reverse proxy in front of it, like Nginx Proxy Manager, Traefik, caddy etc.

Setup a reverse proxy pass using /it-tools/. And you should be able to access it-tools in /it-tools/ of your server.

To run the sample:

git clone https://github.com/sharevb/it-tools
cd it-tools/docker-subfolder-sample/
docker compose up

Then navigate to http://localhost:8080/it-tools/

To build using a custom folder:

  1. BASE_URL="/it-tools/" pnpm build
  2. Rename the generated dist folder to it-tools and serve on https://your-domain.com/it-tools

To build for GitHub Pages:

  1. Enable GitHub Pages build and deployment option in your fork, under Settings > Pages and select GitHub Actions as the source
  2. Add the following GitHub action to your repo: https://github.com/sharevb/it-tools/.github/workflows/sharevb-github-pages-publish.yml

To add authentication

Assuming you're already hosting it-tools behind a reverse proxy, you can configure forward-auth and enforce authentication from the reverse proxy

(thanks @jogerj)

Contribute

Recommended IDE Setup

VSCode with the following extensions:

with the following settings:

{
  "editor.formatOnSave": false,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "i18n-ally.localesPaths": ["locales", "src/tools/*/locales"],
  "i18n-ally.keystyle": "nested"
}

Type Support for .vue Imports in TS

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue types.

If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:

  1. Disable the built-in TypeScript Extension
    1. Run Extensions: Show Built-in Extensions from VSCode's command palette
    2. Find TypeScript and JavaScript Language Features, right click and select Disable (Workspace)
  2. Reload the VSCode window by running Developer: Reload Window from the command palette.

Project Setup

pnpm install --ignore-scripts

Compile and Hot-Reload for Development

pnpm dev

Type-Check, Compile and Minify for Production

pnpm build

Run Unit Tests with Vitest

pnpm test

Lint with ESLint

pnpm lint

Create a new tool

To create a new tool, there is a script that generate the boilerplate of the new tool, simply run:

pnpm run script:create:tool my-tool-name

It will create a directory in src/tools with the correct files, and a the import in src/tools/index.ts. You will just need to add the imported tool in the proper category and develop the tool.

Installation methods

Local installation required installing first: python3 make g++

Container Image Local Installation
GitHub Container Registry: ghcr.io/sharevb/it-tools:latest
Docker Hub: sharevb/it-tools:latest
sudo apt-get install python3 make g++ && git clone -b chore/all-my-stuffs https://github.com/sharevb/it-tools.git && cd it-tools/ && pnpm i --ignore-scripts && pnpm dev
replace your current image with this image copy & paste oneliner (from github repo)
You may need to clear cache and hard reload to get new features loading Installing packages for the first time may take some time; please wait until it finishes
logo

Useful tools for developer and people working in IT. Have a look !.

Functionalities and roadmap

Please check the issues to see if some feature listed to be implemented.

You have an idea of a tool? Submit a feature request!

Self host

Self host solutions for your homelab

From docker hub:

docker run -d --name it-tools --restart unless-stopped -p 8080:8080 corentinth/it-tools:latest

From github packages:

docker run -d --name it-tools --restart unless-stopped -p 8080:8080 ghcr.io/corentinth/it-tools:latest

Other solutions:

Contributors

Big thanks to all the people who have already contributed!

contributors

Credits

Coded with ❤️ by Corentin Thomasset.

This project is continuously deployed using vercel.com.

Contributor graph is generated using contrib.rocks.

IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt

License

This project is under the GNU GPLv3.

About

My additions (and of others) to it-tools! (Collection of handy online tools for developers, with great UX. )

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Vue 57.5%
  • TypeScript 38.8%
  • JavaScript 3.6%
  • HTML 0.1%
  • Dockerfile 0.0%
  • EJS 0.0%