From 8b8200c579d90025df8f0103dedb00eb8f66ccd5 Mon Sep 17 00:00:00 2001 From: Michael Truell Date: Sun, 28 Feb 2016 14:52:54 -0500 Subject: [PATCH 1/8] Initial commit --- .gitignore | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 21 ++++++++++++++++++ README.md | 1 + 3 files changed, 84 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1dbc687 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8b9d2d9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 HMProgrammingClub + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d59e8f3 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# HackMannWebsite \ No newline at end of file From 274d7649873f1b270d7c2b6960843d76e86b5df5 Mon Sep 17 00:00:00 2001 From: Michael Truell Date: Sun, 28 Feb 2016 15:16:32 -0500 Subject: [PATCH 2/8] Flask beginnings --- python/main.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 python/main.py diff --git a/python/main.py b/python/main.py new file mode 100644 index 0000000..a40281a --- /dev/null +++ b/python/main.py @@ -0,0 +1,16 @@ +from flask import Flask, request +app = Flask(__name__) + +def areArgsSet(args): + return all(arg in request.args for arg in args) + +@app.route('/user') +def user(): + if request.method == 'GET': + if areArgsSet(['name', 'school']): + return 'Hello World!' + return 'Invalid request to endpoints' + +if __name__ == '__main__': + app.debug = True + app.run() From f7a00b7aa3385553a4497fcd06066fb03bfd284d Mon Sep 17 00:00:00 2001 From: joshuagruenstein Date: Tue, 8 Mar 2016 20:35:09 -0500 Subject: [PATCH 3/8] fork @aspyrx --- img/c2a-icon.svg | 6 + img/chevron.svg | 7 + img/digitalocean-logo.svg | 112 +++++++++++++ img/email-icon.svg | 10 ++ img/facebook-icon.svg | 11 ++ img/horacemann-logo.svg | 6 + img/twitter-icon.svg | 7 + index.xhtml | 275 ++++++++++++++++++++++++++++++++ script/script.js | 77 +++++++++ style/importer.less | 2 + style/main.less | 323 ++++++++++++++++++++++++++++++++++++++ 11 files changed, 836 insertions(+) create mode 100755 img/c2a-icon.svg create mode 100755 img/chevron.svg create mode 100755 img/digitalocean-logo.svg create mode 100755 img/email-icon.svg create mode 100755 img/facebook-icon.svg create mode 100755 img/horacemann-logo.svg create mode 100755 img/twitter-icon.svg create mode 100755 index.xhtml create mode 100755 script/script.js create mode 100755 style/importer.less create mode 100755 style/main.less diff --git a/img/c2a-icon.svg b/img/c2a-icon.svg new file mode 100755 index 0000000..55e965c --- /dev/null +++ b/img/c2a-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/img/chevron.svg b/img/chevron.svg new file mode 100755 index 0000000..b915b44 --- /dev/null +++ b/img/chevron.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/img/digitalocean-logo.svg b/img/digitalocean-logo.svg new file mode 100755 index 0000000..e09d910 --- /dev/null +++ b/img/digitalocean-logo.svg @@ -0,0 +1,112 @@ + +image/svg+xml \ No newline at end of file diff --git a/img/email-icon.svg b/img/email-icon.svg new file mode 100755 index 0000000..7413efa --- /dev/null +++ b/img/email-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/img/facebook-icon.svg b/img/facebook-icon.svg new file mode 100755 index 0000000..1ea35f6 --- /dev/null +++ b/img/facebook-icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/img/horacemann-logo.svg b/img/horacemann-logo.svg new file mode 100755 index 0000000..b13e992 --- /dev/null +++ b/img/horacemann-logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/img/twitter-icon.svg b/img/twitter-icon.svg new file mode 100755 index 0000000..80d9db4 --- /dev/null +++ b/img/twitter-icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/index.xhtml b/index.xhtml new file mode 100755 index 0000000..85d6be3 --- /dev/null +++ b/index.xhtml @@ -0,0 +1,275 @@ + + + + HackMann 2015 + + + + + + +
+ +
+ + c2a-icon + +
+
+
+
+
+ +
+

So what exactly is HackMANN, anyway?

+

HackMANN is a hackathon for high school students that will be hosted at the Horace Mann School in Riverdale, Bronx. On Sunday, 2015 June 7, teams of 1-4 students are invited to come to Horace Mann School and spend the day creating a programming project. Professional mentors will be available to assist students in creating applications. At the end, each team will give a short presentation of its project, and the judges will decide the winners. Teams are welcome to start working on their projects in advance up to 4 days (2015 June 3) before the competition.

+
+
+
+
+

You mentioned winners. Are there prizes?

+

Yes! Teams will be judged in various categories, including ones specifically designed for complete beginners. Prizes in the form of swag and gadgets will be awarded for the best project in each of these categories.

+
+
+

When is the hackathon again?

+

HackMANN is taking place on Sunday, 2015 June 7 from 8 AM to 9 PM.

+
+
+

Where is Horace Mann School?

+

The school is located at:

+
231 West 246 Street
+ Bronx, NY 10471
+
+
+
+
+
+ +
+
+
+

Register here for HackMANN 2015!

+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+

Want to be a mentor? Sign up here!

+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+
+
+
+
+ +

Schedule

+
+
+
8 AM
+
Registration, Breakfast
+
9 AM
+
Kickoff
+
10 AM
+
Pitches, Team Formation
+
11 AM
+
Coding
+
12 PM
+
Lunch
+
1 PM
+
Coding
+
6 PM
+
Dinner
+
7 PM
+
Judging
+
8 PM
+
Closing
+
+
+
+
+ +
+
+ +

Proudly sponsored by:

+
+
+ + horacemann-logo + +
+
+ + digitalocean-logo + +
+
+
+ +
+ +
+ + + + + diff --git a/script/script.js b/script/script.js new file mode 100755 index 0000000..e69f312 --- /dev/null +++ b/script/script.js @@ -0,0 +1,77 @@ +window.onload = function() { + animateBits(); +}; + +document.getElementById('navbar-register-button').onclick = function() { + window.location.href = '#scroll-register'; +} + +formSubmit = function(e) { + e.preventDefault(); + + var form = e.target; + if (!form.checkValidity()) { + return; + } + + var formData = {} + for (var id in form.elements) { + var input = form.elements[id]; + if (input instanceof HTMLElement && input.name.length > 0) { + formData[input.name] = input.value; + } + } + + var formName = e.target.id.substring(0, e.target.id.indexOf('Form')); + statusClassList = document.getElementById(formName + '-form-status').classList; + statusTitle = document.getElementById(formName + '-form-status-title'); + statusMessage = document.getElementById(formName + '-form-status-message'); + statusMessageSuccessText = 'Thanks for signing up for HackMANN 2015! Look out soon for an email from us for more details.'; + if (formName === 'sponsor') { + statusMessageSuccessText = 'Thanks for your interest in sponsoring HackMANN 2015! Feel free to email us; otherwise, we will get in touch with you as soon as possible.'; + } + jQuery.ajax(form.action, { + method: 'POST', + data: formData, + success: function(data, textStatus, jqXHR) { + statusClassList.remove('hidden'); + statusClassList.remove('alert-danger'); + statusClassList.add("alert-success"); + statusTitle.innerHTML = 'Success!'; + statusMessage.innerHTML = statusMessageSuccessText; + }, + error: function(jqXHR, textStatus, errorThrown) { + statusClassList.remove('hidden'); + statusClassList.remove('alert-success'); + statusClassList.add('alert-danger'); + statusTitle.innerHTML = 'Uh oh...'; + statusMessage.innerHTML = 'Something went wrong! Please try again or contact us via email.'; + } + }); +} + +document.getElementById('registerForm').onsubmit = formSubmit; +document.getElementById('mentorForm').onsubmit = formSubmit; +document.getElementById('sponsorForm').onsubmit = formSubmit; + +function animateBits() { + const BITS_ID = 'bits'; + const BITS_TEXT = 'bits'; + const BITS_ANIMATE_INTERVAL = 50.0; + const BITS_ANIMATE_DURATION = 1500.0; + var bitsTextTicks = 0; + var animateBITS_ID = window.setInterval(function() { + var len = Math.floor(bitsTextTicks / (BITS_ANIMATE_DURATION / BITS_ANIMATE_INTERVAL) * 4); + var text = BITS_TEXT; + for (i = len; i < 4; i++) { + text = text.substr(0, i) + (Math.random() > 0.5 ? '1' : '0') + text.substr(i + 1); + } + document.getElementById(BITS_ID).innerHTML = text; + bitsTextTicks++; + }, BITS_ANIMATE_INTERVAL); + window.setTimeout(function() { + window.clearInterval(animateBITS_ID); + document.getElementById(BITS_ID).innerHTML = BITS_TEXT; + }, BITS_ANIMATE_DURATION); +} + diff --git a/style/importer.less b/style/importer.less new file mode 100755 index 0000000..e45ab1c --- /dev/null +++ b/style/importer.less @@ -0,0 +1,2 @@ +@import '../node_modules/bootstrap/less/bootstrap.less'; +@import 'main.less'; diff --git a/style/main.less b/style/main.less new file mode 100755 index 0000000..b078541 --- /dev/null +++ b/style/main.less @@ -0,0 +1,323 @@ +@import url(http://fonts.googleapis.com/css?family=Raleway:400,600,800); + +@font-family-sans-serif: 'Raleway', sans-serif; +@font-size-base: 18px; +@brand-primary: #5F0013; +@navbar-border-radius: 0px; +@navbar-default-bg: white; +@navbar-default-brand-color: @gray-dark; +@navbar-default-link-color: @brand-primary; +@code-color: @brand-primary; +@code-bg: @gray-lighter; + +b { + font-weight: 600; +} + +html, body { + height: 100%; +} + +body { + padding-top: @navbar-height; + overflow-x: hidden; +} + +.full-height { + height: 100%; +} + +.center-vertical { + top: 50%; + transform: translateY(-50%); +} + +.animated { + -webkit-animation-fill-mode: both; + -webkit-animation-duration: 1000ms; + animation-fill-mode: both; + animation-duration: 1000ms; +} + +@-webkit-keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } + + 100% { + opacity: 1; + } +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + + +@-webkit-keyframes fadeInUp { + 0% { + opacity: 0; + transform: translateY(100%); + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeInUp { + 0% { + opacity: 0; + transform: translateY(100%); + } + + 100% { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +.hack { + color: @gray-darker; + font-weight: 600; +} + +.mann { + color: @brand-primary; + font-weight: 800; +} + +.scroll-anchor { + position: relative; + top: -@navbar-height; +} + +#header { + height: 100%; +} + +#c2a { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 7.5%; +} + +#c2a a { + display: block; + height: 100%; +} + +#c2a a:hover { + opacity: 0.75; +} + +#c2a img { + height: 100%; + width: auto; +} + +#header-logo { + position: relative; + margin-top: 0; + margin-bottom: 0; +} + +#header-logo-text { + position: relative; + overflow: hidden; + font-size: 25px; + @media (min-width: @screen-sm-min) { + font-size: 50px; + white-space: nowrap; + } + @media (min-width: @screen-md-min) { + font-size: 75px; + } + @media (min-width: @screen-lg-min) { + font-size: 100px; + } +} + +@-webkit-keyframes headerTextAppear { + 0% { + width: 0; + left: 50%; + right: 50%; + } + + 100% { + width: 100%; + left: 0; + right: 0; + } +} + +@keyframes headerTextAppear { + 0% { + width: 0; + left: 50%; + right: 50%; + } + + 100% { + width: 100%; + left: 0; + right: 0; + } +} + +.headerTextAppear { + -webkit-animation-name: headerTextAppear; + -webkit-animation-duration: 450ms; + -webkit-animation-delay: 550ms; + animation-name: headerTextAppear; + animation-duration: 450ms; + animation-delay: 550ms; +} + +.chevron { + position: absolute; + top: 0; + bottom: 0; + width: 100%; +} + +.chevron img { + display: block; + height: 100%; + width: auto; +} + +.chevron-left { + left: 0; +} + +.chevron-right { + right: 0; +} + +@-webkit-keyframes chevronLeftSlide { + 0% { + transform: translateX(50%); + } + + 100% { + transform: translateX(0); + } +} + +@keyframes chevronLeftSlide { + 0% { + transform: translateX(50%); + } + + 100% { + transform: translateX(0); + } +} + +@-webkit-keyframes chevronRightSlide { + 0% { + transform: translateX(-50%) scaleX(-1); + } + + 100% { + transform: translateX(0) scaleX(-1); + } +} + +@keyframes chevronRightSlide { + 0% { + transform: translateX(-50%) scaleX(-1); + } + + 100% { + transform: translateX(0) scaleX(-1); + } +} + +.chevronSlide() { + -webkit-animation-delay: 500ms; + -webkit-animation-duration: 500ms; + animation-delay: 500ms; + animation-duration: 500ms; +} + +.chevronLeftSlide { + .chevronSlide(); + -webkit-animation-name: chevronLeftSlide; + animation-name: chevronLeftSlide; +} + +.chevronRightSlide { + .chevronSlide(); + -webkit-animation-name: chevronRightSlide; + animation-name: chevronRightSlide; +} + +#contact img { + height: 100px; + width: auto; + margin-top: 15px; +} + +#contact a:hover { + opacity: 0.75; +} + +#sponsors img { + height: 150px; + width: auto; + margin-top: 15px; +} + +#sponsors a:hover { + opacity: 0.75; +} + From a24f8bb6e72bc65de845fac7c8e72d308b5ca794 Mon Sep 17 00:00:00 2001 From: joshuagruenstein Date: Tue, 8 Mar 2016 21:22:03 -0500 Subject: [PATCH 4/8] compiled less don't kill me stan --- index.xhtml => index.html | 4 +- style/importer.less | 2 - style/main.css | 308 ++++++++++++++++++++++++++++++++++++ style/main.less | 323 -------------------------------------- 4 files changed, 310 insertions(+), 327 deletions(-) rename index.xhtml => index.html (99%) delete mode 100755 style/importer.less create mode 100644 style/main.css delete mode 100755 style/main.less diff --git a/index.xhtml b/index.html similarity index 99% rename from index.xhtml rename to index.html index 85d6be3..ad7f5b3 100755 --- a/index.xhtml +++ b/index.html @@ -1,10 +1,10 @@ - HackMann 2015 - + +