From 37e162732ccdf0c9b966d97700f4cedd676c076f Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Mon, 23 Sep 2019 15:39:18 +0300 Subject: [PATCH] Next.js-ify, step 1 --- .babelrc | 3 - .gitignore | 6 +- components/Footer.jsx | 44 ++++ gulpfile.babel.js | 193 ------------------ {src/js => legacy-js}/api.js | 0 {src/js => legacy-js}/components/email.js | 0 {src/js => legacy-js}/components/fader.js | 0 {src/js => legacy-js}/components/feed.js | 0 .../js => legacy-js}/components/inviteForm.js | 0 {src/js => legacy-js}/components/loader.js | 0 {src/js => legacy-js}/components/members.js | 0 .../components/membershipForm.js | 0 .../components/membershipInfoForm.js | 0 {src => legacy-js}/config.js | 0 {src/js => legacy-js}/ga.js | 0 {src/js => legacy-js}/main.js | 0 {src/js => legacy-js}/util.js | 0 next.config.js | 2 + package.json | 60 +----- pages/_document.jsx | 63 ++++++ pages/index.jsx | 176 ++++++++++++++++ src/index.jade | 98 --------- src/templates/head.jade | 70 ------- .../icons/android-chrome-192x192.png | Bin .../icons/android-chrome-512x512.png | Bin .../icons/apple-touch-icon.png | Bin .../assets => static}/icons/favicon-16x16.png | Bin .../assets => static}/icons/favicon-32x32.png | Bin {src/assets => static}/icons/favicon.ico | Bin {src/assets => static}/icons/site.webmanifest | 0 {src/assets => static}/images/avain.svg | 0 {src/assets => static}/images/codestats.png | Bin {src/assets => static}/images/futurice.svg | 0 {src/assets => static}/images/hp3_bw.jpg | Bin {src/assets => static}/images/jumbo.jpg | Bin {src/assets => static}/images/logo-js.png | Bin {src/assets => static}/images/logo-new.svg | 0 {src/assets => static}/images/logo.png | Bin {src/assets => static}/images/metosin.svg | 0 {src/assets => static}/images/nordea.png | Bin {src/assets => static}/images/octocat.png | Bin {src/assets => static}/images/poster.jpg | Bin {src/assets => static}/images/reactabular.png | Bin {src/assets => static}/images/redom.svg | 0 {src/assets => static}/images/slack.png | Bin {src/assets => static}/images/solita.svg | 0 {src/assets => static}/images/wakeone.svg | 0 {src/assets => static}/videos/jumbo.mp4 | Bin {src/styles => styles}/_button.styl | 0 {src/styles => styles}/_header.styl | 4 +- {src/styles => styles}/_input.styl | 0 {src/styles => styles}/_loader.styl | 0 {src/styles => styles}/icons.less | 6 +- {src/styles => styles}/style.styl | 2 +- test/test-helper.js | 7 - 55 files changed, 302 insertions(+), 432 deletions(-) delete mode 100644 .babelrc create mode 100644 components/Footer.jsx delete mode 100644 gulpfile.babel.js rename {src/js => legacy-js}/api.js (100%) rename {src/js => legacy-js}/components/email.js (100%) rename {src/js => legacy-js}/components/fader.js (100%) rename {src/js => legacy-js}/components/feed.js (100%) rename {src/js => legacy-js}/components/inviteForm.js (100%) rename {src/js => legacy-js}/components/loader.js (100%) rename {src/js => legacy-js}/components/members.js (100%) rename {src/js => legacy-js}/components/membershipForm.js (100%) rename {src/js => legacy-js}/components/membershipInfoForm.js (100%) rename {src => legacy-js}/config.js (100%) rename {src/js => legacy-js}/ga.js (100%) rename {src/js => legacy-js}/main.js (100%) rename {src/js => legacy-js}/util.js (100%) create mode 100644 next.config.js create mode 100644 pages/_document.jsx create mode 100644 pages/index.jsx delete mode 100644 src/index.jade delete mode 100644 src/templates/head.jade rename {src/assets => static}/icons/android-chrome-192x192.png (100%) rename {src/assets => static}/icons/android-chrome-512x512.png (100%) rename {src/assets => static}/icons/apple-touch-icon.png (100%) rename {src/assets => static}/icons/favicon-16x16.png (100%) rename {src/assets => static}/icons/favicon-32x32.png (100%) rename {src/assets => static}/icons/favicon.ico (100%) rename {src/assets => static}/icons/site.webmanifest (100%) rename {src/assets => static}/images/avain.svg (100%) rename {src/assets => static}/images/codestats.png (100%) rename {src/assets => static}/images/futurice.svg (100%) rename {src/assets => static}/images/hp3_bw.jpg (100%) rename {src/assets => static}/images/jumbo.jpg (100%) rename {src/assets => static}/images/logo-js.png (100%) rename {src/assets => static}/images/logo-new.svg (100%) rename {src/assets => static}/images/logo.png (100%) rename {src/assets => static}/images/metosin.svg (100%) rename {src/assets => static}/images/nordea.png (100%) rename {src/assets => static}/images/octocat.png (100%) rename {src/assets => static}/images/poster.jpg (100%) rename {src/assets => static}/images/reactabular.png (100%) rename {src/assets => static}/images/redom.svg (100%) rename {src/assets => static}/images/slack.png (100%) rename {src/assets => static}/images/solita.svg (100%) rename {src/assets => static}/images/wakeone.svg (100%) rename {src/assets => static}/videos/jumbo.mp4 (100%) rename {src/styles => styles}/_button.styl (100%) rename {src/styles => styles}/_header.styl (98%) rename {src/styles => styles}/_input.styl (100%) rename {src/styles => styles}/_loader.styl (100%) rename {src/styles => styles}/icons.less (63%) rename {src/styles => styles}/style.styl (99%) delete mode 100644 test/test-helper.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 86c445f..0000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["es2015", "react"] -} diff --git a/.gitignore b/.gitignore index d28fd52..d7e8c53 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -npm-debug.log +*.log +.DS_Store +.next node_modules public -.DS_Store - diff --git a/components/Footer.jsx b/components/Footer.jsx new file mode 100644 index 0000000..908e640 --- /dev/null +++ b/components/Footer.jsx @@ -0,0 +1,44 @@ +export function Footer() { + return ( + + ); +} diff --git a/gulpfile.babel.js b/gulpfile.babel.js deleted file mode 100644 index 1d41d15..0000000 --- a/gulpfile.babel.js +++ /dev/null @@ -1,193 +0,0 @@ -import browserify from 'browserify'; -import browserSync from 'browser-sync'; -import duration from 'gulp-duration'; -import es from 'event-stream'; -import exorcist from 'exorcist'; -import gulp from 'gulp'; -import gutil from 'gulp-util'; -import inject from 'gulp-inject'; -import jade from 'gulp-jade'; -import less from 'gulp-less'; -import notifier from 'node-notifier'; -import path from 'path'; -import prefix from 'gulp-autoprefixer'; -import rev from 'gulp-rev'; -import source from 'vinyl-source-stream'; -import sourcemaps from 'gulp-sourcemaps'; -import streamify from 'gulp-streamify'; -import stylus from 'gulp-stylus'; -import transform from 'vinyl-transform'; -import uglify from 'gulp-uglify'; -import watch from 'gulp-watch'; -import watchify from 'watchify'; - -/*eslint "no-process-env":0 */ -const production = process.env.NODE_ENV === 'production'; - -const config = { - source: './src', - destination: './public', - scripts: { - source: './src/js/main.js', - destination: './public/js/', - extensions: ['.jsx'], - filename: 'bundle.js' - }, - templates: { - source: './src/*.jade', - watch: './src/*.jade', - destination: './public/', - revision: './public/**/*.html' - }, - styles: { - source: './src/styles/style.styl', - watch: './src/styles/**/*.styl', - icons: './src/styles/icons.less', - destination: './public/css/' - }, - assets: { - source: ['./src/assets/**/*.*', './node_modules/font-awesome/fonts*/*.*'], - watch: './src/assets/**/*.*', - destination: './public/' - }, - inject: { - resources: ['./public/**/*.css', './public/**/*.js'] - } -}; - -const browserifyConfig = { - entries: [config.scripts.source], - extensions: config.scripts.extensions, - debug: !production, - cache: {}, - packageCache: {} -}; - -function handleError(err) { - gutil.log(err.message); - gutil.beep(); - notifier.notify({ - title: 'Compile Error', - message: err.message - }); - return this.emit('end'); -} - -gulp.task('scripts', () => { - let pipeline = browserify(browserifyConfig) - .bundle() - .on('error', handleError) - .pipe(source(config.scripts.filename)); - - if(production) { - pipeline = pipeline - .pipe(streamify(uglify())) - .pipe(streamify(rev())); - } else { - pipeline = pipeline.pipe(transform(() => { - return exorcist(path.join(config.scripts.destination, config.scripts.filename) + '.map'); - })); - } - - return pipeline.pipe(gulp.dest(config.scripts.destination)); -}); - -gulp.task('templates', ['styles', 'scripts'], () => { - const resources = gulp.src(config.inject.resources, {read: false}); - - const pipeline = gulp.src(config.templates.source) - .pipe(jade({ - pretty: !production - })) - .on('error', handleError) - .pipe(inject(resources, {ignorePath: 'public', removeTags: true})) - .pipe(gulp.dest(config.templates.destination)); - - if(production) { - return pipeline; - } - - return pipeline.pipe(browserSync.reload({ - stream: true - })); -}); - -gulp.task('styles', () => { - let pipeline = gulp.src(config.styles.source); - - if(!production) { - pipeline = pipeline.pipe(sourcemaps.init()); - } - - const icons = gulp.src(config.styles.icons) - .pipe(less()); - - pipeline = es.merge(icons, pipeline.pipe(stylus({ - 'include css': true, - paths: ['node_modules', path.join(__dirname, config.source)], - compress: production - }))) - .on('error', handleError) - .pipe(prefix('last 2 versions', 'Chrome 34', 'Firefox 28', 'iOS 7')); - - if(production) { - pipeline = pipeline.pipe(rev()); - } else { - pipeline = pipeline.pipe(sourcemaps.write('.')); - } - - pipeline = pipeline.pipe(gulp.dest(config.styles.destination)); - - if(production) { - return pipeline; - } - - return pipeline.pipe(browserSync.stream({ - match: '**/*.css' - })); -}); - -gulp.task('assets', () => { - return gulp.src(config.assets.source) - .pipe(gulp.dest(config.assets.destination)); -}); - -gulp.task('server', () => { - return browserSync({ - open: false, - port: 9001, - notify: false, - ghostMode: false, - server: { - baseDir: config.destination - } - }); -}); - -gulp.task('watch', () => { - - ['templates', 'styles', 'assets'].forEach((watched) => { - watch(config[watched].watch, () => { - gulp.start(watched); - }); - }); - - const bundle = watchify(browserify(browserifyConfig)); - - bundle.on('update', () => { - const build = bundle.bundle() - .on('error', handleError) - .pipe(source(config.scripts.filename)); - - build - .pipe(transform(() => { - return exorcist(config.scripts.destination + config.scripts.filename + '.map'); - })) - .pipe(gulp.dest(config.scripts.destination)) - .pipe(duration('Rebundling browserify bundle')) - .pipe(browserSync.reload({stream: true})); - }).emit('update'); -}); - -gulp.task('build', ['styles', 'assets', 'scripts', 'templates']); -gulp.task('default', ['styles', 'assets', 'templates', 'watch', 'server']); diff --git a/src/js/api.js b/legacy-js/api.js similarity index 100% rename from src/js/api.js rename to legacy-js/api.js diff --git a/src/js/components/email.js b/legacy-js/components/email.js similarity index 100% rename from src/js/components/email.js rename to legacy-js/components/email.js diff --git a/src/js/components/fader.js b/legacy-js/components/fader.js similarity index 100% rename from src/js/components/fader.js rename to legacy-js/components/fader.js diff --git a/src/js/components/feed.js b/legacy-js/components/feed.js similarity index 100% rename from src/js/components/feed.js rename to legacy-js/components/feed.js diff --git a/src/js/components/inviteForm.js b/legacy-js/components/inviteForm.js similarity index 100% rename from src/js/components/inviteForm.js rename to legacy-js/components/inviteForm.js diff --git a/src/js/components/loader.js b/legacy-js/components/loader.js similarity index 100% rename from src/js/components/loader.js rename to legacy-js/components/loader.js diff --git a/src/js/components/members.js b/legacy-js/components/members.js similarity index 100% rename from src/js/components/members.js rename to legacy-js/components/members.js diff --git a/src/js/components/membershipForm.js b/legacy-js/components/membershipForm.js similarity index 100% rename from src/js/components/membershipForm.js rename to legacy-js/components/membershipForm.js diff --git a/src/js/components/membershipInfoForm.js b/legacy-js/components/membershipInfoForm.js similarity index 100% rename from src/js/components/membershipInfoForm.js rename to legacy-js/components/membershipInfoForm.js diff --git a/src/config.js b/legacy-js/config.js similarity index 100% rename from src/config.js rename to legacy-js/config.js diff --git a/src/js/ga.js b/legacy-js/ga.js similarity index 100% rename from src/js/ga.js rename to legacy-js/ga.js diff --git a/src/js/main.js b/legacy-js/main.js similarity index 100% rename from src/js/main.js rename to legacy-js/main.js diff --git a/src/js/util.js b/legacy-js/util.js similarity index 100% rename from src/js/util.js rename to legacy-js/util.js diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..ca2a437 --- /dev/null +++ b/next.config.js @@ -0,0 +1,2 @@ +const withStylus = require('@zeit/next-stylus'); +module.exports = withStylus({}); diff --git a/package.json b/package.json index 3f0ec66..f31284c 100644 --- a/package.json +++ b/package.json @@ -10,70 +10,26 @@ "build": "rm -rf public && gulp build", "dev": "SERVER=http://localhost:9000/ ENV=development npm start", "prod": "ENV=production npm start", - "lint": "eslint src", - "test": "mocha src/**/__tests__/*.js --compilers js:babel-core/register --require test/test-helper" + "lint": "eslint src" }, - "keywords": [ - "gulp", - "template" - ], "dependencies": { + "@zeit/next-css": "^1.0.1", + "@zeit/next-stylus": "^1.0.1", "axios": "^0.4.2", "classnames": "^2.2.1", "font-awesome": "^4.4.0", - "http-server": "^0.11.1", "lodash": "^3.9.1", + "next": "^9.0.6", "parse-github-event": "^0.2.0", "prop-types": "^15.5.10", - "react": "^0.14.3", - "react-dom": "^0.14.3", + "react": "^16.9.0", + "react-dom": "^16.9.0", "react-stripe-checkout": "^2.4.0", + "stylus": "^0.54.7", "timeago": "^0.2.0", "twitter-text": "^1.11.0" }, "devDependencies": { - "babel": "^6.1.18", - "babel-core": "^6.2.1", - "babel-eslint": "^4.1.3", - "babel-preset-es2015": "^6.1.18", - "babel-preset-react": "^6.1.18", - "babelify": "^7.2.0", - "browser-sync": "^2.9.4", - "browserify": "^10.2.1", - "chai": "^3.0.0", - "envify": "^3.4.0", - "eslint": "^1.5.1", - "eslint-config-airbnb": "0.0.9", - "eslint-plugin-react": "^3.4.2", - "event-stream": "4.0.1", - "exorcist": "^0.4.0", - "gulp": "3.9.0", - "gulp-autoprefixer": "1.0.1", - "gulp-duration": "0.0.0", - "gulp-inject": "^3.0.0", - "gulp-jade": "^1.1.0", - "gulp-less": "^3.0.5", - "gulp-replace": "^0.5.3", - "gulp-rev": "^4.0.0", - "gulp-sourcemaps": "^1.3.0", - "gulp-streamify": "0.0.5", - "gulp-stylus": "^2.6.0", - "gulp-uglify": "~1.0.1", - "gulp-util": "~3.0.1", - "gulp-watch": "^4.3.4", - "jsdom": "^5.6.0", - "mocha": "^2.2.5", - "node-notifier": "^4.2.1", - "rimraf": "^2.3.4", - "surge": "^0.20.1", - "vinyl-source-stream": "~1.0.0", - "vinyl-transform": "^1.0.0", - "watchify": "^3.2.1" - }, - "browserify": { - "transform": [ - "babelify", - "envify" - ] + "prettier": "^1.18.2" } } diff --git a/pages/_document.jsx b/pages/_document.jsx new file mode 100644 index 0000000..d334cee --- /dev/null +++ b/pages/_document.jsx @@ -0,0 +1,63 @@ +import Document, { Html, Head, Main, NextScript } from "next/document"; +import { Footer } from "../components/Footer"; + +class MyDocument extends Document { + static async getInitialProps(ctx) { + const initialProps = await Document.getInitialProps(ctx); + return { ...initialProps }; + } + + render() { + return ( + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ + + ); + } +} + +export default MyDocument; diff --git a/pages/index.jsx b/pages/index.jsx new file mode 100644 index 0000000..dcc5305 --- /dev/null +++ b/pages/index.jsx @@ -0,0 +1,176 @@ +import "../styles/style.styl"; +import Head from "next/head"; + +const Hero = () => ( +
+ +
+
+ + Etusivu + +
+
+

+ Yhteisö kaikille ohjelmoinnista ja ohjelmistoalasta kiinnostuneille + harrastajille ja ammattilaisille. +

+
+
+
+); + +const IndexContent = () => ( + <> +
+
+
+

+ Tule mukaan{" "} + + Slack + + -yhteisöömme +

+
+

+ Ennen liittymistä yhteisöömme varmista, että olet lukenut yhteisön{" "} + + käyttäytymissäännöt + + . +

+
+
+
+
+
+
+

Yhteisö ohjelmoinnista kiinnostuneille

+

+ Koodiklinikka on Suomen suurin ohjelmistoalan yhteisö, joka + kokoaa työntekijät, harrastajat ja vasta-alkajat yhteen.{"\n"} + Tarkoituksenamme on yhdistää ja kasvattaa suomalaista + ohjelmointiyhteisöä, sekä tarjota apua ja uusia kontakteja + ohjelmoinnista innostuneille nuorille. +

+

+ Mukaan liittyminen on ilmaista ja helppoa. Jätä + sähköpostiosoitteesi ylläolevaan kenttään ja lähetämme sinulle + kutsun Slack-yhteisöömme. +

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

Avoin lähdekoodi

+

+ Suosimme avointa lähdekoodia ja kaikki käyttämämme koodi on + vapaasti saatavilla ja hyödynnettävissä{" "} + + Github-organisaatiomme sivulta + + . Organisaation jäseneksi otamme kaikki Slack-yhteisömme + jäsenet. Koodiklinikan projekteihin voi osallistua kuka tahansa + ja muutosideat ovat aina lämpimästi tervetulleita. +

+
+
+
+
+
+

Potilaiden projekteja

+
+
+ + + +
+
+

RE:DOM

+

+ Tiny (2 KB) turboboosted JavaScript library for creating user + interfaces. Develop web apps with 100 % JavaScript and web + standards. +

+
+
+
+
+ + + +
+
+

Code::Stats

+

+ Code::Stats is a free stats tracking service for programmers +

+
+
+
+
+ + + +
+
+

Reactabular

+

A framework for building the React table you need

+
+
+
+
+ + + +
+
+

Avain.app

+

Secure one-time password manager (PWA + Web Crypto)

+
+
+
+
+
+
+ +); + +const Index = () => ( + + + Koodiklinikka + + + + +); + +export default Index; diff --git a/src/index.jade b/src/index.jade deleted file mode 100644 index 5346f36..0000000 --- a/src/index.jade +++ /dev/null @@ -1,98 +0,0 @@ -extends templates/head - -block title - | Koodiklinikka - -block header_content - video(autoplay, loop, poster='images/poster.jpg', class='header__video-bg') - source(src='videos/jumbo.mp4', type='video/mp4') - .header__container - .header__nav - a(href='/') - img(src="images/logo-new.svg", alt="Etusivu") - .header__headline - h1.header__title Yhteisö kaikille ohjelmoinnista ja ohjelmistoalasta kiinnostuneille harrastajille ja ammattilaisille. - -block content - .content.with-feed - section - .row - h3 Tule mukaan Slack-yhteisöömme - #invite-form.form - p.code-of-conduct Ennen liittymistä yhteisöömme varmista, että olet lukenut yhteisön käyttäytymissäännöt. - section - .row - .bread - .column.column1-2 - h3 Yhteisö ohjelmoinnista kiinnostuneille - p. - Koodiklinikka on Suomen suurin ohjelmistoalan yhteisö, joka kokoaa työntekijät, harrastajat ja vasta-alkajat yhteen. - Tarkoituksenamme on yhdistää ja kasvattaa suomalaista ohjelmointiyhteisöä, sekä tarjota apua ja uusia kontakteja ohjelmoinnista innostuneille nuorille. - p. - Mukaan liittyminen on ilmaista ja helppoa. Jätä sähköpostiosoitteesi ylläolevaan kenttään ja lähetämme sinulle kutsun Slack-yhteisöömme. - .column.column1-2 - a(href='images/slack.png', target='_blank') - img(src='images/slack.png') - - - .row - .bread - .column.column2-5 - img(src='images/octocat.png') - - .column.column3-5 - h3 Avoin lähdekoodi - p - |Suosimme avointa lähdekoodia ja kaikki käyttämämme koodi on vapaasti saatavilla ja hyödynnettävissä Github-organisaatiomme sivulta. - |Organisaation jäseneksi otamme kaikki Slack-yhteisömme jäsenet. Koodiklinikan projekteihin voi osallistua kuka tahansa ja muutosideat ovat aina lämpimästi tervetulleita. - - #members - - .row - h2 Potilaiden projekteja - .bread - .column.column2-5 - a(href='https://redom.js.org', target='_blank') - img(src='images/redom.svg') - - .column.column3-5 - h4 RE:DOM - - p. - Tiny (2 KB) turboboosted JavaScript library for creating user interfaces. - Develop web apps with 100 % JavaScript and web standards. - - .bread - .column.column2-5 - a(href='https://codestats.net/', target='_blank') - img.project-image__codestats(src='images/codestats.png') - - .column.column3-5 - h4 Code::Stats - - p. - Code::Stats is a free stats tracking service for programmers - - .bread - .column.column2-5 - a(href='https://reactabular.js.org/', target='_blank') - img.project-image__codestats(src='images/reactabular.png') - - .column.column3-5 - h4 Reactabular - - p. - A framework for building the React table you need - - .bread - .column.column2-5 - a(href='https://avain.app', target='_blank') - img(src='images/avain.svg' style='width: 7rem') - - .column.column3-5 - h4 Avain.app - - p. - Secure one-time password manager (PWA + Web Crypto) - - #feed diff --git a/src/templates/head.jade b/src/templates/head.jade deleted file mode 100644 index d284d06..0000000 --- a/src/templates/head.jade +++ /dev/null @@ -1,70 +0,0 @@ -doctype html -html - head - title - block title - // inject:css - // endinject - meta(name='description', content='Koodiklinikka on suomalainen yhteisö ohjelmistoalan harrastajille ja ammattilaisille.') - meta(name='keywords', content='ohjelmointi,frontend,open source,devaus,suomi,javascript,clojure,go,java,node.js,io.js,angular.js,web') - meta(charset='utf-8') - meta(name='viewport', content='width=device-width, initial-scale=1') - meta(name='apple-mobile-web-app-capable', content='yes') - - script. - if(location.hostname === 'koodiklinikka.fi' && location.protocol !== 'https:') { - location.protocol = 'https'; - } - link(rel='apple-touch-icon', sizes='180x180', href='icons/apple-touch-icon.png') - link(rel='icon', type='image/png', sizes='32x32', href='icons/favicon-32x32.png') - link(rel='icon', type='image/png', sizes='16x16', href='icons/favicon-16x16.png') - link(rel='manifest', href='icons/site.webmanifest') - meta(property='og:image', content='images/logo.png') - script(src='https://js.stripe.com/v3/') - script(src='//use.typekit.net/scb5xny.js') - script. - try{Typekit.load();}catch(e){}; - - body - .site - .container - .header - block header_content - - block content - - footer - .sponsors - .sponsors__label Yhteistyössä - a(href='http://futurice.com/', target='_blank') - img.sponsor.sponsor__futurice(src='images/futurice.svg') - a(href='http://www.metosin.fi/', target='_blank') - img.sponsor.sponsor__metosin(src='images/metosin.svg') - a(href='https://www.solita.fi/', target='_blank') - img.sponsor(src='images/solita.svg') - a(href='http://wakeone.co/', target='_blank') - img.sponsor.sponsor__wakeone(src='images/wakeone.svg') - a(href='https://www.nordea.com/', target='_blank') - img.sponsor.sponsor__nordea(src='images/nordea.png') - - .contacts - div - a(href='https://koodiklinikka.slack.com') - i.fa.fa-slack - - a(href='https://github.com/koodiklinikka/koodiklinikka.fi') - i.fa.fa-github - - a(href='https://twitter.com/koodiklinikka') - i.fa.fa-twitter - - a(href='https://www.linkedin.com/groups/12025476') - i.fa.fa-linkedin - - a(href='https://www.facebook.com/koodiklinikka') - i.fa.fa-facebook - div#email.email - - #fader - // inject:js - // endinject diff --git a/src/assets/icons/android-chrome-192x192.png b/static/icons/android-chrome-192x192.png similarity index 100% rename from src/assets/icons/android-chrome-192x192.png rename to static/icons/android-chrome-192x192.png diff --git a/src/assets/icons/android-chrome-512x512.png b/static/icons/android-chrome-512x512.png similarity index 100% rename from src/assets/icons/android-chrome-512x512.png rename to static/icons/android-chrome-512x512.png diff --git a/src/assets/icons/apple-touch-icon.png b/static/icons/apple-touch-icon.png similarity index 100% rename from src/assets/icons/apple-touch-icon.png rename to static/icons/apple-touch-icon.png diff --git a/src/assets/icons/favicon-16x16.png b/static/icons/favicon-16x16.png similarity index 100% rename from src/assets/icons/favicon-16x16.png rename to static/icons/favicon-16x16.png diff --git a/src/assets/icons/favicon-32x32.png b/static/icons/favicon-32x32.png similarity index 100% rename from src/assets/icons/favicon-32x32.png rename to static/icons/favicon-32x32.png diff --git a/src/assets/icons/favicon.ico b/static/icons/favicon.ico similarity index 100% rename from src/assets/icons/favicon.ico rename to static/icons/favicon.ico diff --git a/src/assets/icons/site.webmanifest b/static/icons/site.webmanifest similarity index 100% rename from src/assets/icons/site.webmanifest rename to static/icons/site.webmanifest diff --git a/src/assets/images/avain.svg b/static/images/avain.svg similarity index 100% rename from src/assets/images/avain.svg rename to static/images/avain.svg diff --git a/src/assets/images/codestats.png b/static/images/codestats.png similarity index 100% rename from src/assets/images/codestats.png rename to static/images/codestats.png diff --git a/src/assets/images/futurice.svg b/static/images/futurice.svg similarity index 100% rename from src/assets/images/futurice.svg rename to static/images/futurice.svg diff --git a/src/assets/images/hp3_bw.jpg b/static/images/hp3_bw.jpg similarity index 100% rename from src/assets/images/hp3_bw.jpg rename to static/images/hp3_bw.jpg diff --git a/src/assets/images/jumbo.jpg b/static/images/jumbo.jpg similarity index 100% rename from src/assets/images/jumbo.jpg rename to static/images/jumbo.jpg diff --git a/src/assets/images/logo-js.png b/static/images/logo-js.png similarity index 100% rename from src/assets/images/logo-js.png rename to static/images/logo-js.png diff --git a/src/assets/images/logo-new.svg b/static/images/logo-new.svg similarity index 100% rename from src/assets/images/logo-new.svg rename to static/images/logo-new.svg diff --git a/src/assets/images/logo.png b/static/images/logo.png similarity index 100% rename from src/assets/images/logo.png rename to static/images/logo.png diff --git a/src/assets/images/metosin.svg b/static/images/metosin.svg similarity index 100% rename from src/assets/images/metosin.svg rename to static/images/metosin.svg diff --git a/src/assets/images/nordea.png b/static/images/nordea.png similarity index 100% rename from src/assets/images/nordea.png rename to static/images/nordea.png diff --git a/src/assets/images/octocat.png b/static/images/octocat.png similarity index 100% rename from src/assets/images/octocat.png rename to static/images/octocat.png diff --git a/src/assets/images/poster.jpg b/static/images/poster.jpg similarity index 100% rename from src/assets/images/poster.jpg rename to static/images/poster.jpg diff --git a/src/assets/images/reactabular.png b/static/images/reactabular.png similarity index 100% rename from src/assets/images/reactabular.png rename to static/images/reactabular.png diff --git a/src/assets/images/redom.svg b/static/images/redom.svg similarity index 100% rename from src/assets/images/redom.svg rename to static/images/redom.svg diff --git a/src/assets/images/slack.png b/static/images/slack.png similarity index 100% rename from src/assets/images/slack.png rename to static/images/slack.png diff --git a/src/assets/images/solita.svg b/static/images/solita.svg similarity index 100% rename from src/assets/images/solita.svg rename to static/images/solita.svg diff --git a/src/assets/images/wakeone.svg b/static/images/wakeone.svg similarity index 100% rename from src/assets/images/wakeone.svg rename to static/images/wakeone.svg diff --git a/src/assets/videos/jumbo.mp4 b/static/videos/jumbo.mp4 similarity index 100% rename from src/assets/videos/jumbo.mp4 rename to static/videos/jumbo.mp4 diff --git a/src/styles/_button.styl b/styles/_button.styl similarity index 100% rename from src/styles/_button.styl rename to styles/_button.styl diff --git a/src/styles/_header.styl b/styles/_header.styl similarity index 98% rename from src/styles/_header.styl rename to styles/_header.styl index 7ed6c4b..c067ab2 100644 --- a/src/styles/_header.styl +++ b/styles/_header.styl @@ -1,7 +1,7 @@ headerHeight = 400px .header - background url('../images/jumbo.jpg') + background url('/static/images/jumbo.jpg') background-position bottom center background-size cover height headerHeight @@ -42,7 +42,7 @@ headerHeight = 400px @media screen and (max-width: 810px) margin-left auto margin-right auto - + img width: 100%; diff --git a/src/styles/_input.styl b/styles/_input.styl similarity index 100% rename from src/styles/_input.styl rename to styles/_input.styl diff --git a/src/styles/_loader.styl b/styles/_loader.styl similarity index 100% rename from src/styles/_loader.styl rename to styles/_loader.styl diff --git a/src/styles/icons.less b/styles/icons.less similarity index 63% rename from src/styles/icons.less rename to styles/icons.less index 6cf87e8..b0ddcc4 100644 --- a/src/styles/icons.less +++ b/styles/icons.less @@ -1,6 +1,6 @@ -@import '../../node_modules/font-awesome/less/variables.less'; -@import '../../node_modules/font-awesome/less/path.less'; -@import '../../node_modules/font-awesome/less/core.less'; +@import '../node_modules/font-awesome/less/variables.less'; +@import '../node_modules/font-awesome/less/path.less'; +@import '../node_modules/font-awesome/less/core.less'; .@{fa-css-prefix}-github:before { content: @fa-var-github; } .@{fa-css-prefix}-slack:before { content: @fa-var-slack; } diff --git a/src/styles/style.styl b/styles/style.styl similarity index 99% rename from src/styles/style.styl rename to styles/style.styl index 8be0a80..97724e7 100644 --- a/src/styles/style.styl +++ b/styles/style.styl @@ -351,7 +351,7 @@ footer display block .bread-img - background url('../images/hp3_bw.jpg') + background url('/static/images/hp3_bw.jpg') background-size cover border-radius 160px opacity 0.85 diff --git a/test/test-helper.js b/test/test-helper.js deleted file mode 100644 index a14c8f6..0000000 --- a/test/test-helper.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -import {jsdom} from 'jsdom'; - -const document = global.document = jsdom(''); -const window = global.window = document.defaultView; -global.navigator = window.navigator = {};