Giter Site home page Giter Site logo

docpad / docpad Goto Github PK

View Code? Open in Web Editor NEW
3.1K 104.0 241.0 4.33 MB

Empower your website frontends with layouts, meta-data, pre-processors (markdown, jade, coffeescript, etc.), partials, skeletons, file watching, querying, and an amazing plugin system. DocPad will streamline your web development process allowing you to craft powerful static sites quicker than ever before.

Home Page: https://docpad.bevry.me

License: Other

CoffeeScript 97.65% JavaScript 0.10% HTML 2.25%
docpad coffeescript static-site-generator preprocessor template-engine node app docpad-core

docpad's Introduction

DocPad. Streamlined web development.

Travis CI Build Status NPM version NPM downloads Dependency Status Dev Dependency Status
GitHub Sponsors donate button Patreon donate button Flattr donate button Liberapay donate button Buy Me A Coffee donate button Open Collective donate button crypto donate button PayPal donate button Wishlist browse button

Hi! I'm DocPad, I streamline the web development process and help close the gap between experts and beginners. I've been used in production by big and small companies for over a year and a half now to create plenty of amazing and powerful web sites and applications quicker than ever before. What makes me different is instead of being a box to cram yourself into and hold you back, I'm a freeway to what you want to accomplish, just getting out of your way and allowing you to create stuff quicker than ever before without limits. Leave the redundant stuff up to me, so you can focus on the awesome stuff.

Discover my features below, or skip ahead to the installation instructions to get started with a fully functional pre-made website in a few minutes from reading this.

Watch the Screencast!

Features

Out of the box

  • Completely file based, meaning there are no pesky databases that need to be installed, and for version control you get to use systems like Git and SVN, which you're already used to (You can still hook in remote data sources if you want, DocPad doesn't impose any limits on you, ever)
  • Choose from plenty of community maintained pre-made websites to use for your next project instead of starting from scratch every time
  • Write your documents in any language, markup, templating engine, or pre-processor you wish (we're truly agnostic thanks to your plugin system). You can even mix and match them when needed by combining their extensions in a rails-like fashion (e.g. coffee-with-some-eco.js.coffee.eco)
  • Changes to your website are automatically recompiled through our built-in watch system
  • Add metadata to the top of your files to be used by templating engines to display non-standard information such as titles and descriptions for your documents
  • Display custom listings of content with our powerful Query Engine available to your templating engines
  • Abstract out generic headers and footers into layouts using our nested layout system
  • For simple static websites easily deploy your generated website to any web server like apache or github pages. For dynamic projects deploy them to servers like heroku to take advantage of custom routing with express.js. Deploy guide here
  • Built-in server to save you from having to startup your own, for dynamic deployments this even supports things like clean urls, custom routes and server-side logic
  • Robust architecture and powerful plugin system means that you are never boxed in. Unlike traditional CMS systems, you can always extend DocPad to do whatever you need it to do, and you can even write to bundle common custom functionality and distribute them through the amazing node package manager npm
  • Built-in support for dynamic documents (e.g. search pages, signup forms, etc), so you can code pages that change on each request by just adding dynamic: true to your document's meta data (exposes the express.js req and res objects to your templating engine)
  • You can use it standalone, or even easily include it within your existing systems with our API

With our amazing community maintained plugins

  • Use the Live Reload plugin to automatically refresh your web browser whenever a change is made, this is amazing
  • Pull in remote RSS/Atom/JSON feeds into your templating engines allowing you to display your latest twitter updates or github projects easily and effortlessly using the Feedr Plugin
  • Support for every templating engine and pre-processor under the sun, including (but not limited to) CoffeeScript, CoffeeKup, ECO, HAML, Handlebars, Jade, Less, Markdown, PHP, Ruby, SASS and Stylus - the full listing is here
  • Use the Partials Plugin to abstract common pieces of code into their own individual file that can be included as much as you want
  • Syntax highlight code blocks automatically with either our Highlight.js Plugin or Pygments Plugin
  • Get SEO friendly clean URLs with our Clean URLs Plugin (dynamic deployments only)
  • Lint your code automatically with our Ling Plugins: jshint and coffeelint
  • Concatenate and minify your JavaScript and CSS assets making page loads faster for your users with our Minify Plugins: htmlmin and grunt
  • Install common javascript libraries like jQuery, Backbone and Underscore directly from the command line - (under construction, coming soon)
  • Automatically translate your entire website into other languages with our Translation Plugin - under construction, coming soon
  • Add an admin interface to your website allowing you to edit, save and preview your changes on live websites then push them back to your source repository with the Admin Plugins
  • Pretty much if DocPad doesn't already do something, it is trivial to write a plugin to do it. DocPad can accomplish anything; it never holds you back, and there are no limits.
  • Many other plugins not listed here that are still definitely worth checking out! :)

People love DocPad

All sorts of people love DocPad, from first time web developers to even industry leaders and experts. In fact, people even migrate to DocPad from other systems as they love it so much. Here are some our favourite tweets of what people are saying about DocPad :)

Some favourite tweets about DocPad

Install

Click here for our latest Install Instructions.

Quick Start

Click here to skip ahead to our latest Quick Start Guide.

What next?

Here are some quick links to help you get started:

History

Discover the release history by heading on over to the HISTORY.md file.

Contribute

Discover how you can contribute by heading on over to the CONTRIBUTING.md file.

Backers

Maintainers

These amazing people are maintaining this project:

Sponsors

These amazing people have contributed finances to this project:

Become a sponsor!

GitHub Sponsors donate button Patreon donate button Flattr donate button Liberapay donate button Buy Me A Coffee donate button Open Collective donate button crypto donate button PayPal donate button Wishlist browse button

Contributors

These amazing people have contributed code to this project:

Discover how you can contribute by heading on over to the CONTRIBUTING.md file.

Participants

Also thanks to all the countless others who have continued to raise DocPad even higher by submitting plugins, issues reports, discussion topics, IRC chat messages, and praise on twitter. We love you.

License

Unless stated otherwise all works are:

and licensed under:

docpad's People

Contributors

aaronpowell avatar alexwoehr avatar balupton avatar chaos95 avatar darky avatar delapouite avatar dependabot[bot] avatar derberg avatar greduan avatar jtwebman avatar lhagan avatar mikeumus avatar neilbaylorrulez avatar nfriedly avatar obazoud avatar paularmstrong avatar pavgup avatar pflannery avatar pismute avatar prayagverma avatar radiodario avatar rantecki avatar robloach avatar ruemic avatar sorin-ionescu avatar stegrams avatar stevemcarthur avatar ttamminen avatar unframework avatar vsopvsop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docpad's Issues

Broken angle brakets in code sections

In code sections angle brakets like the following

<x>

get finally displayed as

&lt;x&gt;

and the HTML source for it is

<pre><code>&amp;<span class="keyword">lt</span>;<span class="keyword">x</span>&amp;<span class="keyword">gt</span>;</code></pre>

The < and > should not be taken apart as it breaks the interpretation of these HTML entities.

Header section parsing

A working doc:


---
layout: post
title: "xyz"
tags:
    - abc
date: '2011-03-24'

---

content

A doc that breaks the page/design:


---
layout: post
title: "xyz"
tags:
    - abc
date: '2011-03-24'

---

---

content

The parsing should be improved in a way, that the 3th appearance of --- is considered to be normal content.

GitHub Pages Deploy Plugin

After a generate has finished, it should wipe the gh-pages branch, copy the contents of the original out directory into it, add the changes, commit them, and check back to the original branch.

Plugin: Buildr

Adding support for Buildr during generation would be nice, as whenever a generation happens it could rebundle and compress your css and javascript files, as well as compress your images in the out dir.

published: false in YAML header

Hi Benjamin

Following Jekyll convention, may I suggest that we add an optional published variable in the YAML header of documents files ? When set to false, this will avoid parsing and copying a draft from src to out.

Thanks for the work you've accomplished so far.

Jade and HAML could be templating engines too

This would be quite involved, as it would mean taking the templating engine out of the core and inserting it into a plugin.

It would also mean breaking the barriers between templating engines and markup languages. Which may not be that difficult as we do have priorities, though it does require a fair bit of brainstorming.

Core: Better Plugin Detection

To support more intense and more involved plugins, when scanning the plugins directory, we should only load in files which end in the extension .plugin.coffee or .plugin.js. Instead of all .js and .coffee files.

Plugin: Administration Infrastructure

Requirements

  • Login via github
  • Github will check the contributors to see if you have write access
  • If a document is a wiki document, everyone has write access (still need to login via github though)
  • Saving changes will happen with git commits, with specifying the git author (as we have their github details)
  • Editing panel will be fixed at the bottom, when logged in, they click edit, this will open a file editor with a dropdown of documents and a ACE editor
  • Editing may or may not support nowpad
  • They will be able to see their changes rendered in realtime via an exposed REST API
  • They will only be able to edit documents
  • Edits on wiki documents will be santized
  • Create new documents
  • Dependent on jQuery

Out of scope

  • Editing layouts
  • Editing files
  • Use Cloud9 for those

Depends on

  • plugin infrastructure #16

Modules to develop

  • rest plugin
  • admin UI and accompanying backend interface
  • github auth
  • github/git api hooks

Hiring?

Yes. Details to come.

Plugin: Table of Contents

The ability to generate a table of contents would be useful.

Perhaps made available through a (configurable) helper function.

Perhaps delivered as a plugin so that different implementations could exist for different types of output.

HTML5 adds a complication for document structure in its use of sections, so a straightforward analysis of H1-H6 headings may not be enough for all users.

Implement a proper CLI (--help, generate [thing]) etc.

Starting in my home directory, I naively typed:

npm install docpad -g
docpad --help

This resulted in my home directory being filled with scaffolding crap that I had to remove by hand. Pretending to have a CLI when you don't have -h or --help implemented is just a minor annoyance, and I could even put up with the fact that DocPad spits stuff into ./ instead of responding to docpad generate foo to create something in ./foo/ like every other scaffolding app in existence, but having a script that defaults to making a mess when it gets a unrecognized command? That's just plain rude.

I'd hate to see what would have happened if I already had stuff in ~/src/ or ~/out/.

Riley

Plugin: Search

Story

Some blogs may have a lot of content, in which case search is useful. Though in most cases it isn't actually that useful as main navigation is quite typical.

Implementation

Dynamic

Can already be implemented as a dynamic document, see kitchensink example

Plugin

Search should be a extension which plugs into the serverFinished event, and utilise the server param.

It should take in urls like:

/search/query/search+title+and+content
/search/tags/tag1+tag2+tag3+three-word-tag+tag5

And generate a search results page which is displayed with a configurable layout.


Want to back this issue? Place a bounty on it! We accept bounties via Bountysource.

typo in 'Huh? 2.6'

Where you say 'display the all titles', that should be 'display all the titles'.

Missing skeleton files

I've just installed with npm, and I can't get docpad to run due to missing skeleton files. This is the error:

Copying the skeleton [balupton] to [/me/mydocpad]
bal-util.scandir: readdir has failed on: /usr/local/lib/node_modules/docpad/lib/../skeletons/balupton
done

/usr/local/lib/node_modules/docpad/lib/docpad.coffee:569
throw err;
^
Error: ENOENT, No such file or directory

Do I need to manually pull your balupton.docpad repository? Or, is there an official set of skeleton files that's missing from the docpad repository?

(btw, this project, filepad and nowpad look very cool -- looking forward to trying them each out)

Core: Version checking at startup

We should scan the github package.json to compare versions. Should only happen if we have a Internet connection, and should be asynchronous.

As a User, I want a skeleton for book writing, so that I can focus on writing my book and not the setup

@disenchant's use case requires generated pages to be printable, and include page headers, footers, and page numbers.

Further reading:
http://stackoverflow.com/questions/6109893/page-numbers-with-css-html/6109932#6109932

Sample project:
https://github.com/balupton/printing.docpad

Doesn't imply it is dependent on the PDF features, as it could be a HTML book. In which case it is just structure and styling.

Core: CSON support for headers

I'm thinking that initially we should try and parse CSON for the header, if that files then we try and parse YAML. Or for CSON we utilise === instead of ---

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.