├── .do └── deploy.template.yaml ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ ├── ci.yml │ └── pages.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets ├── routes.json ├── transitions.css └── variables.scss ├── components ├── beautify │ ├── Angular.vue │ ├── Css.vue │ ├── Flow.vue │ ├── Graphql.vue │ ├── Html.vue │ ├── Javascript.vue │ ├── Json.vue │ ├── Less.vue │ ├── Markdown.vue │ ├── Php.vue │ ├── Scss.vue │ ├── Typescript.vue │ ├── Vue.vue │ ├── Yaml.vue │ └── info.json ├── compilers │ ├── CC.vue │ ├── CrystalC.vue │ ├── LessC.vue │ ├── RubyC.vue │ ├── SassC.vue │ └── info.json ├── encryption │ ├── Aes2text.vue │ ├── Base642text.vue │ ├── Md5.vue │ ├── Rabbit2text.vue │ ├── Sha1.vue │ ├── Sha256.vue │ ├── Text2aes.vue │ ├── Text2base64.vue │ ├── Text2rabbit.vue │ └── info.json ├── gaming │ ├── Mcskin.vue │ ├── Mcuuid.vue │ └── info.json ├── minify │ ├── CssM.vue │ ├── JavascriptM.vue │ └── info.json ├── other │ ├── Obfuscator.vue │ ├── Rando.vue │ └── info.json ├── text │ ├── Capitalize.vue │ ├── Clappy.vue │ ├── CountCharacters.vue │ ├── CountWords.vue │ ├── Downcase.vue │ ├── Mock.vue │ ├── Reverse.vue │ ├── Upcase.vue │ └── info.json └── time │ ├── Currentunixms.vue │ ├── Discordsnowflake.vue │ └── info.json ├── jsconfig.json ├── layouts ├── default.vue └── error.vue ├── nuxt.config.js ├── package.json ├── pages ├── beautify.vue ├── compilers.vue ├── encryption.vue ├── gaming.vue ├── index.vue ├── minify.vue ├── other.vue ├── text.vue └── time.vue ├── renovate.json ├── static ├── argyle-wire.svg ├── argyle.svg ├── favicons │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── safari-pinned-tab.svg │ └── site.webmanifest └── icon.png └── yarn.lock /.do/deploy.template.yaml: -------------------------------------------------------------------------------- 1 | spec: 2 | name: argyle 3 | services: 4 | - build_command: yarn generate 5 | environment_slug: node-js 6 | github: 7 | branch: main 8 | repo: GeopJr/argyle 9 | name: argyle 10 | run_command: yarn start 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .nuxt 3 | dist 4 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true 6 | }, 7 | parserOptions: { 8 | parser: 'babel-eslint' 9 | }, 10 | extends: [ 11 | '@nuxtjs', 12 | 'plugin:nuxt/recommended' 13 | ], 14 | plugins: [ 15 | ], 16 | // add your custom rules here 17 | rules: {} 18 | } 19 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | pull_request: 9 | branches: 10 | - main 11 | - master 12 | 13 | jobs: 14 | ci: 15 | runs-on: ${{ matrix.os }} 16 | 17 | strategy: 18 | matrix: 19 | os: [ubuntu-latest] 20 | node: [14] 21 | 22 | steps: 23 | - name: Checkout 🛎 24 | uses: actions/checkout@v3.0.2 25 | 26 | - name: Setup node env 🏗 27 | uses: actions/setup-node@v3.1.1 28 | with: 29 | node-version: ${{ matrix.node }} 30 | 31 | - name: Get yarn cache directory path 🛠 32 | id: yarn-cache-dir-path 33 | run: echo "::set-output name=dir::$(yarn cache dir)" 34 | 35 | - name: Cache node_modules 📦 36 | uses: actions/cache@v3.0.2 37 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 38 | with: 39 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 40 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 41 | restore-keys: | 42 | ${{ runner.os }}-yarn- 43 | 44 | - name: Install dependencies 👨🏻‍💻 45 | run: yarn 46 | 47 | - name: Run linter 👀 48 | run: yarn lint 49 | 50 | -------------------------------------------------------------------------------- /.github/workflows/pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ${{ matrix.os }} 11 | 12 | strategy: 13 | matrix: 14 | os: [ubuntu-latest] 15 | node: [14] 16 | 17 | steps: 18 | - uses: actions/checkout@v3.0.2 19 | 20 | - name: Setup Node 21 | uses: actions/setup-node@v3.1.1 22 | with: 23 | node-version: ${{ matrix.node }} 24 | 25 | - name: Prepare yarn 26 | id: yarn-cache-dir-path 27 | run: echo "::set-output name=dir::$(yarn cache dir)" 28 | 29 | - name: Cache dependencies 30 | uses: actions/cache@v3.0.2 31 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 32 | with: 33 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 34 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 35 | restore-keys: | 36 | ${{ runner.os }}-yarn- 37 | 38 | - run: yarn 39 | - run: yarn generate 40 | 41 | - name: deploy 42 | uses: peaceiris/actions-gh-pages@v3.8.0 43 | with: 44 | github_token: ${{ secrets.GITHUB_TOKEN }} 45 | publish_dir: ./dist 46 | cname: argyle.geopjr.dev 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | /logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE / Editor 81 | .idea 82 | 83 | # Service worker 84 | sw.* 85 | 86 | # macOS 87 | .DS_Store 88 | 89 | # Vim swap files 90 | *.swp 91 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | evan@geopjr.dev. 64 | 65 | All complaints will be reviewed and investigated promptly and fairly. 66 | 67 | All community leaders are obligated to respect the privacy and security of the 68 | reporter of any incident. 69 | 70 | ## Enforcement Guidelines 71 | 72 | Community leaders will follow these Community Impact Guidelines in determining 73 | the consequences for any action they deem in violation of this Code of Conduct: 74 | 75 | ### 1. Correction 76 | 77 | **Community Impact**: Use of inappropriate language or other behavior deemed 78 | unprofessional or unwelcome in the community. 79 | 80 | **Consequence**: A private, written warning from community leaders, providing 81 | clarity around the nature of the violation and an explanation of why the 82 | behavior was inappropriate. A public apology may be requested. 83 | 84 | ### 2. Warning 85 | 86 | **Community Impact**: A violation through a single incident or series 87 | of actions. 88 | 89 | **Consequence**: A warning with consequences for continued behavior. No 90 | interaction with the people involved, including unsolicited interaction with 91 | those enforcing the Code of Conduct, for a specified period of time. This 92 | includes avoiding interactions in community spaces as well as external channels 93 | like social media. Violating these terms may lead to a temporary or 94 | permanent ban. 95 | 96 | ### 3. Temporary Ban 97 | 98 | **Community Impact**: A serious violation of community standards, including 99 | sustained inappropriate behavior. 100 | 101 | **Consequence**: A temporary ban from any sort of interaction or public 102 | communication with the community for a specified period of time. No public or 103 | private interaction with the people involved, including unsolicited interaction 104 | with those enforcing the Code of Conduct, is allowed during this period. 105 | Violating these terms may lead to a permanent ban. 106 | 107 | ### 4. Permanent Ban 108 | 109 | **Community Impact**: Demonstrating a pattern of violation of community 110 | standards, including sustained inappropriate behavior, harassment of an 111 | individual, or aggression toward or disparagement of classes of individuals. 112 | 113 | **Consequence**: A permanent ban from any sort of public interaction within 114 | the community. 115 | 116 | ## Attribution 117 | 118 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 119 | version 2.0, available at 120 | [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. 121 | 122 | Community Impact Guidelines were inspired by 123 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 124 | 125 | For answers to common questions about this code of conduct, see the FAQ at 126 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available 127 | at [https://www.contributor-covenant.org/translations][translations]. 128 | 129 | [homepage]: https://www.contributor-covenant.org 130 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html 131 | [Mozilla CoC]: https://github.com/mozilla/diversity 132 | [FAQ]: https://www.contributor-covenant.org/faq 133 | [translations]: https://www.contributor-covenant.org/translations 134 | 135 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 GeopJr 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | argyle branding 3 |

4 |

Argyle

5 |

An offline collection of online tools

6 |

7 |
8 | action accessibility 9 | MIT 10 | MIT 11 | ci action status 12 |

13 | 14 | # 15 | 16 | ## 🐱 What is this??? 17 | 18 | Argyle is a collection of tools you might come across online. The difference is that unlike most of them, everything gets executed **client-side**. This way nothing leaves your computer and you get to keep your **privacy**! Oh, this also means that you can use *most* of the tools **offline**! (It also comes with a cool **PWA**). 19 | 20 | # 21 | 22 | ## 😼 How do I build it?? 23 | 24 | ```bash 25 | # install dependencies 26 | $ yarn install 27 | 28 | # serve with hot reload at localhost:3000 29 | $ yarn dev 30 | 31 | # build for production and launch server 32 | $ yarn build 33 | $ yarn start 34 | 35 | # generate static project 36 | $ yarn generate 37 | ``` 38 | For detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org). 39 | 40 | # 41 | 42 | ## 🙀 Screenshot?! 43 | 44 |

45 | screenshot 46 |

47 | 48 | # 49 | 50 | ## 😽 How can I help?!? 51 | 52 | 1. Read the [Code of Conduct](https://github.com/GeopJr/argyle/blob/main/CODE_OF_CONDUCT.md) 53 | 2. Fork it ( https://github.com/GeopJr/argyle/fork ) 54 | 3. Create your feature branch (git checkout -b my-new-feature) 55 | 4. Commit your changes (git commit -am 'Add some feature') 56 | 5. Push to the branch (git push origin my-new-feature) 57 | 6. Create a new Pull Request 58 | 59 | # 60 | 61 | ## 😻 Extra 62 | 63 | [![Deploy to DO](https://mp-assets1.sfo2.digitaloceanspaces.com/deploy-to-do/do-btn-blue-ghost.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/GeopJr/argyle/tree/main) 64 | 65 | 66 | 67 | 68 | 69 | Made with [contributors-img](https://contrib.rocks). 70 | 71 | This was made for the [DEV.TO DO Hackathon](https://dev.to/devteam/announcing-the-digitalocean-app-platform-hackathon-on-dev-2i1k). 72 | 73 | ferris minimal 74 | 75 | ## Thanks for visiting! 76 | ## Feel free to open an issue requesting a tool! 77 | lighthouse stats 78 | -------------------------------------------------------------------------------- /assets/routes.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "icon": "mdi-home", 4 | "title": "Home", 5 | "to": "/", 6 | "aria": "Home" 7 | }, 8 | { 9 | "icon": "mdi-format-text", 10 | "title": "Text Tools", 11 | "to": "/text", 12 | "aria": "Text Tools" 13 | }, 14 | { 15 | "icon": "mdi-format-paint", 16 | "title": "Beautify", 17 | "to": "/beautify", 18 | "aria": "Beautify Tools" 19 | }, 20 | { 21 | "icon": "mdi-compare-vertical", 22 | "title": "Minify", 23 | "to": "/minify", 24 | "aria": "Minify Tools" 25 | }, 26 | { 27 | "icon": "mdi-lock", 28 | "title": "Encryption Tools", 29 | "to": "/encryption", 30 | "aria": "Encryption Tools" 31 | }, 32 | { 33 | "icon": "mdi-hammer-wrench", 34 | "title": "Compilers", 35 | "to": "/compilers", 36 | "aria": "Compiling Tools" 37 | }, 38 | { 39 | "icon": "mdi-gamepad-variant", 40 | "title": "Gaming Tools", 41 | "to": "/gaming", 42 | "aria": "Gaming Tools" 43 | }, 44 | { 45 | "icon": "mdi-clock", 46 | "title": "Time Tools", 47 | "to": "/time", 48 | "aria": "Time Tools" 49 | }, 50 | { 51 | "icon": "mdi-dice-multiple", 52 | "title": "Other", 53 | "to": "/other", 54 | "aria": "Other Tools" 55 | } 56 | ] -------------------------------------------------------------------------------- /assets/transitions.css: -------------------------------------------------------------------------------- 1 | .page-enter-active, 2 | .page-leave-active { 3 | transition: opacity 0.2s; 4 | } 5 | .page-enter, 6 | .page-leave-to { 7 | opacity: 0; 8 | } -------------------------------------------------------------------------------- /assets/variables.scss: -------------------------------------------------------------------------------- 1 | $grid-breakpoints: ( 2 | 'xl': 12000px - 24px 3 | ); 4 | -------------------------------------------------------------------------------- /components/beautify/Angular.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Css.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Flow.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Graphql.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Html.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Javascript.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Json.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Less.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Markdown.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Php.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Scss.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Typescript.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/Vue.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 86 | -------------------------------------------------------------------------------- /components/beautify/Yaml.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/beautify/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "json": { 3 | "name": "Json", 4 | "desc": "Beautify JSON", 5 | "icon": "code-json", 6 | "dialog": false 7 | }, 8 | "javascript": { 9 | "name": "Javascript", 10 | "desc": "Beautify JavaScript", 11 | "icon": "language-javascript", 12 | "dialog": false 13 | }, 14 | "html": { 15 | "name": "Html", 16 | "desc": "Beautify HTML", 17 | "icon": "code-json", 18 | "dialog": false 19 | }, 20 | "css": { 21 | "name": "Css", 22 | "desc": "Beautify CSS", 23 | "icon": "code-json", 24 | "dialog": false 25 | }, 26 | "less": { 27 | "name": "Less", 28 | "desc": "Beautify LESS", 29 | "icon": "code-json", 30 | "dialog": false 31 | }, 32 | "scss": { 33 | "name": "Scss", 34 | "desc": "Beautify SCSS", 35 | "icon": "sass", 36 | "dialog": false 37 | }, 38 | "typescript": { 39 | "name": "Typescript", 40 | "desc": "Beautify TypeScript", 41 | "icon": "language-typescript", 42 | "dialog": false 43 | }, 44 | "flow": { 45 | "name": "Flow", 46 | "desc": "Beautify Flow", 47 | "icon": "code-json", 48 | "dialog": false 49 | }, 50 | "markdown": { 51 | "name": "Markdown", 52 | "desc": "Beautify Markdown", 53 | "icon": "language-markdown", 54 | "dialog": false 55 | }, 56 | "php": { 57 | "name": "Php", 58 | "desc": "Beautify PHP", 59 | "icon": "language-php", 60 | "dialog": false 61 | }, 62 | "angular": { 63 | "name": "Angular", 64 | "desc": "Beautify Angular", 65 | "icon": "angular", 66 | "dialog": false 67 | }, 68 | "vue": { 69 | "name": "Vue", 70 | "desc": "Beautify Vue", 71 | "icon": "vuejs", 72 | "dialog": false 73 | }, 74 | "graphql": { 75 | "name": "Graphql", 76 | "desc": "Beautify GraphQL", 77 | "icon": "code-json", 78 | "dialog": false 79 | }, 80 | "yaml": { 81 | "name": "Yaml", 82 | "desc": "Beautify YAML", 83 | "icon": "code-json", 84 | "dialog": false 85 | } 86 | } -------------------------------------------------------------------------------- /components/compilers/CC.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 93 | -------------------------------------------------------------------------------- /components/compilers/CrystalC.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 93 | -------------------------------------------------------------------------------- /components/compilers/LessC.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/compilers/RubyC.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 93 | -------------------------------------------------------------------------------- /components/compilers/SassC.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 85 | -------------------------------------------------------------------------------- /components/compilers/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "crystal": { 3 | "name": "Crystal", 4 | "desc": "Compile Crystal", 5 | "icon": "code-json", 6 | "dialog": false, 7 | "external": true 8 | }, 9 | "ruby": { 10 | "name": "Ruby", 11 | "desc": "Compile Ruby", 12 | "icon": "language-ruby", 13 | "dialog": false, 14 | "external": true 15 | }, 16 | "c": { 17 | "name": "C", 18 | "desc": "Compile C", 19 | "icon": "language-c", 20 | "dialog": false, 21 | "external": true 22 | }, 23 | "less": { 24 | "name": "Less", 25 | "desc": "Compile Less", 26 | "icon": "code-json", 27 | "dialog": false 28 | }, 29 | "sass": { 30 | "name": "Sass", 31 | "desc": "Compile SASS/SCSS", 32 | "icon": "sass", 33 | "dialog": false 34 | } 35 | } -------------------------------------------------------------------------------- /components/encryption/Aes2text.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 93 | -------------------------------------------------------------------------------- /components/encryption/Base642text.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 81 | -------------------------------------------------------------------------------- /components/encryption/Md5.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 83 | -------------------------------------------------------------------------------- /components/encryption/Rabbit2text.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 93 | -------------------------------------------------------------------------------- /components/encryption/Sha1.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 83 | -------------------------------------------------------------------------------- /components/encryption/Sha256.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 83 | -------------------------------------------------------------------------------- /components/encryption/Text2aes.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 92 | -------------------------------------------------------------------------------- /components/encryption/Text2base64.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 81 | -------------------------------------------------------------------------------- /components/encryption/Text2rabbit.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 92 | -------------------------------------------------------------------------------- /components/encryption/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "t2base64": { 3 | "name": "Text2base64", 4 | "desc": "Encode text to base64", 5 | "icon": "lock", 6 | "dialog": false 7 | }, 8 | "base642t": { 9 | "name": "Base642text", 10 | "desc": "Decode base64 to text", 11 | "icon": "lock-open", 12 | "dialog": false 13 | }, 14 | "md5": { 15 | "name": "Md5", 16 | "desc": "Hash text using md5", 17 | "icon": "lock", 18 | "dialog": false 19 | }, 20 | "t2aes": { 21 | "name": "Text2aes", 22 | "desc": "Encrypt text using AES", 23 | "icon": "lock", 24 | "dialog": false 25 | }, 26 | "aes2t": { 27 | "name": "Aes2text", 28 | "desc": "Decrypt AES encrypted text", 29 | "icon": "lock-open", 30 | "dialog": false 31 | }, 32 | "sha256": { 33 | "name": "Sha256", 34 | "desc": "Hash text using sha256", 35 | "icon": "lock", 36 | "dialog": false 37 | }, 38 | "t2rabbit": { 39 | "name": "Text2rabbit", 40 | "desc": "Encrypt text using Rabbit", 41 | "icon": "lock", 42 | "dialog": false 43 | }, 44 | "rabbit2t": { 45 | "name": "Rabbit2text", 46 | "desc": "Decrypt Rabbit encrypted text", 47 | "icon": "lock-open", 48 | "dialog": false 49 | }, 50 | "sha1": { 51 | "name": "Sha1", 52 | "desc": "Hash text using sha1", 53 | "icon": "lock", 54 | "dialog": false 55 | } 56 | } -------------------------------------------------------------------------------- /components/gaming/Mcskin.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 80 | -------------------------------------------------------------------------------- /components/gaming/Mcuuid.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 64 | -------------------------------------------------------------------------------- /components/gaming/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "mcskin": { 3 | "name": "Mcskin", 4 | "desc": "Get the skin of the user the UUID belongs to", 5 | "icon": "minecraft", 6 | "dialog": false, 7 | "external": true 8 | } 9 | } -------------------------------------------------------------------------------- /components/minify/CssM.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 84 | -------------------------------------------------------------------------------- /components/minify/JavascriptM.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 84 | -------------------------------------------------------------------------------- /components/minify/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "css": { 3 | "name": "Css", 4 | "desc": "Minify CSS", 5 | "icon": "code-json", 6 | "dialog": false 7 | } 8 | } -------------------------------------------------------------------------------- /components/other/Obfuscator.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 84 | -------------------------------------------------------------------------------- /components/other/Rando.vue: -------------------------------------------------------------------------------- 1 | 59 | 60 | 88 | -------------------------------------------------------------------------------- /components/other/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "obfuscator": { 3 | "name": "Obfuscator", 4 | "desc": "Run javascript-obfuscator", 5 | "icon": "eye-off", 6 | "dialog": false 7 | }, 8 | "rando": { 9 | "name": "Rando", 10 | "desc": "Run rando.js", 11 | "icon": "dice-multiple", 12 | "dialog": false 13 | } 14 | } -------------------------------------------------------------------------------- /components/text/Capitalize.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/Clappy.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/CountCharacters.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 68 | -------------------------------------------------------------------------------- /components/text/CountWords.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 68 | -------------------------------------------------------------------------------- /components/text/Downcase.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/Mock.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/Reverse.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/Upcase.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 70 | -------------------------------------------------------------------------------- /components/text/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "downcase": { 3 | "name": "Downcase", 4 | "desc": "Lowercase input text", 5 | "icon": "format-text-rotation-down", 6 | "dialog": false 7 | }, 8 | "upcase": { 9 | "name": "Upcase", 10 | "desc": "Uppercase input text", 11 | "icon": "format-text-rotation-up", 12 | "dialog": false 13 | }, 14 | "capitalize": { 15 | "name": "Capitalize", 16 | "desc": "Capitalize input text", 17 | "icon": "text-short", 18 | "dialog": false 19 | }, 20 | "reverse": { 21 | "name": "Reverse", 22 | "desc": "Reverse input text", 23 | "icon": "sort-reverse-variant", 24 | "dialog": false 25 | }, 26 | "countCharacters": { 27 | "name": "Count Characters", 28 | "desc": "Count the amount of characters input text has", 29 | "icon": "format-text-variant", 30 | "dialog": false 31 | }, 32 | "countWords": { 33 | "name": "Count Words", 34 | "desc": "Count the words of characters input text has", 35 | "icon": "keyboard-space", 36 | "dialog": false 37 | }, 38 | "clappy": { 39 | "name": "Clappy", 40 | "desc": "Clap 👏 between 👏 words", 41 | "icon": "handshake", 42 | "dialog": false 43 | }, 44 | "mock": { 45 | "name": "Mock", 46 | "desc": "MoCk iNpUt tExT", 47 | "icon": "swim", 48 | "dialog": false 49 | } 50 | } -------------------------------------------------------------------------------- /components/time/Currentunixms.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 86 | -------------------------------------------------------------------------------- /components/time/Discordsnowflake.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 74 | -------------------------------------------------------------------------------- /components/time/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "currentUnixMS": { 3 | "name": "Currentunixms", 4 | "desc": "Current UNIX MS", 5 | "icon": "timelapse", 6 | "dialog": false 7 | }, 8 | "discordsnowflake": { 9 | "name": "Discordsnowflake", 10 | "desc": "Convert any Discord ID to an ISO timestamp", 11 | "icon": "discord", 12 | "dialog": false 13 | } 14 | } -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "~/*": ["./*"], 6 | "@/*": ["./*"], 7 | "~~/*": ["./*"], 8 | "@@/*": ["./*"] 9 | } 10 | }, 11 | "exclude": ["node_modules", ".nuxt", "dist"] 12 | } 13 | -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 79 | 80 | 94 | 95 | 120 | -------------------------------------------------------------------------------- /layouts/error.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 50 | -------------------------------------------------------------------------------- /nuxt.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | ssr: false, 3 | loadingIndicator: { 4 | name: 'folding-cube', 5 | color: '#7f77bc', 6 | background: '#121212' 7 | }, 8 | loading: { 9 | color: '#7f77bc' 10 | }, 11 | render: { 12 | static: { 13 | maxAge: 60 * 60 * 24 * 30 * 1000 14 | } 15 | }, 16 | target: 'static', 17 | head: { 18 | noscript: [{ innerHTML: 'This website requires JavaScript.' }], 19 | htmlAttrs: { 20 | lang: 'en' 21 | }, 22 | titleTemplate: '%s - Argyle', 23 | title: 'Home', 24 | meta: [ 25 | { charset: 'utf-8' }, 26 | { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 27 | { hid: 'description', name: 'description', content: 'An offline collection of online tools' }, 28 | { name: 'theme-color', content: '#7f77bc' }, 29 | // OpenGraph 30 | { name: 'og:site_name', content: 'GeopJr#4066' }, 31 | { name: 'og:description', content: 'An offline collection of online tools' }, 32 | { name: 'og:title', content: 'Argyle' }, 33 | { name: 'og:type', content: 'website' }, 34 | { name: 'og:url', content: 'https://argyle.geopjr.dev/' }, 35 | { name: 'og:image:type', content: 'image/png' }, 36 | { name: 'og:image', content: 'https://i.imgur.com/QKFC8cW.png' }, 37 | // Apple 38 | { name: 'apple-mobile-web-app-title', content: 'Argyle' }, 39 | { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' }, 40 | { name: 'apple-mobile-web-app-capable', content: 'yes' } 41 | ], 42 | link: [ 43 | { rel: 'canonical', href: 'https://argyle.geopjr.dev' }, 44 | // Favicons 45 | { rel: 'icon', sizes: '32x32', type: 'image/png', href: '/favicons/favicon-32x32.png?v=2' }, 46 | { rel: 'icon', sizes: '16x16', type: 'image/png', href: '/favicons/favicon-16x16.png?v=2' }, 47 | { rel: 'icon', type: 'image/x-icon', href: '/favicons/favicon.ico?v=2' }, 48 | { rel: 'mask-icon', href: '/favicons/safari-pinned-tab.svg' }, 49 | { rel: 'icon', type: 'image/x-icon', href: '/favicons/favicon.ico', color: '#ffff00' }, 50 | // Apple 51 | { rel: 'apple-touch-icon', sizes: '180x180', href: '/favicons/apple-touch-icon.png' }, 52 | // MEMEME 53 | { rel: 'me', href: 'https://tech.lgbt/@GeopJr' }, 54 | { rel: 'me', href: 'https://github.com/GeopJr' } 55 | ] 56 | }, 57 | components: true, 58 | // Reduces vuetify size apparently 59 | build: { 60 | extractCSS: true 61 | }, 62 | buildModules: [ 63 | '@nuxtjs/eslint-module', 64 | '@nuxtjs/pwa', 65 | ['@nuxtjs/vuetify', { customVariables: ['~/assets/variables.scss'], treeShake: true }] 66 | ], 67 | generate: { fallback: '404.html' }, 68 | pwa: { 69 | meta: { 70 | appleStatusBarStyle: 'black-translucent', 71 | theme_color: '#7f77bc', 72 | ogSiteName: 'GeopJr#4066', 73 | ogTitle: 'Argyle', 74 | ogDescription: 'An offline collection of online tools', 75 | ogImage: 'https://i.imgur.com/QKFC8cW.png', 76 | ogUrl: 'https://argyle.geopjr.dev' 77 | 78 | }, 79 | manifest: { 80 | background_color: '#121212' 81 | } 82 | }, 83 | vuetify: { 84 | breakpoint: { 85 | thresholds: { 86 | xl: 12000 87 | } 88 | }, 89 | theme: { 90 | dark: true, 91 | themes: { 92 | light: { 93 | primary: '#a56262', 94 | accent: '#a56262' 95 | }, 96 | dark: { 97 | primary: '#7f77bc', 98 | accent: '#7f77bc' 99 | } 100 | } 101 | } 102 | }, 103 | css: ['@/assets/transitions.css'] 104 | } 105 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "argyle", 3 | "version": "1.0.0", 4 | "description": "An offline collection of online tools", 5 | "private": true, 6 | "author": "GeopJr", 7 | "scripts": { 8 | "dev": "nuxt", 9 | "build": "nuxt build", 10 | "start": "nuxt start --hostname 0.0.0.0 --port 8080", 11 | "generate": "nuxt generate", 12 | "analyze": "nuxt build --analyze", 13 | "export": "nuxt export", 14 | "serve": "nuxt serve", 15 | "lint:fix": "eslint --ext .js,.vue --ignore-path .gitignore . --fix", 16 | "lint:js": "eslint --ext .js,.vue --ignore-path .gitignore .", 17 | "lint": "yarn lint:js" 18 | }, 19 | "dependencies": { 20 | "@nastyox/rando.js": "2.0.5", 21 | "@prettier/plugin-php": "0.18.4", 22 | "axios": "0.27.2", 23 | "core-js": "3.22.3", 24 | "crypto-js": "4.1.1", 25 | "csso": "5.0.3", 26 | "javascript-obfuscator": "4.0.0", 27 | "nuxt": "2.15.8", 28 | "prettier": "2.6.2", 29 | "tiny-sass-compiler": "0.12.2", 30 | "uglify-js": "3.15.4" 31 | }, 32 | "devDependencies": { 33 | "@nuxtjs/eslint-config": "9.0.0", 34 | "@nuxtjs/eslint-module": "3.1.0", 35 | "@nuxtjs/pwa": "3.3.5", 36 | "@nuxtjs/vuetify": "1.12.3", 37 | "babel-eslint": "10.1.0", 38 | "eslint": "8.14.0", 39 | "eslint-plugin-nuxt": "3.2.0", 40 | "less": "4.1.2", 41 | "less-loader": "10.2.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /pages/beautify.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 101 | 102 | 114 | -------------------------------------------------------------------------------- /pages/compilers.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 85 | 86 | 98 | -------------------------------------------------------------------------------- /pages/encryption.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 91 | 92 | 104 | -------------------------------------------------------------------------------- /pages/gaming.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 75 | 76 | 88 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 46 | -------------------------------------------------------------------------------- /pages/minify.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 77 | 78 | 90 | -------------------------------------------------------------------------------- /pages/other.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 77 | 78 | 90 | -------------------------------------------------------------------------------- /pages/text.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 89 | 90 | 102 | -------------------------------------------------------------------------------- /pages/time.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 77 | 78 | 90 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ] 5 | } 6 | 7 | -------------------------------------------------------------------------------- /static/argyle-wire.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/argyle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /static/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /static/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /static/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /static/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/favicon.ico -------------------------------------------------------------------------------- /static/favicons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/mstile-144x144.png -------------------------------------------------------------------------------- /static/favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /static/favicons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/mstile-310x150.png -------------------------------------------------------------------------------- /static/favicons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/mstile-310x310.png -------------------------------------------------------------------------------- /static/favicons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/favicons/mstile-70x70.png -------------------------------------------------------------------------------- /static/favicons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/favicons/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeopJr/argyle/619c2728a1297f5f2a45d469b545024d2d3f20d6/static/icon.png --------------------------------------------------------------------------------