4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './App.vue';
3 | import router from './router';
4 | import store, { mutations, getters } from './plugins/state';
5 | import moment from 'vue-moment';
6 | import lodash from 'lodash';
7 | import axios from 'axios';
8 | import VueAwesomeSwiper from 'vue-awesome-swiper';
9 | import { gsap } from 'gsap';
10 | import EventBus from './EventBus';
11 | import vuetify from './plugins/vuetify';
12 | import '@/styles/register.scss';
13 | import 'swiper/swiper-bundle.css';
14 |
15 | Vue.config.productionTip = false;
16 | Vue.use(VueAwesomeSwiper);
17 | Vue.use(moment);
18 | Vue.prototype.$axios = axios;
19 | Vue.prototype.$gsap = gsap;
20 | Vue.prototype.$Eventbus = EventBus;
21 | Vue.prototype.$lodash = lodash;
22 |
23 | Vue.prototype.$state = {
24 | store: store,
25 | mutate: mutations,
26 | get: getters,
27 | };
28 |
29 | new Vue({
30 | router,
31 | vuetify,
32 | render: (h) => h(App),
33 | }).$mount('#app');
34 |
--------------------------------------------------------------------------------
/src/styles/register.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | // Import a Google Font for Following Material Guidelines
4 | @import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
5 |
6 | // Vuetify Sass Variables
7 | $family-sans-serif: 'open-sans', sans-serif;
8 | $body-font-family: 'Work Sans', serif;
9 | $border-radius-root: 6px;
10 | $font-size-root: 14px;
11 | $btn-letter-spacing: 0;
12 | $btn-font-weight: 400;
13 | $list-item-title-font-size: 0.929rem;
14 | $list-item-dense-title-font-size: 0.929rem;
15 | $list-item-dense-title-font-weight: initial;
16 | $fab-icon-sizes: (
17 | 'small': 20,
18 | );
19 | $btn-sizes: (
20 | 'default': 41,
21 | 'large': 54,
22 | );
23 | $headings: (
24 | 'h1': (
25 | 'size': 3.3125rem,
26 | 'line-height': 1.15em,
27 | ),
28 | 'h2': (
29 | 'size': 2.25rem,
30 | 'line-height': 1.5em,
31 | ),
32 | );
33 |
34 | // Vue2-Animate Variables
35 | $animationDuration: 0.5s;
36 |
37 | // Other Imports
38 | @import 'bulma';
39 | @import 'vue2-animate/src/sass/vue2-animate.scss';
40 | @import 'index.scss';
41 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "zyndex",
3 | "title": "ZYNDEX | G-Index Generator",
4 | "version": "0.1.0",
5 | "private": false,
6 | "license": "MIT",
7 | "scripts": {
8 | "serve": "vue-cli-service serve",
9 | "build": "vue-cli-service build",
10 | "lint": "vue-cli-service lint"
11 | },
12 | "dependencies": {
13 | "axios": "^0.21.0",
14 | "bulma": "^0.9.1",
15 | "core-js": "^3.6.5",
16 | "gsap": "^3.5.1",
17 | "lodash": "^4.17.20",
18 | "minify-css-string": "^1.0.0",
19 | "swiper": "^6.3.5",
20 | "vue": "^2.6.11",
21 | "vue-awesome-swiper": "^4.1.1",
22 | "vue-meta": "^2.4.0",
23 | "vue-moment": "^4.1.0",
24 | "vue-router": "^3.2.0",
25 | "vue2-animate": "^2.1.4",
26 | "vuetify": "^2.2.11"
27 | },
28 | "devDependencies": {
29 | "@vue/cli-plugin-babel": "~4.5.0",
30 | "@vue/cli-plugin-eslint": "~4.5.0",
31 | "@vue/cli-plugin-router": "~4.5.0",
32 | "@vue/cli-service": "~4.5.0",
33 | "babel-eslint": "^10.1.0",
34 | "eslint": "^6.7.2",
35 | "eslint-plugin-vue": "^6.2.2",
36 | "node-sass": "^4.12.0",
37 | "sass": "^1.19.0",
38 | "sass-loader": "^8.0.2",
39 | "vue-cli-plugin-vuetify": "~2.0.7",
40 | "vue-template-compiler": "^2.6.11",
41 | "vuetify-loader": "^1.3.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/styles/index.scss:
--------------------------------------------------------------------------------
1 | // Every Project's Must
2 | * {
3 | box-sizing: border-box;
4 | }
5 |
6 | // Custom Scroll Bar Design for Following Material Guidelines
7 |
8 | //? Scroll Bar Width
9 | ::-webkit-scrollbar {
10 | width: 4px;
11 | background-color: white;
12 | }
13 |
14 | //? Scroll Bar Track
15 | ::-webkit-scrollbar-track {
16 | box-shadow: inset 0 0 5px grey;
17 | border-radius: none;
18 | }
19 |
20 | //? Scroll Bar Thumb
21 | ::-webkit-scrollbar-thumb {
22 | background: hsl(0%, 0%, 15%);
23 | border-radius: 10px;
24 | }
25 |
26 | // Some Helper CSS
27 |
28 | //? For all Use Cases
29 | .non-touch {
30 | -webkit-user-select: none;
31 | -khtml-user-select: none;
32 | -moz-user-select: none;
33 | -o-user-select: none;
34 | user-select: none;
35 | }
36 |
37 | .point-cursor {
38 | cursor: pointer;
39 | }
40 |
41 | .break-only-word {
42 | word-break: break-word;
43 | }
44 |
45 | .width-min {
46 | min-width: 40%;
47 | }
48 |
49 | .border-max {
50 | border-radius: 50%;
51 | }
52 |
53 | .fit-content {
54 | width: fit-content;
55 | }
56 |
57 | .back-gif {
58 | background-image: url('https://i.pinimg.com/originals/f4/a8/b4/f4a8b449107bfcbc785ebf766c3864b8.gif');
59 | background-size: cover;
60 | background-repeat: no-repeat;
61 | background-position: center;
62 | }
63 | .gradient-hero {
64 | background-image: linear-gradient(
65 | to top,
66 | #ffffff,
67 | #f2faff,
68 | #d5f9ff,
69 | #b0f9ff,
70 | #94f9f2,
71 | #94f9f2,
72 | #94f9f2,
73 | #94f9f2,
74 | #b0f9ff,
75 | #d5f9ff,
76 | #f2faff,
77 | #ffffff
78 | );
79 | }
80 |
81 | .is-maximum {
82 | width: 100%;
83 | height: 100%;
84 | }
85 |
86 | .slide-fade-enter-active {
87 | transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
88 | }
89 | .slide-fade-leave-active {
90 | transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);
91 | }
92 | .slide-fade-enter,
93 | .slide-fade-leave-to {
94 | transform: translateX(10px);
95 | opacity: 0;
96 | }
97 |
--------------------------------------------------------------------------------
/src/components/nav-bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
17 | {{ ismobile ? 'ZYNDEX' : 'Z Y N D E X' }}
18 |
19 |
20 |
21 |
22 |
29 |
30 | {{ $vuetify.theme.dark ? 'mdi-water' : 'mdi-water-off' }}
31 |
32 |
33 |
34 | Change Dark Mode
35 |
36 |
37 |
38 |
45 |
46 | {{ github.icon }}
47 |
48 |
49 |
50 | {{ github.title }}
51 |
52 |
53 |
54 |
55 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/public/downloads/deploy-backend.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | echo.
3 | echo U L T I M A T E G ^- I N D E X B A C K E N D D E P L O Y E R
4 | echo.
5 | echo by
6 | echo. ______ __ __
7 | echo. / __/ / ___ ____ / /_/ /__
8 | echo. _\ \/ _ \/ _ `/ _ \ / __/ '_/
9 | echo. /___/_//_/\_,_/_//_/ \__/_/\_\
10 | echo.
11 | echo.
12 | echo Deploying the Backend Now.
13 | echo.
14 | echo Make Sure You have Nodejs, Git Installed and You are in the Root of the Directory and not any Subfolders
15 | echo.
16 | echo Make Sure You have Every Environment Variables in Hand for Faster Deployment
17 | echo.
18 | echo Starting the Script Now
19 | echo.
20 | CALL npm i ^-g heroku
21 | echo Login in to Your Heroku Account
22 | CALL heroku login
23 | echo.
24 | CALL git clone --quiet --single-branch --branch master https://github.com/tks18/gindex-backend.git __temp__
25 | echo.
26 | echo Starting Deployment Process
27 | echo.
28 | set /p appname=Enter Unique Backend App Name in Heroku:
29 | CALL heroku create %appname%
30 | echo.
31 | CALL heroku git:remote ^-a %appname%
32 | echo.
33 | echo Pushing G Index Backend to Heroku
34 | CALL git subtree push ^-^-prefix __temp__ heroku master
35 | echo.
36 | echo Now Have Your Environment Variables ready !!
37 | echo.
38 | set /p dburl=Enter the MongoDB url that You Copied from their Website:
39 | set /p site=Enter the Heroku App Website to which it is Deployed:
40 | set /p emailid=Enter the Email ID from which User Messages will be Sent:
41 | set /p emailpass=Enter the Email Password for the Above:
42 | set /p emailport=Enter the Email Port for the Above:
43 | set /p emailservice=Enter the Email Provider Name(Eg: Gmail, Yahoo, etc.):
44 | set /p emailsmtp=Enter the SMTP Address for the Email Provider:
45 | set /p adminemail=Enter the Admin Email ID(Can be Anything or can be Same as the Above Email ID):
46 | set /p replyemail=Confirm the Before Email Again:
47 | set /p maxsessions=Enter the Number of Maximum Active Sessions that Users can Login Simultaneously(Eg: 1, 2, 5, etc.):
48 | set /p emailgif=Enter the Image Link for Displaying in Emails:
49 | set /p sitesec=Enter a Secret Key that you will Remember (Should be Used while Creating a Superadmin Account after this Setup):
50 | set /p tmdbapi=Enter the TMDB API Key for Metadata Info of Media in the Index (If You Don't Need, put NaN):
51 | set /p fronturls=Enter the Frontend Url/Urls (Don't Put trailing / at the end) (Multiple Frontends can be Put Here by putting a ,):
52 | set /p frontname=Enter the Frontend's Website Name (Can be Anything):
53 | set /p tokensec=Enter a Super Long Token Secret that will be Used to Secure the JWT Tokens.(These are Never Required to be Remebered):
54 | echo.
55 | echo Pushing Config Keys to Heroku App.
56 | echo.
57 | CALL heroku config:set ^-a %appname% DBURL=%dburl% SITE=%site% EMAILID=%emailid% EMAILPASS=%emailpass% EMAILPORT=%emailport% EMAILSERVICE=%emailservice% EMAILSMTP=%emailsmtp% ADMINEMAIL=%adminemail% REPLYTOMAIL=%replyemail% MAXSESSIONS=%maxsessions% EMAILGIF=%emailgif% SITESECRET=%sitesec% TMDBAPI=%tmdbapi% FRONTENDURL=%fronturls% FRONTENDSITENAME=%frontname% TOKENSECRET=%tokensec%
58 | pause
59 | exit
60 |
--------------------------------------------------------------------------------
/public/downloads/deploy-backend.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo -e "\n"
3 | echo 'U L T I M A T E G ^- I N D E X B A C K E N D D E P L O Y E R'
4 | echo -e "\n"
5 | echo 'by'
6 | echo '______ __ __'
7 | echo '/ __/ / ___ ____ / /_/ /__'
8 | echo '_\ \/ _ \/ _ / _ \ / __/ _/'
9 | echo '/___/_//_/\_,_/_//_/ \__/_/\_\'
10 | echo -e "\n"
11 | echo -e "\n"
12 | echo 'Deploying the Backend Now'
13 | echo -e "\n"
14 | echo 'Make Sure You have Nodejs, Git Installed and You are in the Root of the Directory and not any Subfolders'
15 | echo -e "\n"
16 | echo 'Make Sure You have Every Environment Variables in Hand for Faster Deployment'
17 | echo -e "\n"
18 | echo 'Starting the Script Now'
19 | echo -e "\n"
20 | npm i -g heroku
21 | echo 'Login in to Your Heroku Account'
22 | heroku login
23 | echo -e "\n"
24 | CALL git clone --quiet --single-branch --branch master https://github.com/tks18/gindex-backend.git __temp__
25 | echo -e "\n"
26 | echo 'Starting Deployment Process'
27 | echo -e "\n"
28 | read -p 'Enter Unique Backend App Name in Heroku: ' appname
29 | heroku create $appname
30 | echo -e "\n"
31 | heroku git:remote -a $appname
32 | echo -e "\n"
33 | echo 'Pushing G Index Backend to Heroku'
34 | git subtree push --prefix __temp__ heroku master
35 | echo -e "\n"
36 | echo 'Now Have Your Environment Variables ready !!'
37 | echo -e "\n"
38 | read -p 'Enter the MongoDB url that You Copied from their Website: ' dburl
39 | read -p 'Enter the Heroku App Website to which it is Deployed: ' site
40 | read -p 'Enter the Email ID from which User Messages will be Sent: ' emailid
41 | read -p 'Enter the Email Password for the Above: ' emailpass
42 | read -p 'Enter the Email Port for the Above: ' emailport
43 | read -p 'Enter the Email Provider Name(Eg: Gmail, Yahoo, etc.): ' emailservice
44 | read -p 'Enter the SMTP Address for the Email Provider: ' emailsmtp
45 | read -p 'Enter the Admin Email ID(Can be Anything or can be Same as the Above Email ID): ' adminemail
46 | read -p 'Confirm the Before Email Again: ' replyemail
47 | read -p 'Enter the Number of Maximum Active Sessions that Users can Login Simultaneously(Eg: 1, 2, 5, etc.): ' maxsessions
48 | read -p 'Enter the Image Link for Displaying in Emails: ' emailgif
49 | read -p 'Enter a Secret Key that you will Remember (Should be Used while Creating a Superadmin Account after this Setup): ' sitesec
50 | read -p 'Enter the TMDB API Key for Metadata Info of Media in the Index (If You Don\t Need, put NaN): ' tmdbapi
51 | read -p 'Enter the Frontend Url/Urls (Dont Put trailing / at the end) (Multiple Frontends can be Put Here by putting a ,): ' fronturls
52 | read -p 'Enter the Frontend Website Name (Can be Anything): ' frontname
53 | read -p 'Enter a Super Long Token Secret that will be Used to Secure the JWT Tokens.(These are Never Required to be Remebered): ' tokensec
54 | echo -e "\n"
55 | echo 'Pushing Config Keys to Heroku App'
56 | echo -e "\n"
57 | heroku config:set -a $appname DBURL=$dburl SITE=$site EMAILID=$emailid EMAILPASS=$emailpass EMAILPORT=$emailport EMAILSERVICE=$emailservice EMAILSMTP=$emailsmtp ADMINEMAIL=$adminemail REPLYTOMAIL=$replyemail MAXSESSIONS=$maxsessions EMAILGIF=$emailgif SITESECRET=$sitesec TMDBAPI=$tmdbapi FRONTENDURL=$fronturls FRONTENDSITENAME=$frontname TOKENSECRET=$tokensec
58 | read -p "Press [Enter] key to exit..."
59 | exit
60 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Zyndex is the Ultimate Destination for Google Drive Index which
10 | is Easily Deployable and has More Reliable Security Which can be
11 | Trusted.
12 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
81 | Deploy it Right Now by Clicking the Following Button and Get
82 | Started with the Instructions. Let's Get You Started
83 |
84 |
85 |
91 | mdi-check-all Generate Now
92 |
93 |
94 |
95 |
96 |
97 |
98 |
130 | Zyndex is a Google Drive Index Combining the power of Cloudflare
131 | Workers and Google Drive which allows you to index your files on the
132 | browser through Cloudflare Workers. Zyndex Gives you Unmatched Amount
133 | of Customizations that no One Can Give. With Security as the Main
134 | Focus, This Gives You Every Thing You need to Manage Users. Complete
135 | Role Based Authentication and Authorization. Tokenized Download Links
136 | & Secured Playback can be one of the Prominent Features of this Index.
137 |
138 |
139 |
140 |
141 |
142 |
212 |
--------------------------------------------------------------------------------
/src/components/nav-drawer.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
15 | Z Y N D E X
16 |
17 |
20 | The Ultimate Google Drive Index
21 |
22 |
23 |
24 |