├── .editorconfig ├── .eslintrc.js ├── .github └── workflows │ ├── chrome-e2e.yaml │ ├── netlify-dev-deploy.yaml │ └── netlify-prod-deploy.yaml ├── .gitignore ├── README.md ├── assets ├── README.md ├── css │ └── tailwind.css └── images │ ├── background │ ├── circle_background.svg │ ├── final_edited.svg │ ├── landing_bg.svg │ ├── reactangle_background.svg │ ├── square_background.svg │ └── triangle_background.svg │ ├── distro │ ├── alpine.svg │ ├── arch.svg │ ├── debian.svg │ ├── fedora.svg │ ├── kali.svg │ ├── kde_logo.svg │ ├── lxde.svg │ ├── lxqt.svg │ ├── manjaro.svg │ ├── mate.svg │ ├── ubuntu.svg │ ├── void.svg │ └── xfce.svg │ ├── icons │ ├── check.svg │ ├── github.svg │ └── play-store.svg │ ├── logo_new_semi_fhd_dark.png │ ├── modded_os_feature.png │ ├── screenshots │ └── andronix-commands-app-ss.png │ └── wm │ ├── Awesome_logo.svg │ ├── I3_window_manager_logo.svg │ └── openbox_logo.svg ├── components ├── base │ ├── counterComponent.vue │ ├── ctaCard.vue │ ├── primaryIconButton.vue │ └── primaryTextButton.vue ├── global │ ├── footer.vue │ ├── heading.vue │ ├── navBar.vue │ ├── overlay.vue │ └── sideBar.vue ├── landing.vue ├── landing │ ├── deLogoGrid.vue │ ├── distroLogoGrid.vue │ ├── feature.vue │ ├── featureCard.vue │ ├── landingHeader.vue │ ├── productComponent.vue │ └── wmLogoGrid.vue ├── pricingCard.vue ├── steps │ └── stepsCard.vue ├── teamCard.vue └── testimonial │ ├── testimonialCard.vue │ └── testimonialModdedOsCard.vue ├── cypress.json ├── jsconfig.json ├── layouts ├── default.vue └── error.vue ├── lib └── checkout │ ├── checkoutHelper.js │ └── productHelper.js ├── middleware ├── README.md └── redirect.js ├── netlify.toml ├── nuxt.config.js ├── package.json ├── pages ├── README.md ├── about.vue ├── auth │ ├── login.vue │ └── register.vue ├── checkout │ ├── buy │ │ └── _product_id.vue │ ├── failure │ │ └── _reason │ │ │ └── _order_id.vue │ └── success │ │ └── _order_id.vue ├── contact.vue ├── help.vue ├── index.vue ├── legal │ ├── privacy-policy.vue │ ├── refund-policy.vue │ └── terms-conditions.vue ├── policies.vue ├── pricing.vue ├── products │ ├── commands.vue │ ├── modded-os.vue │ └── premium.vue ├── tutorials │ └── termux.vue └── user │ └── profile.vue ├── plugins ├── animxyz.js ├── firebase.js ├── formulate.js ├── hamburger.js ├── tippyjs.js ├── toasts.js └── viewer.js ├── static ├── data │ ├── features │ │ ├── andronix-features.json │ │ ├── commands-feature.json │ │ ├── modded-os-features.json │ │ └── premium-features.json │ ├── menu │ │ └── main-drawer-menu.json │ ├── misc │ │ ├── andronix-steps.json │ │ ├── command-steps.json │ │ ├── contact.json │ │ ├── country.json │ │ ├── modded-os-metric.json │ │ ├── premium-metric.json │ │ ├── products.json │ │ ├── state.json │ │ └── teams.json │ ├── pricing │ │ ├── modded-os-products.json │ │ └── product-details.json │ ├── products │ │ └── modded-os-info.json │ └── testimonials │ │ ├── main-testimonials.json │ │ ├── modded-os-testimonials.json │ │ └── premium-testimonials.json ├── distros │ └── details.json ├── favicon.ico ├── seo │ └── meta-head.json └── static_images │ ├── default_dp.svg │ └── distro │ ├── arch.svg │ ├── debian.svg │ ├── kali.svg │ ├── manjaro.svg │ └── ubuntu.svg ├── store ├── auth.js ├── checkout.js ├── drawer.js └── misc.js ├── tailwind.config.js ├── test └── e2e │ ├── fixtures │ ├── coupon-failure.json │ ├── coupon-success.json │ └── pricing.json │ ├── integration │ ├── auth.spec.js │ ├── checkout.spec.js │ └── general.spec.js │ ├── plugins │ └── index.js │ └── support │ ├── commands.js │ └── index.js ├── tsconfig.json └── yarn.lock /.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 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true 6 | }, 7 | extends: [ 8 | '@nuxtjs/eslint-config-typescript', 9 | 'plugins:nuxt/recommended' 10 | ], 11 | plugins: [ 12 | ], 13 | // add your custom rules here 14 | rules: {} 15 | } 16 | -------------------------------------------------------------------------------- /.github/workflows/chrome-e2e.yaml: -------------------------------------------------------------------------------- 1 | name: Chrome E2E CI 2 | on: 3 | push: 4 | branches: 5 | - dev 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | strategy: 11 | fail-fast: false 12 | matrix: 13 | containers: [ 1, 2, 3 ] 14 | name: E2E on Chrome 15 | steps: 16 | - name: Checking out code ⚡ 17 | uses: actions/checkout@v2 18 | 19 | - name: Setting up NodeJS 📐 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: '14.x' 23 | 24 | - name: Caching Dependencies 💾 25 | uses: actions/cache@v1 26 | with: 27 | path: ~/.npm 28 | key: ${{ runner.os }}-node-v2-${{ hashFiles('**/yarn-lock.json') }} 29 | restore-keys: | 30 | ${{ runner.os }}-node- 31 | 32 | - name: Building 🏗 33 | run: | 34 | npm install -g yarn 35 | yarn install --frozen-lockfile 36 | yarn install 37 | 38 | 39 | - name: E2E Testing 🤖 40 | uses: cypress-io/github-action@v2 41 | env: 42 | CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} 43 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 44 | with: 45 | record: true 46 | start: yarn run dev 47 | parallel: true 48 | browser: chrome 49 | wait-on-timeout: 180 50 | wait-on: 'http://localhost:3000' 51 | 52 | - name: Uploading Screenshots ☁ 53 | uses: actions/upload-artifact@v1 54 | if: failure() 55 | with: 56 | name: cypress-screenshots 57 | path: cypress/screenshots 58 | 59 | - name: Uploading Videos ☁ 60 | uses: actions/upload-artifact@v1 61 | if: always() 62 | with: 63 | name: cypress-videos 64 | path: cypress/videos 65 | -------------------------------------------------------------------------------- /.github/workflows/netlify-dev-deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Dev Deploy 2 | on: 3 | push: 4 | branches: 5 | - dev 6 | pull_request: 7 | branches: 8 | - master 9 | jobs: 10 | deploy: 11 | runs-on: ubuntu-latest 12 | name: Build 13 | steps: 14 | - name: Checking out code ⚡ 15 | uses: actions/checkout@v2 16 | 17 | - name: Setting up NodeJS 📐 18 | uses: actions/setup-node@v1 19 | with: 20 | node-version: '14.x' 21 | 22 | - name: Caching Dependencies 💾 23 | uses: actions/cache@v1 24 | with: 25 | path: ~/.npm 26 | key: ${{ runner.os }}-node-${{ hashFiles('**/yarn-lock.json') }} 27 | restore-keys: | 28 | ${{ runner.os }}-node- 29 | 30 | - name: Building 🏗 31 | run: | 32 | npm install -g yarn 33 | yarn install --frozen-lockfile 34 | yarn install 35 | yarn run generate 36 | 37 | - name: Deploy to Netlify ✅ 38 | uses: nwtgck/actions-netlify@v1.1 39 | with: 40 | publish-dir: './dist' 41 | production-branch: master 42 | github-token: ${{ secrets.GITHUB_TOKEN }} 43 | deploy-message: "Deploy from GitHub Actions" 44 | production-deploy: false 45 | env: 46 | NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} 47 | NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} 48 | -------------------------------------------------------------------------------- /.github/workflows/netlify-prod-deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Production Deploy 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | name: Build 10 | steps: 11 | - name: Checking out code ⚡ 12 | uses: actions/checkout@v2 13 | 14 | - name: Setting up NodeJS 📐 15 | uses: actions/setup-node@v1 16 | with: 17 | node-version: '14.x' 18 | 19 | - name: Caching Dependencies 💾 20 | uses: actions/cache@v1 21 | with: 22 | path: ~/.npm 23 | key: ${{ runner.os }}-node-${{ hashFiles('**/yarn-lock.json') }} 24 | restore-keys: | 25 | ${{ runner.os }}-node- 26 | 27 | - name: Building 🏗 28 | run: | 29 | npm install -g yarn 30 | yarn install --frozen-lockfile 31 | yarn install 32 | yarn run generate 33 | 34 | - name: Deploy to Netlify ✅ 35 | uses: nwtgck/actions-netlify@v1.1 36 | with: 37 | publish-dir: './dist' 38 | production-branch: master 39 | github-token: ${{ secrets.GITHUB_TOKEN }} 40 | deploy-message: "Deploy from GitHub Actions" 41 | production-deploy: true 42 | env: 43 | NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} 44 | NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugins (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 | 92 | cypress/ 93 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 |
13 | {{ desc }}
14 |{{ label }}
8 |{{ label }}
9 |{{ label }}
16 |42 | {{ userData.name ? userData.name : 'Email Sign-in' }}
43 |{{ 44 | userData.email ? userData.email : 'Not Logged In' 45 | }}
46 |Run full-fledged 16 | Linux 17 | Distros right on 18 | your 19 | Android device without rooting.
20 | 21 | 60 | 61 |Do you like to have a customizable UI? Then, we have the most prominent Window Managers to select from so that you can flex your Linux rice on Android.
10 |Ever thought of trying out new distributions? We provide a large variety of 10 | distribution to choose from. Just select any of your favorite distributions, and you are ready to roll. 11 |
12 |13 | {{ disabled ? 'Not \n Purchased' : desc }}
14 |15 | {{ disabled ? 'Not \n Purchased' : desc }}
16 |{{ 9 | isPaid ? 'Paid' : 'Free' 10 | }}
11 |{{ description }}
13 |Know 17 | more about {{ product }}
18 | Know 21 | more about {{ product }} 22 | 30 |Do you like to rice your setups and want to have a minimalistic and lightweight workspace? 10 | Then, we have the most renowned Desktop Environments to choose from so that you always have an option to customize your desktop according to your needs.
11 |{{ feature }}
28 |{{ description }}
12 |{{ quote }}
21 |{{ quote }}
11 |{{ name }}
16 |{{ platform }}
17 |{{ quote }}
11 |- {{ name }}
12 |Let's get you back
8 |Reason - {{ this.reason }}
23 |Your order ID - {{ this.order_id }}
26 |We are sorry to inform you that you recent order has failed because of the reason state above. You can 30 | retry or reach out to us at andronix@techriz.com
33 |Retry payment
48 |We have synced this order on all your devices already.
22 |Your order ID - {{ this.order_id }}
23 |Just to let you know, we've sent you your receipt of this purchase at your email. You can attach it if you 27 | have any trouble regarding your purchase.
28 |Explore more things...
43 |
10 | Andronix offers digital purchases that include Andronix Premium, Andronix Modded OS and much more. We
11 | strictly follow the aforementioned refund policy and the deviation from the same entirely depends upon our
12 | discretion.
13 |
14 |
15 | If your purchase qualifies for the refund, it will be a no-questions asked refund.
16 |
19 | Andronix Premium 20 |
21 |We don't offer refunds on Andronix Premium when bought from our app.
22 |23 | Please read carefully 24 | what does it 25 | offer and then make a 26 | purchase.
27 |We do offer refunds on Andronix Premium when bought from our website.
29 |32 | Andronix Modded OS 33 |
34 |We do offer refunds on Andronix 35 | Modded OS
36 |37 | We have no-questions asked refund policy for Modded OS if your purchase satisfies the following condition
38 |Your purchase is made within 3 days of raising the refund request. This is counted from the local time 40 | of the purchase.
41 |We don't entertain swapping requests for Modded OS, 45 | unless the original one is not properly functioning.
46 |46 | ** In-App pricing of the products might be different depending on the region you are using Andronix due to the variation in taxes. 47 |
48 |39 | ** Modded Discounts are only available via in-app purchases as of now. Additionally, the eligibility of the discount can vary due to the differences in taxes across the globe. 40 |
41 |116 | You get some nice perks and you also help us maintain this 117 | project. 118 |
119 |Step details here
14 |Step details here
21 |Step details here
28 |Step details here
35 |18 | {{ userData.name ? userData.name : 'Anonymous' }}
19 |{{ 20 | userData.email ? userData.email : 'Not Logged In' 21 | }}
22 |We've couldn't find any purchases...
32 |