/django-bona-blog

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

Primary LanguageJavaScriptMIT LicenseMIT

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