├── .env.example ├── gatsby-ssr.js ├── .gitignore ├── src ├── pages │ ├── 404.js │ ├── index.js │ └── about.js ├── templates │ ├── metadata.css │ ├── weekly-articles-stats.css │ ├── metadata.js │ ├── weekly-articles-summary.css │ ├── weekly-articles.css │ ├── weekly-articles-stats.js │ ├── article.css │ ├── weekly-articles-summary.js │ ├── article.js │ └── weekly-articles.js ├── utils │ └── typography.js └── components │ ├── MainCTA │ ├── index.js │ └── mainCTA.css │ ├── layout.css │ ├── layout.js │ ├── Header │ ├── header.css │ └── index.js │ ├── WeekSummary │ └── weekly-articles-stats.css │ ├── SocialCard │ └── index.js │ ├── WeekNav │ ├── navigation.css │ └── index.js │ └── Footer │ └── index.js ├── gatsby-browser.js ├── .vscode └── launch.json ├── web.config ├── LICENSE ├── npm-debug.log ├── package.json ├── gatsby-config.js ├── wercker.yml ├── README.md └── gatsby-node.js /.env.example: -------------------------------------------------------------------------------- 1 | POCKET_CONSUMER_KEY= 2 | POCKET_ACCESS_TOKEN= 3 | WEEKS_OF_HISTORY= 4 | API_MAX_RECORDS= 5 | GET_CURRENT_WEEKS_ARTICLES_ONLY= 6 | GA_TRACKING_ID= -------------------------------------------------------------------------------- /gatsby-ssr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/ssr-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Project dependencies 2 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 3 | node_modules 4 | .cache/ 5 | # Build directory 6 | public/ 7 | .DS_Store 8 | yarn-error.log 9 | #secrets 10 | .env 11 | -------------------------------------------------------------------------------- /src/pages/404.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const NotFoundPage = () => ( 4 |
5 |

NOT FOUND

6 |

You just hit a route that doesn't exist... the sadness.

7 |
8 | ) 9 | 10 | export default NotFoundPage 11 | -------------------------------------------------------------------------------- /gatsby-browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Browser APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/browser-apis/ 5 | */ 6 | 7 | exports.onRouteUpdate = ({ location }) => { 8 | console.log("new pathname", location.pathname); 9 | }; 10 | -------------------------------------------------------------------------------- /src/templates/metadata.css: -------------------------------------------------------------------------------- 1 | .metadata-container { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: 0.45rem 1.0875rem 0.45rem; 5 | } 6 | 7 | .metadata { 8 | white-space: nowrap; 9 | flex: 1; 10 | text-align: center; 11 | color: #3c3a40; 12 | font-size: 1rem; 13 | } 14 | -------------------------------------------------------------------------------- /src/utils/typography.js: -------------------------------------------------------------------------------- 1 | import Typography from "typography"; 2 | 3 | const typography = new Typography({ 4 | baseFontSize: "16px", 5 | baseLineHeight: 1.45, 6 | headerFontFamily: ["Merriweather", "serif"], 7 | bodyFontFamily: ["Kadwa", "serif"] 8 | // See below for the full list of options. 9 | }); 10 | 11 | export default typography; 12 | -------------------------------------------------------------------------------- /src/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Helmet from "react-helmet"; 3 | 4 | const IndexPage = () => { 5 | return ( 6 |
7 | 8 | ; 9 | 10 | Articles read in the last week 11 |
12 | ); 13 | }; 14 | 15 | export default IndexPage; 16 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "program": "${workspaceFolder}/n/a" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/MainCTA/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "./mainCTA.css"; 3 | const MainCTA = () => ( 4 |
5 |
6 |

Make your weekly digest with Readstor

7 | 13 | Register
14 |
15 |
16 |
17 | ); 18 | 19 | export default MainCTA; 20 | -------------------------------------------------------------------------------- /src/components/layout.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fdfdfd; 3 | } 4 | 5 | iframe { 6 | margin: 0; 7 | } 8 | 9 | .page-main-container { 10 | margin: 0 auto; 11 | max-width: 960px; 12 | padding: 0px 1.0875rem 1.45rem; 13 | } 14 | 15 | .link-effect { 16 | text-decoration: none; 17 | color: #d81159; 18 | } 19 | 20 | .link-effect span { 21 | transition: all 0.25s ease-in-out; 22 | border-bottom: 3px solid transparent; 23 | } 24 | 25 | .link-effect:hover span { 26 | border-bottom: 3px solid #d81159; 27 | } 28 | 29 | @media (max-width: 460px) { 30 | .page-main-container { 31 | padding: 0; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/components/MainCTA/mainCTA.css: -------------------------------------------------------------------------------- 1 | .cta-background { 2 | background-color: #d81159; 3 | display: flex; 4 | align-items: center; 5 | justify-content: center; 6 | height: 125px; 7 | } 8 | 9 | .cta-container { 10 | text-align: center; 11 | font-family: sans-serif; 12 | color: #fff; 13 | } 14 | 15 | .cta-container h4 { 16 | padding: 0.45rem; 17 | margin-bottom: 0; 18 | } 19 | 20 | .cta-button { 21 | border: 2px solid #fff; 22 | color: #fff; 23 | border-radius: 4px; 24 | text-decoration: none; 25 | width: 170px; 26 | margin: 0 auto; 27 | display: inline-block; 28 | } 29 | 30 | .cta-button small { 31 | color: #bfbdc1; 32 | } 33 | 34 | .cta-button:hover { 35 | background-color: #ad0c47; 36 | } 37 | -------------------------------------------------------------------------------- /src/components/layout.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Helmet from "react-helmet"; 3 | import Header from "./Header"; 4 | import Footer from "./Footer"; 5 | import "./layout.css"; 6 | import MainCTA from "./MainCTA"; 7 | 8 | const TemplateWrapper = ({ children, showCTA = false }) => ( 9 |
10 | 17 |