Authors on Blog
24 |-
25 |
- me (1) 26 |
├── .gitmodules ├── output ├── theme │ ├── images │ │ └── icons │ │ │ ├── rss.png │ │ │ ├── github.png │ │ │ ├── gittip.png │ │ │ ├── lastfm.png │ │ │ ├── reddit.png │ │ │ ├── vimeo.png │ │ │ ├── aboutme.png │ │ │ ├── bitbucket.png │ │ │ ├── delicious.png │ │ │ ├── facebook.png │ │ │ ├── gitorious.png │ │ │ ├── linkedin.png │ │ │ ├── twitter.png │ │ │ ├── youtube.png │ │ │ ├── google-plus.png │ │ │ ├── hackernews.png │ │ │ ├── slideshare.png │ │ │ ├── speakerdeck.png │ │ │ ├── google-groups.png │ │ │ └── stackoverflow.png │ └── css │ │ ├── typogrify.css │ │ ├── wide.css │ │ ├── reset.css │ │ ├── pygment.css │ │ └── main.css ├── categories.html ├── authors.html ├── tags.html ├── archives.html ├── feeds │ ├── all.atom.xml │ └── posts.atom.xml ├── index.html └── author │ └── me.html ├── requirements.txt ├── content ├── first-post.ipynb-meta └── first-post.ipynb ├── publishconf.py ├── README.md ├── pelicanconf.py ├── .gitignore ├── develop_server.sh ├── fabfile.py └── Makefile /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "plugins/ipynb"] 2 | path = plugins/ipynb 3 | url = git://github.com/danielfrg/pelican-ipynb.git 4 | -------------------------------------------------------------------------------- /output/theme/images/icons/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/rss.png -------------------------------------------------------------------------------- /output/theme/images/icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/github.png -------------------------------------------------------------------------------- /output/theme/images/icons/gittip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/gittip.png -------------------------------------------------------------------------------- /output/theme/images/icons/lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/lastfm.png -------------------------------------------------------------------------------- /output/theme/images/icons/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/reddit.png -------------------------------------------------------------------------------- /output/theme/images/icons/vimeo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/vimeo.png -------------------------------------------------------------------------------- /output/theme/images/icons/aboutme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/aboutme.png -------------------------------------------------------------------------------- /output/theme/images/icons/bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/bitbucket.png -------------------------------------------------------------------------------- /output/theme/images/icons/delicious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/delicious.png -------------------------------------------------------------------------------- /output/theme/images/icons/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/facebook.png -------------------------------------------------------------------------------- /output/theme/images/icons/gitorious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/gitorious.png -------------------------------------------------------------------------------- /output/theme/images/icons/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/linkedin.png -------------------------------------------------------------------------------- /output/theme/images/icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/twitter.png -------------------------------------------------------------------------------- /output/theme/images/icons/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/youtube.png -------------------------------------------------------------------------------- /output/theme/images/icons/google-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/google-plus.png -------------------------------------------------------------------------------- /output/theme/images/icons/hackernews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/hackernews.png -------------------------------------------------------------------------------- /output/theme/images/icons/slideshare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/slideshare.png -------------------------------------------------------------------------------- /output/theme/images/icons/speakerdeck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/speakerdeck.png -------------------------------------------------------------------------------- /output/theme/images/icons/google-groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/google-groups.png -------------------------------------------------------------------------------- /output/theme/images/icons/stackoverflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dataquestio/jupyter-blog/HEAD/output/theme/images/icons/stackoverflow.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Markdown==2.6.6 2 | pelican==3.6.3 3 | jupyter>=1.0 4 | ipython>=4.0 5 | nbconvert>=4.0 6 | beautifulsoup4 7 | ghp-import==0.4.1 8 | matplotlib==1.5.1 -------------------------------------------------------------------------------- /content/first-post.ipynb-meta: -------------------------------------------------------------------------------- 1 | Title: First Post 2 | Slug: first-post 3 | Date: 2016-06-08 20:00 4 | Category: posts 5 | Tags: python 6 | Author: me 7 | Summary: My first post, read it to find out. 8 | -------------------------------------------------------------------------------- /output/theme/css/typogrify.css: -------------------------------------------------------------------------------- 1 | .caps {font-size:.92em;} 2 | .amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;} 3 | .dquo {margin-left:-.38em;} 4 | -------------------------------------------------------------------------------- /publishconf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- # 3 | from __future__ import unicode_literals 4 | 5 | # This file is only used if you use `make publish` or 6 | # explicitly specify it as your config file. 7 | 8 | import os 9 | import sys 10 | sys.path.append(os.curdir) 11 | from pelicanconf import * 12 | 13 | SITEURL = '' 14 | RELATIVE_URLS = False 15 | 16 | FEED_ALL_ATOM = 'feeds/all.atom.xml' 17 | CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' 18 | 19 | DELETE_OUTPUT_DIRECTORY = True 20 | 21 | # Following items are often useful when publishing 22 | 23 | #DISQUS_SITENAME = "" 24 | #GOOGLE_ANALYTICS = "" 25 | -------------------------------------------------------------------------------- /output/theme/css/wide.css: -------------------------------------------------------------------------------- 1 | @import url("main.css"); 2 | 3 | body { 4 | font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif; 5 | } 6 | 7 | .post-info{ 8 | display: none; 9 | } 10 | 11 | #banner nav { 12 | display: none; 13 | -moz-border-radius: 0px; 14 | margin-bottom: 20px; 15 | overflow: hidden; 16 | font-size: 1em; 17 | background: #F5F4EF; 18 | } 19 | 20 | #banner nav ul{ 21 | padding-right: 50px; 22 | } 23 | 24 | #banner nav li{ 25 | float: right; 26 | color: #000; 27 | } 28 | 29 | #banner nav li a { 30 | color: #000; 31 | } 32 | 33 | #banner h1 { 34 | margin-bottom: -18px; 35 | } 36 | 37 | #featured, #extras { 38 | padding: 50px; 39 | } 40 | 41 | #featured { 42 | padding-top: 20px; 43 | } 44 | 45 | #extras { 46 | padding-top: 0px; 47 | padding-bottom: 0px; 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | jupyter-blog 2 | --------------------- 3 | 4 | This is an example repo that shows a minimal configuration that allows you to create a personal blog using Jupyter notebooks. 5 | 6 | See [this](https://www.dataquest.io/blog/how-to-setup-a-data-science-blog/) blog post for more details, and a guide on how to setup and deploy a blog. 7 | 8 | Reproducing this example 9 | --------------------- 10 | 11 | You can reproduce this setup on your own computer by following the steps below: 12 | 13 | * Create a virtualenv. 14 | * Install everything in `requirements.txt`. 15 | * Setup your `.gitignore` file. 16 | * Run `pelican-quickstart`. 17 | * Create a `plugins` folder. 18 | * Run `git init`. 19 | * Run `git submodule add git://github.com/danielfrg/pelican-ipynb.git plugins/ipynb`. 20 | * Create any notebooks you want in the `content` folder. 21 | * Remember to create corresponding `.ipynb-meta` files. 22 | * Edit pelicanconf.py to the lines that activate the `pelican-ipynb` plugin. 23 | * Run `pelican content`. 24 | * Switch to the `output` directory and run `python -m pelican.server`. -------------------------------------------------------------------------------- /pelicanconf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- # 3 | from __future__ import unicode_literals 4 | 5 | AUTHOR = 'me' 6 | SITENAME = 'Blog' 7 | SITEURL = '' 8 | 9 | PATH = 'content' 10 | 11 | TIMEZONE = 'America/Los_Angeles' 12 | 13 | DEFAULT_LANG = 'en' 14 | 15 | # Feed generation is usually not desired when developing 16 | FEED_ALL_ATOM = None 17 | CATEGORY_FEED_ATOM = None 18 | TRANSLATION_FEED_ATOM = None 19 | AUTHOR_FEED_ATOM = None 20 | AUTHOR_FEED_RSS = None 21 | 22 | # Blogroll 23 | LINKS = (('Pelican', 'http://getpelican.com/'), 24 | ('Python.org', 'http://python.org/'), 25 | ('Jinja2', 'http://jinja.pocoo.org/'), 26 | ('You can modify those links in your config file', '#'),) 27 | 28 | # Social widget 29 | SOCIAL = (('You can add links in your config file', '#'), 30 | ('Another social link', '#'),) 31 | 32 | DEFAULT_PAGINATION = 10 33 | 34 | MARKUP = ('md', 'ipynb') 35 | 36 | PLUGIN_PATH = './plugins' 37 | PLUGINS = ['ipynb.markup'] 38 | 39 | # Uncomment following line if you want document-relative URLs when developing 40 | #RELATIVE_URLS = True 41 | -------------------------------------------------------------------------------- /output/theme/css/reset.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Reset Stylesheet 3 | Description: Resets browser's default CSS 4 | Author: Eric Meyer 5 | Author URI: http://meyerweb.com/eric/tools/css/reset/ 6 | */ 7 | 8 | /* v1.0 | 20080212 */ 9 | html, body, div, span, applet, object, iframe, 10 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 11 | a, abbr, acronym, address, big, cite, code, 12 | del, dfn, em, font, img, ins, kbd, q, s, samp, 13 | small, strike, strong, sub, sup, tt, var, 14 | b, u, i, center, 15 | dl, dt, dd, ol, ul, li, 16 | fieldset, form, label, legend, 17 | table, caption, tbody, tfoot, thead, tr, th, td { 18 | background: transparent; 19 | border: 0; 20 | font-size: 100%; 21 | margin: 0; 22 | outline: 0; 23 | padding: 0; 24 | vertical-align: baseline; 25 | } 26 | 27 | body {line-height: 1;} 28 | 29 | ol, ul {list-style: none;} 30 | 31 | blockquote, q {quotes: none;} 32 | 33 | blockquote:before, blockquote:after, 34 | q:before, q:after { 35 | content: ''; 36 | content: none; 37 | } 38 | 39 | /* remember to define focus styles! */ 40 | :focus { 41 | outline: 0; 42 | } 43 | 44 | /* remember to highlight inserts somehow! */ 45 | ins {text-decoration: none;} 46 | del {text-decoration: line-through;} 47 | 48 | /* tables still need 'cellspacing="0"' in the markup */ 49 | table { 50 | border-collapse: collapse; 51 | border-spacing: 0; 52 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | 56 | # Flask stuff: 57 | instance/ 58 | .webassets-cache 59 | 60 | # Scrapy stuff: 61 | .scrapy 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | # IPython Notebook 70 | .ipynb_checkpoints 71 | 72 | # pyenv 73 | .python-version 74 | 75 | # celery beat schedule file 76 | celerybeat-schedule 77 | 78 | # dotenv 79 | .env 80 | 81 | # virtualenv 82 | venv/ 83 | ENV/ 84 | 85 | # Spyder project settings 86 | .spyderproject 87 | 88 | # Rope project settings 89 | .ropeproject 90 | 91 | .idea -------------------------------------------------------------------------------- /output/categories.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |