Williano/django-bona-blog

A Django blog app with features of a standard blogging platform.

django
django-app
django-blog
django-blog-app
django-blogging
python3

django-bona-blog

A Django blog app with features of a standard blogging platform.

PyPI version GitHub license GitHub stars GitHub forks GitHub issues

Table of contents

General info

An Open-Source Django blogging app like Medium and Real Python. It has features of a standard blogging platform.

Standalone Project

There is a standalone version of this django package. You can get it from its GitHub Repo.

Screenshots

Authors Dashboard Page :-------------------------: Screenshot_2020-06-25 Bona Dashboard Home

Create Article Page :-------------------------: Screenshot_2020-06-26 Bona Dashboard Create Article(2)

Authors Profile Details Page :-------------------------: Screenshot_2020-06-25 Bona Dashboard Profile Details

Home Page List of Categories Page
Home Categories List
Category Articles List Page Author Articles List Page
Category Article List Author Articles

Article Detail Page :-------------------------: Screenshot_2020-11-22 BONA Django CKEditor installation Testing

Features

  • Mobile App Version
  • Dashboard for Authors
  • WYSIWYG Editor
  • Account Verification
  • Author Login
  • Author Password Reset
  • API for Clients
  • Category List
  • Category Articles List
  • New Category Submission
  • Related Articles
  • Comments
  • Articles Search
  • Article Social Media Share
  • Article Minute Read
  • Article Number of Words
  • Article Number of Views
  • Article Tags
  • Tag Related Articles
  • Markdown Support
  • Responsive on all devices
  • Pagination
  • Clean Code
  • 90% test coverage

Technologies

  • Python 3.6
  • Javascript
  • Jquery
  • Ajax
  • PrismJS
  • Django 3
  • HTML5
  • CSS3
  • Bootstrap 4
  • Ion Icons
  • Font awesome
  • CKEditor
  • SQLite
  • PostgreSQL

Setup

To run this app, you will need to follow these 3 steps:

1. Requirements

  • a Laptop

  • Text Editor or IDE (eg. vscode, PyCharm)

  • Python 3.6 +

  • Django 2.2+

2. Install Python and Pipenv

3. Local Setup and Running on Windows, Linux and Mac OS

a. Install package with pip or pipenv
  ```
      $ pip install django-bona-blog

  ```

               or 
  ```
      $ pipenv install django-bona-blog

  ```
b. Add django_filter, ckeditor, taggit, crispy_forms and rest_framework to your INSTALLED_APPS in settings.py:
    INSTALLED_APPS = (
        ...
            'django_filters',
            'rest_framework',
            'taggit',
            'ckeditor',
            'ckeditor_uploader',
            'crispy_forms',
    )
c. Add CKEditor Configuration to settings.py:
    # CKEditor Settings
    CKEDITOR_UPLOAD_PATH = 'uploads/'
    CKEDITOR_IMAGE_BACKEND = "pillow"

    CKEDITOR_CONFIGS = {
        'default':
            {'toolbar': 'full',
             'width': 'auto',
             'extraPlugins': ','.join([
                 'codesnippet',
                 'youtube'
             ]),
             },
    }
d. Add blog to INSTALLED_APPS in settings.py for your Django project:
    INSTALLED_APPS = (
        ...
        'blog.apps.BlogConfig',
    )
e. Add blog.urls, tinmyce.urls and api.urls to urls.py of your project:
    from django.urls import include


    urlpatterns = [
      ...
      path('ckeditor/', include('ckeditor_uploader.urls')),
      path('blog/', include('blog.urls')),
      path('api/v1/', include('blog.api.v1.routers.routers')), 
  ]
f. Add configuration to serve static files in development to urls.py of your project:
     from django.conf.urls.static import static
     from django.conf import settings


     if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
g. Create blog database tables

$ python manage.py migrate blog

##### h. Add dashboard configuration to your project settings.py:

# Account Settings LOGIN_URL = '/account/login/' LOGIN_REDIRECT_URL = '/author/dashboard/' LOGOUT_REDIRECT_URL = '/account/logout/'

##### i. Add email configuration for account signup and password reset

``` # Email Settings (Development) EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

# Email Settings (Production) EMAIL_BACKEND = '' EMAIL_HOST = '' EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = "" EMAIL_PORT = 587 EMAIL_USE_TLS = True ```

##### j. Add static files configuration for serving staticfiles

```

  STATICFILES_DIRS = [ os.path.join(BASE_DIR, "blog/static"),]
  STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
  STATICFILES_FINDERS = [
        "django.contrib.staticfiles.finders.FileSystemFinder",
        "django.contrib.staticfiles.finders.AppDirectoriesFinder",
     ]

```

##### k. Add media files configuration for serving media files

# Media files (User uploaded images) MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

##### l. Collect static files

$ python manage.py collectstatic

Running Tests

$ python manage.py test blog.tests

Status

Project is: done

Contact

Created by Williano - feel free to contact me!

License

You can check out the full license here

This project is licensed under the terms of the MIT license.

Contributing

  1. Fork it (https://github.com/Williano/django-bona-blog.git)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request
Stars
176
0.00% more than last month
Forks
65
Open Issues
13