Scrap everything, switch to Pelican instead

columns
Tanner Collin 4 years ago
parent 92078664c0
commit 13d3d4842f
  1. 124
      .gitignore
  2. 1
      README.md
  3. 5
      content/keyboard-review.md
  4. 18
      package.json
  5. 35
      pelicanconf.py
  6. BIN
      public/favicon.ico
  7. 48
      public/reset.css
  8. 2
      public/robots.txt
  9. 25
      publishconf.py
  10. 11
      src/App.css
  11. 13
      src/App.js
  12. 176
      src/Grid.css
  13. 95
      src/Grid.js
  14. 15
      src/GridItem.js
  15. 0
      src/Home.css
  16. 16
      src/Home.js
  17. BIN
      src/banff1.jpg
  18. BIN
      src/bee1.jpg
  19. BIN
      src/canmore1.jpg
  20. BIN
      src/carshow1.jpg
  21. 15
      src/client.js
  22. BIN
      src/dress1.jpg
  23. BIN
      src/hand1.jpg
  24. 26
      src/index.js
  25. BIN
      src/logo.png
  26. BIN
      src/pump1.jpg
  27. 53
      src/server.js
  28. BIN
      src/switch1.jpg
  29. BIN
      src/tanner.jpg
  30. 7647
      yarn.lock

124
.gitignore vendored

@ -1,16 +1,114 @@
logs
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.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
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.DS_Store
coverage
node_modules
build
.env.local
.env.development.local
.env.test.local
.env.production.local
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# Editor
*.swp
*.swo
# DB
db.sqlite3
# Test mount
test/
# VS Code
.vscode/
output/

@ -1 +0,0 @@
My personal website.

@ -0,0 +1,5 @@
Title: My First Review
Date: 2010-12-03 10:20
Category: Review
Following is a review of my favorite mechanical keyboard.

@ -1,18 +0,0 @@
{
"name": "my-razzle-app",
"version": "2.0.0-alpha.8",
"license": "MIT",
"scripts": {
"start": "razzle start",
"build": "razzle build",
"test": "razzle test --env=jsdom",
"start:prod": "NODE_ENV=production node build/server.js"
},
"dependencies": {
"express": "^4.16.3",
"razzle": "^2.2.0",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-router-dom": "^4.3.1"
}
}

@ -0,0 +1,35 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Tanner'
SITENAME = 'Tanner Collin'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Canada/Mountain'
DEFAULT_LANG = 'en'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Blogroll
LINKS = (('Pelican', 'http://getpelican.com/'),
('Python.org', 'http://python.org/'),
('Jinja2', 'http://jinja.pocoo.org/'),
('You can modify those links in your config file', '#'),)
# Social widget
SOCIAL = (('You can add links in your config file', '#'),
('Another social link', '#'),)
DEFAULT_PAGINATION = False
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

@ -1,48 +0,0 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

@ -1,2 +0,0 @@
User-agent: *

@ -0,0 +1,25 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = ''
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

@ -1,11 +0,0 @@
* {
box-sizing: border-box;
}
body {
line-height: 1.6;
font-size: 1.25rem;
font-family: 'Open Sans', sans-serif;
color: #333;
background-color: #F9F9F9;
}

@ -1,13 +0,0 @@
import React from 'react';
import Route from 'react-router-dom/Route';
import Switch from 'react-router-dom/Switch';
import Home from './Home';
import './App.css';
const App = () => (
<Switch>
<Route exact path='/' component={Home} />
</Switch>
);
export default App;

@ -1,176 +0,0 @@
.grid-container {
text-align: center;
max-width: 120rem;
margin: 0 auto;
}
.grid-item {
position: relative;
float: left;
width: 30rem;
min-width: 25rem;
min-height: 25rem;
padding-bottom: 30rem;
}
.grid-item-content {
position: absolute;
width: 100%;
height: 100%;
padding: 1rem;
}
.menu {
display: flex;
flex-flow: column;
}
.menu .logo {
background-color: #E9E9E9;
object-fit: contain;
padding-top: 1em;
min-height: 5rem;
}
.menu section {
background-color: #E9E9E9;
flex: 1;
}
.menu section aside {
}
.menu section .fuckcss {
position: relative;
height: 100%;
}
.menu section img {
max-height: 100%;
width: auto;
}
.menu footer {
background-color: #E9E9E9;
padding-bottom: 1rem;
}
.project {
display: flex;
flex-flow: column;
}
.project header {
font-size: 2rem;
line-height: 1.2;
}
.project section {
min-height: 0;
flex: 1;
}
.project.bottom section {
flex-flow: column;
display: flex;
}
.project.left section p {
position: relative;
top: 50%;
transform: translateY(-50%);
}
.project.left section img {
height: 100%;
float: right;
padding: 1rem;
}
.project.bottom section p {
margin-bottom: 1rem;
}
.project.bottom section img {
object-fit: contain;
min-height: 0;
padding: 1rem;
}
.photo a {
display: block;
position: relative;
height: 100%;
}
.photo header {
display: none;
position: absolute;
width: 100%;
z-index: 2;
background: rgba(0, 0, 0, 0.4);
color: white;
}
.photo header {
top: 0;
font-size: 1.5rem;
padding: 0.5rem;
}
.photo a:hover header {
display: block;
}
.photo img {
position: absolute;
height: 100%;
left: 0;
}
@media all and (max-width: 120rem) {
.grid-item {
width: 25%;
padding-bottom: 25%
}
}
@media all and (max-width: 102rem) {
.grid-item {
width: 33.33%;
padding-bottom: 33.33%;
}
}
@media all and (max-width: 76.5rem) {
.grid-container {
max-width: 68rem;
}
.grid-item {
width: 50%;
padding-bottom: 50%;
}
}
@media all and (max-width: 51rem) {
.grid-container {
max-width: 34rem;
}
.grid-item {
width: 100%;
padding-bottom: 100%;
margin-bottom: 1rem;
}
.menu {
background-color: #E9E9E9;
}
.grid-item-content.photo {
padding: 0;
}
.photo a header {
display: block;
}
}

@ -1,95 +0,0 @@
import React from 'react';
import './Grid.css';
import logo from './logo.png';
import GridItem from './GridItem';
import tanner from './tanner.jpg';
import dress1 from './dress1.jpg';
import switch1 from './switch1.jpg';
import pump1 from './pump1.jpg';
import hand1 from './hand1.jpg';
import banff1 from './banff1.jpg';
import bee1 from './bee1.jpg';
import canmore1 from './canmore1.jpg';
import carshow1 from './carshow1.jpg';
//function importAll(r) {
// return r.keys().map(x => r(x));
//}
//const images = importAll(require.context('./images'));
class Grid extends React.Component {
render() {
return (
<div className='grid-container'>
<GridItem type='menu'>
<img src={logo} className='logo' alt='' />
<section>
<div className='fuckcss'>
<img src={tanner} alt='' />
</div>
</section>
<footer>More info or a .onion link.</footer>
</GridItem>
<GridItem type='project left'>
<header>LED Dress</header>
<section>
<img src={dress1} alt='' />
<p>A dress lit up with LEDs that act as twinkling stars. Seven act as The Big Dipper, and the rest twinkle randomly.</p>
</section>
</GridItem>
<GridItem type='photo'>
<a>
<header>Thorncliffe Car Show</header>
<img src={carshow1} alt='' />
</a>
</GridItem>
<GridItem type='project bottom'>
<header>Remote Control Lightswitch</header>
<section>
<img src={switch1} alt='' />
<p>Custom circuit that lets me control a ceiling light over Wifi.</p>
</section>
</GridItem>
<GridItem type='project bottom'>
<header>Plant Waterer</header>
<section>
<img src={pump1} alt='' />
<p>Controller that waters my plant automatically every day.</p>
</section>
</GridItem>
<GridItem type='photo'>
<a>
<header>Prince's Island Park</header>
<img src={bee1} alt='' />
</a>
</GridItem>
<GridItem type='photo'>
<a>
<header>Johnston Creek, Banff</header>
<img src={banff1} alt='' />
</a>
</GridItem>
<GridItem type='project left'>
<header>Hand of Ozymandias</header>
<section>
<img src={hand1} alt='' />
<p>Sculpture welded together out of scrap metal for practice.</p>
</section>
</GridItem>
<GridItem type='photo'>
<a>
<header>VW Van in Canmore</header>
<img src={canmore1} alt='' />
</a>
</GridItem>
</div>
);
}
}
export default Grid;

@ -1,15 +0,0 @@
import React from 'react';
class GridItem extends React.Component {
render() {
return (
<div className='grid-item'>
<div className={'grid-item-content ' + this.props.type}>
{this.props.children}
</div>
</div>
);
}
}
export default GridItem;

@ -1,16 +0,0 @@
import React from 'react';
import './Home.css';
import Grid from './Grid';
class Home extends React.Component {
render() {
return (
<div className='Home'>
<Grid />
</div>
);
}
}
export default Home;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 KiB

@ -1,15 +0,0 @@
import App from './App';
import BrowserRouter from 'react-router-dom/BrowserRouter';
import React from 'react';
import { hydrate } from 'react-dom';
hydrate(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
if (module.hot) {
module.hot.accept();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

@ -1,26 +0,0 @@
import app from './server';
import http from 'http';
const server = http.createServer(app);
let currentApp = app;
server.listen(process.env.PORT || 3000, error => {
if (error) {
console.log(error);
}
console.log('🚀 started');
});
if (module.hot) {
console.log('✅ Server-side HMR Enabled!');
module.hot.accept('./server', () => {
console.log('🔁 HMR Reloading `./server`...');
server.removeListener('request', currentApp);
const newApp = require('./server').default;
server.on('request', newApp);
currentApp = newApp;
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

@ -1,53 +0,0 @@
import App from './App';
import React from 'react';
import { StaticRouter } from 'react-router-dom';
import express from 'express';
import { renderToString } from 'react-dom/server';
const assets = require(process.env.RAZZLE_ASSETS_MANIFEST);
const server = express();
server
.disable('x-powered-by')
.use(express.static(process.env.RAZZLE_PUBLIC_DIR))
.get('/*', (req, res) => {
const context = {};
const markup = renderToString(
<StaticRouter context={context} location={req.url}>
<App />
</StaticRouter>
);
if (context.url) {
res.redirect(context.url);
} else {
res.status(200).send(
`<!doctype html>
<html lang="">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<title>Tanner Collin</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="reset.css">
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
${
assets.client.css
? `<link rel="stylesheet" href="${assets.client.css}">`
: ''
}
${
process.env.NODE_ENV === 'production'
? `<script src="${assets.client.js}" defer></script>`
: `<script src="${assets.client.js}" defer crossorigin></script>`
}
</head>
<body>
<div id="root">${markup}</div>
</body>
</html>`
);
}
});
export default server;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save