Package: django-bona-blog
django-bona-blogA Django blog app with features of a standard blogging platform.Table of contentsGeneral infoStandalone ProjectScreenshotsFeaturesTechnologiesSetupStatusContactLicenseContributingGeneral infoAn Open-Source Django blogging app likeMediumandReal Python. It hasfeaturesof a standard blogging platform.Standalone ProjectThere is a standalone version of this django package. You can get it from itsGitHub Repo.ScreenshotsAuthors Dashboard PageCreate Article PageAuthors Profile Details PageHome PageList of Categories PageCategory Articles List PageAuthor Articles List PageArticle Detail PageFeaturesMobile App VersionDashboard for AuthorsWYSIWYG EditorAccount VerificationAuthor LoginAuthor Password ResetAPI for ClientsCategory ListCategory Articles ListNew Category SubmissionRelated ArticlesCommentsArticles SearchArticle Social Media ShareArticle Minute ReadArticle Number of WordsArticle Number of ViewsArticle TagsTag Related ArticlesMarkdown SupportResponsive on all devicesPaginationClean Code90% test coverageTechnologiesPython 3.6JavascriptJqueryAjaxPrismJSDjango 3HTML5CSS3Bootstrap 4Ion IconsFont awesomeCKEditorSQLitePostgreSQLSetupTo run this app, you will need to follow these 3 steps:1. Requirementsa LaptopText Editor or IDE (eg. vscode, PyCharm)Python 3.6 +Django 2.2+2. Install Python and PipenvPython3Pipenv3. Local Setup and Running on Windows, Linux and Mac OSa. Install package with pip or pipenv```
      $ pip install django-bona-blog

  ```

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

  ```b. Adddjango_filter, ckeditor, taggit, crispy_formsandrest_frameworkto yourINSTALLED_APPSinsettings.py:INSTALLED_APPS = (
        ...
            'django_filters',
            'rest_framework',
            'taggit',
            'ckeditor',
            'ckeditor_uploader',
            'crispy_forms',
    )c. AddCKEditor Configurationtosettings.py:# CKEditor Settings
    CKEDITOR_UPLOAD_PATH = 'uploads/'
    CKEDITOR_IMAGE_BACKEND = "pillow"

    CKEDITOR_CONFIGS = {
        'default':
            {'toolbar': 'full',
             'width': 'auto',
             'extraPlugins': ','.join([
                 'codesnippet',
                 'youtube'
             ]),
             },
    }d. AddblogtoINSTALLED_APPSinsettings.pyfor your Django project:INSTALLED_APPS = (
        ...
        'blog.apps.BlogConfig',
    )e. Addblog.urls, tinmyce.urls and api.urlstourls.pyof 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 tourls.pyof 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 blogh. Adddashboardconfiguration to your projectsettings.py:# Account Settings
     LOGIN_URL = '/account/login/'
     LOGIN_REDIRECT_URL = '/author/dashboard/'
     LOGOUT_REDIRECT_URL = '/account/logout/'i. Addemail configurationforaccount 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 = Truej. Addstatic files configurationforserving staticfilesSTATICFILES_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. Addmedia files configurationforserving media files# Media files (User uploaded images)
       MEDIA_URL = '/media/'
       MEDIA_ROOT = os.path.join(BASE_DIR, 'media')l. Collectstatic files$ python manage.py collectstaticRunning Tests$ python manage.py test blog.testsStatusProject is:doneContactCreated byWilliano- feel free to contact me!LicenseYou can check out the full licensehereThis project is licensed under the terms of theMITlicense.ContributingFork it (https://github.com/Williano/django-bona-blog.git)Create your feature branch (git checkout -b feature/fooBar)Commit your changes (git commit -am 'Add some fooBar')Push to the branch (git push origin feature/fooBar)Create a new Pull Request