Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marteinn/atomicpress
A static blog generator (based on flask)
https://github.com/marteinn/atomicpress
blog flask static-site-generator
Last synced: 25 days ago
JSON representation
A static blog generator (based on flask)
- Host: GitHub
- URL: https://github.com/marteinn/atomicpress
- Owner: marteinn
- License: mit
- Created: 2014-09-28T15:26:46.000Z (about 10 years ago)
- Default Branch: develop
- Last Pushed: 2019-10-22T23:18:32.000Z (about 5 years ago)
- Last Synced: 2024-09-14T11:58:05.976Z (about 2 months ago)
- Topics: blog, flask, static-site-generator
- Language: Python
- Homepage:
- Size: 203 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AtomicPress
AtomicPress is a static blog generator for python developers that don't want the Wordpress security hassle.
It is built in Flask and takes advantage of it's awesome eco-system such as Flask-Freeze, Flask-Admin, Flask-Migrations, Flask-SQLAlchemy, to mention a few. It utilizes SQLite for its database needs.## Features
- Posts, Pages, Categories, Tags and Authors (like WordPress).
- Markdown rendering
- Theme support
- Import from Wordpress
- Gist integration
- A simple admin interface
- Build you own extensions
- Sync your generated blog with either FTP or to Amazon S3## Why not Pelican/Jekyll/Octopress/Hyde?
1. AtomicPress is built in Python.
2. It is built upon Flask, which is easy to extend.
3. It's built to make Wordpress import simple.## Installation
AtomicPress can easily be installed through pip.
pip install atomicpress
### Develop
pip install git+git://github.com/marteinn/AtomicPress.git@develop
## Getting started
To install AtomicPress you'll need python 2.7, virtualenv and pip.
If you want a quickstart, just copy the example `base-example`, cd and type `make init` and you are ready to go.
## Settings
- `SQLALCHEMY_DATABASE_URI`: Path to your sqlite database.
- `DEBUG`: Show errors, should be deactivated for live environments.
- `SECRET_KEY`: Session key for signing.
- `STATIC_URL`: Path to the static content, default: `/static/`
- `UPLOADS_URL`: Path to the uploads folder, defult `/uploads/`
- `THEME`: The theme you want to run, default is `atomicpress.themes.minimal`.
- `GIST_BACKEND_RENDERING`: If you want to render a `` that contains the gist content as pure text. Default is `False`
- `EXTENSIONS`: A array with the extensions you want to run.
- `MARKDOWN_EXTENSIONS`: A list with the active [markdown extensions](https://pythonhosted.org/Markdown/extensions/index.html).### S3
- `AWS_ACCESS_KEY_ID`: Access key id to aws.
- `AWS_ACCESS_KEY`: Access key to aws.
- `AWS_REGION`: The region your bucket is places (optional).
- `AWS_S3_CALLING_FORMAT`: A boto setting (uses SubdomainCallingFormat by default) (optional).
- `S3_BUCKET`: The bucket you want to deploy to.
- `S3_DESTINATION`: The path within the bucket you want to deploy to.### FTP
- `FTP_HOST`: Hostname to your ftp account.
- `FTP_USERNAME`: Ftp username.
- `FTP_PASSWORD`: Ftp password.
- `FTP_DESTINATION`: Ftp sup## Admin
AtomicPress uses Flask-Admin to show a admin interface, you can access it by running `runserver` with the argument `-a` (admin). Per default is located at `http://localhost:5000/admin/`.
## Themes
AtomicPress ships with the theme minimal per default, if you would like to make your own, just specify the path in your settings file.
THEME=mytheme
To make your own, just look at the theme [minimal](https://github.com/marteinn/AtomicPress/tree/develop/atomicpress/themes/minimal) that ships with AtomicPress.
## Filters
AtomicPress comes with a couple of filters you can use in the post content area.
### code
Render a basic code snippet.
[code]var a = 1;[/code]
>>>var a = 1;### gist
Embeds a more advanced code snippet through a github gist to content.
[gist id="asdasd"]
### image
Embed image path with the `[image]` filter.
>>>If you only want the uploads path, you can use the `[uploads]` filter.
>>>## Commands
### Database
#### Create database
Creates the database and stores it according to the SQLALCHEMY_DATABASE_UR path.
python mange.py create_db
#### Remove database
Removes the sqlite database file.
python mange.py drop_db
**Options**
-r (remove) Remove the sqlite file when done.
-f (force) Do now show the agreement promp.#### Updating from a older version
Upgrading from a older version? Run this to make sure the schema is up to date.
python manage.py upgrade -d=atomicpress/migrations/
### Prefill db with initial data
Adds initial data to the database, perfect when you want to try out AtomicPress.
python manage.py prefill fill
### Server
#### Runserver
Creates a lightweight http server running the web application.
python manage.py runserver
**Options**
-a (admin) Activate the admin area (do not do this in a production anvironment)
-t (toolbar) Show debug toolbar.
-d (debug) Show debug messages.Note: Although untested, it is possible to run AtomicPress as a standard wsgi application.
### Import
AtomicPress uses [wpparser](https://github.com/marteinn/wpparser/) to import data from wordpress export files. Just specify the path to your database export and you are ready to go.
python manage.py importer import_blog -f=./data/blog.wordpress.2014-09-25.xml
**Options**
-f (file) Path to wordpress export file.
### Export
Create a static package of you blog, that are ready to be deployed.
python manage.py exporter export
### Sync
#### S3
Send the exported static files to a AWS S3 bucket.
python manage.py s3 sync
#### FTP
Send the files to your ftp account.
python manage.py ftp sync
## Extensions
### Toggle extensions
AtomicPress uses a pluggale extension system, similar to django's INSTALLED_APPS.
To disable a plugin, define a property in your settings file and just define the ones you need.EXTENSIONS = (
# "atomicpress.ext.importer",
"atomicpress.ext.exporter",
"atomicpress.ext.ftp",
"atomicpress.ext.s3",
"atomicpress.ext.prefill",
)Activating you own is also simple, like this extension called catpictures:
EXTENSIONS = (
"atomicpress.ext.importer",
"atomicpress.ext.exporter",
"atomicpress.ext.ftp",
"atomicpress.ext.s3",
"atomicpress.ext.prefill",
"catpictures",
)### Create extension
To create a extension, create a module with a function called setup. Thats all you need.
## Contributing
Want to contribute? Awesome. Just send a pull request.
## License
AtomicPress is released under the [MIT License](http://www.opensource.org/licenses/MIT).