diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..9e64b90 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v8.17.0 diff --git a/Gruntfile.js b/Gruntfile.js index 25b3892..83aaf9f 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,6 +1,6 @@ -module.exports = function(grunt){ +module.exports = function (grunt) { grunt.initConfig({ - pkg : grunt.file.readJSON('package.json'), + pkg: grunt.file.readJSON('package.json'), join: { src: 'src', @@ -20,16 +20,16 @@ module.exports = function(grunt){ ] }] }, - images : { + images: { files: [{ expand: true, dot: true, cwd: '<%= join.src %>/images', dest: '<%= join.dist %>/images', - src: ['**/*.{ico,png,jpg,jpeg,gif,svg}'] + src: ['**/*.{ico,png,jpg,jpeg,gif,svg}'] }] }, - html : { + html: { files: [{ expand: true, dot: true, @@ -38,7 +38,7 @@ module.exports = function(grunt){ src: ['**/*.html', '.htaccess'] }] }, - js : { + js: { files: [{ expand: true, dot: true, @@ -56,8 +56,9 @@ module.exports = function(grunt){ src: [ '**/*.{ico,svg,txt,pdf,css}', '.htaccess', + 'CNAME', ] - }] + }] } }, @@ -92,38 +93,38 @@ module.exports = function(grunt){ }, htmlmin: { - dist: { - options: { - collapseBooleanAttributes: true, - collapseWhitespace: true, - removeAttributeQuotes: true, - removeCommentsFromCDATA: true, - removeEmptyAttributes: true, - removeOptionalTags: true, - removeRedundantAttributes: true, - useShortDoctype: true - }, - files: [{ - expand: true, - cwd: '<%= join.src %>', - src: '**/*.html', - dest: '<%= join.dist %>' - }] - } - }, + dist: { + options: { + collapseBooleanAttributes: true, + collapseWhitespace: true, + removeAttributeQuotes: true, + removeCommentsFromCDATA: true, + removeEmptyAttributes: true, + removeOptionalTags: true, + removeRedundantAttributes: true, + useShortDoctype: true + }, + files: [{ + expand: true, + cwd: '<%= join.src %>', + src: '**/*.html', + dest: '<%= join.dist %>' + }] + } + }, imagemin: { - dist: { - options: { - optimizationLevel: 5 - }, - files: [{ - expand: true, - cwd: '<%= join.src %>/images', - src: ['**/*.{png,jpg,gif}'], - dest: '<%= join.dist %>/images' - }] - } + dist: { + options: { + optimizationLevel: 5 + }, + files: [{ + expand: true, + cwd: '<%= join.src %>/images', + src: ['**/*.{png,jpg,gif}'], + dest: '<%= join.dist %>/images' + }] + } }, uglify: { @@ -131,18 +132,18 @@ module.exports = function(grunt){ options: { banner: '/*! script.js 1.0.0 | Utkarsh Gupta | MIT Licensed */' }, - files : [{ + files: [{ expand: true, cwd: '<%= join.src %>/scripts', src: ['**/*.js', '!*.min.js'], dest: '<%= join.dist %>/scripts' }] - } + } }, sass: { dist: { - files : [{ + files: [{ expand: true, cwd: 'src/styles', src: ['**/*.scss'], @@ -167,66 +168,66 @@ module.exports = function(grunt){ }, connect: { - options: { - port: 5000, - livereload: 35729, - hostname: '0.0.0.0', - }, - livereload: { - options: { - open: true, - base: ['<%= join.dist %>'], - middleware: function (connect, options) { - if (!Array.isArray(options.base)) { - options.base = [options.base]; - } - var serveStatic = require('serve-static'); - var middlewares = [require('connect-livereload')()]; - options.base.forEach(function(base) { - middlewares.push(serveStatic(base)); - }); - return middlewares; - } - } - } - }, + options: { + port: 5001, + livereload: 35729, + hostname: '0.0.0.0', + }, + livereload: { + options: { + open: true, + base: ['<%= join.dist %>'], + middleware: function (connect, options) { + if (!Array.isArray(options.base)) { + options.base = [options.base]; + } + var serveStatic = require('serve-static'); + var middlewares = [require('connect-livereload')()]; + options.base.forEach(function (base) { + middlewares.push(serveStatic(base)); + }); + return middlewares; + } + } + } + }, watch: { scss: { files: 'src/styles/**/*.scss', - tasks : ['sass'], + tasks: ['sass'], options: { - livereload: '<%= connect.options.livereload %>', - } + livereload: '<%= connect.options.livereload %>', + } }, images: { files: 'src/images/**/*.{png,jpeg,jpg,ico,svg}', - tasks : ['clean:images','copy:images'], + tasks: ['clean:images', 'copy:images'], options: { - livereload: '<%= connect.options.livereload %>', - } + livereload: '<%= connect.options.livereload %>', + } }, html: { files: 'src/**/*.html', - tasks: ['clean:html','copy:html'], + tasks: ['clean:html', 'copy:html'], options: { - livereload: '<%= connect.options.livereload %>', - } + livereload: '<%= connect.options.livereload %>', + } }, js: { files: 'src/scripts/**/*.js', - tasks: ['clean:js','copy:js'], + tasks: ['clean:js', 'copy:js'], options: { - livereload: '<%= connect.options.livereload %>', - } + livereload: '<%= connect.options.livereload %>', + } } }, 'gh-pages': { - options: { - base: 'dist' - }, - src: ['**'] + options: { + base: 'dist' + }, + src: ['**'] } }); grunt.loadNpmTasks('grunt-contrib-sass'); @@ -239,6 +240,6 @@ module.exports = function(grunt){ grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks('grunt-gh-pages'); - grunt.registerTask('default',[ "clean:dist", "sass", "copy:dev", "connect:livereload", "watch" ]); - grunt.registerTask('build', [ "clean:dist", "sass", "cssmin", "uglify", "imagemin", "htmlmin", "copy:prod" ]); + grunt.registerTask('default', ["clean:dist", "sass", "copy:dev", "connect:livereload", "watch"]); + grunt.registerTask('build', ["clean:dist", "sass", "cssmin", "uglify", "imagemin", "htmlmin", "copy:prod"]); } diff --git a/Readme.md b/Readme.md index bff870d..77c1e25 100644 --- a/Readme.md +++ b/Readme.md @@ -1,18 +1,24 @@ -# SDSLabs Recruitment Page 2017 +# SDSLabs Recruitment Page + This website is used as a registration portal during the recruitment days for the SDSLabs. ## Prerequisites -- Install node and npm. +- Install nvm. ## Setup +- Run `nvm install` to install node version 8. - Run `npm install`. -## Development +## Development -- Run `./node_modules/.bin/grunt` to serve the site with livereload for development. +- Run `npm run dev` to serve the site with livereload for development. ## Production -- Run `./node_modules/.bin/grunt serve` to build the production website in `dist` folder. +- Run `npm run serve` to build the production website in `dist` folder. + +## Deployment + +- Run `npm run deploy` to deploy `dist` folder on `gh-pages` branch. diff --git a/package-lock.json b/package-lock.json index 50c96b5..c43890e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -124,12 +124,20 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "optional": true + "dev": true }, "array-unique": { "version": "0.2.1", @@ -603,6 +611,12 @@ "graceful-readlink": ">= 1.0.0" } }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1013,6 +1027,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1271,6 +1291,17 @@ "unpipe": "~1.0.0" } }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -1408,6 +1439,87 @@ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", "dev": true }, + "gh-pages": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, "gifsicle": { "version": "3.0.4", "resolved": "http://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", @@ -1511,6 +1623,19 @@ } } }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "globule": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", @@ -2789,6 +2914,15 @@ "strip-bom": "^2.0.0" } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", @@ -2995,6 +3129,23 @@ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -3419,6 +3570,30 @@ "dev": true, "optional": true }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -3538,6 +3713,33 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "pop-arrayify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pop-arrayify/-/pop-arrayify-1.0.0.tgz", @@ -4282,7 +4484,6 @@ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, - "optional": true, "requires": { "escape-string-regexp": "^1.0.2" } @@ -4522,7 +4723,6 @@ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", "dev": true, - "optional": true, "requires": { "escape-string-regexp": "^1.0.2" } @@ -4591,6 +4791,12 @@ "through2-filter": "^2.0.0" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 5e42ac9..df3d5f2 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,10 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "dev" :"grunt", - "serve": "grunt serve" + "dev": "grunt", + "serve": "grunt serve", + "build": "grunt build", + "deploy": "gh-pages -d dist -b gh-pages" }, "repository": { "type": "git", @@ -20,6 +21,7 @@ "homepage": "https://github.com/sdslabs/join#readme", "devDependencies": { "connect-livereload": "^0.6.0", + "gh-pages": "^3.2.3", "grunt": "^1.0.1", "grunt-contrib-clean": "^1.0.0", "grunt-contrib-connect": "^1.0.2", @@ -33,4 +35,4 @@ "grunt-gh-pages": "^2.0.0", "serve-static": "^1.11.1" } -} +} \ No newline at end of file diff --git a/src/CNAME b/src/CNAME new file mode 100644 index 0000000..5cc3c8d --- /dev/null +++ b/src/CNAME @@ -0,0 +1 @@ +join.sdslabs.co \ No newline at end of file diff --git a/src/index.html b/src/index.html index 27fa657..e7dd6d4 100644 --- a/src/index.html +++ b/src/index.html @@ -211,7 +211,7 @@

Recruitment Test

@@ -259,17 +259,18 @@

Designers (First year onl

Developers (First year only*)

-

Written test includes HTML, CSS, Aptitude, Competitive Programming, Comprehensions and a Miscellaneous section. Selected candidates will be called for interviews.

-

The date for the test will be provided soon.

-
-

Direct Interview entries :
Successful candidates of Winter of Code and Winners of Endgame, Codeblitz, n00bCTF

+

Written test includes Development, Aptitude, Competitive Programming, Comprehensions and a Probability & Statistics section. Selected candidates will be called for interviews. Successful candidates of Winter of Code and Winners of Endgame, Codeblitz, n00bCTF will get direct interview entries.

+
    +
  1. ML based Audio and video proctoring with realtime face tracking
  2. +
  3. Quiz must be taken in fullscreen mode, any suspicion of malicious activities will be penalised
  4. +
  5. If webcam permission aren't given you can't give the quiz
  6. +
  7. We log all key presses and take regular audio/video samples for manual inspection
  8. +
  9. We have Geolocation + IP logging built into our platform, being in campus but not in LHC will be considered as a malpractice
  10. +
  11. If any issues arise contact us inperson (offline) or DM us on discord
  12. + +

    *Contrary to common belief, we are always open to new members irrespective of year and branch. Obsessed with coding? Building something new every week? We insist that you join us! Send us your work to: contact@sdslabs.co.in. Visit our blog for more details.

-
@@ -278,7 +279,7 @@

Challenges

Makers

We are inviting you to show us a project that you can build in approximately 30 days. If your project is good enough, you will get a direct entry to the interview.

-

Last Date of Submission: To Be Announced

+

Last Date of Submission: 26th March 2022