The project involves development of an online publishing platform for poets where they can publish poems. The name of the site is Smartpoet and is hosted on a heroku live server here https://smartpoet.herokuapp.com I developed an online publishing platform for poets because of my interest and love for Poetry. The web app was developed using:
- Python
- Django
- Javascript
- PostgreSQL
- HTML
- CSS
- Bootstrap
- Disqus commenting system (Third party integration)
-
- Superadmin:
- Manage all site users and settings as well as activities of the lower level roles which include (admin, poet and visitor)
- Admin:
- Manage some site users and settings
- Perform CRUD operations on all poems
- Create categories and sub categories
- Approve or disapprove submitted poems
- Perform CRUD operations on all user accounts
- Do everything poets can
- Poets:
- Register an account
- Verify email
- Login to access their account area
- Setup a poet profile
- Link social accounts to their smartpoet account
- Link multiple emails to their account
- Retrieve and Reset forgotten password
- Create/submit poems for approval
- Perform read and update operations on their profile details
- Perform CRUD operations on their poems
- Like/Unlike, Upvote/Downvote, Save/Bookmark poems
- Add comments to poems
- Visitors:
- Read poems
- View poet profile
- Use a few filters to skim through data pages such as poems, poets etc.
- Comment on poems through disqus comments
- Register a new account to be a poet
- Superadmin:
-
- Follow and Unfollow each other
- Like and Unlike each other poems
- Upvote and Downvote each other poems
- Save or Bookmark each other's poems
-
- CORE:
- Serves mostly the frontend views and general assets
- Models: 0
- Files:
- apps.py - config for core app,
- views.py - displays core/frontend views,
- urls.py - manages core urls
- POSTS:
- Serves the poems published by registered poets, including categories and sub categories
- Models: 3
- Files:
- filters.py - filter posts data,
- apps.py - config for posts app,
- views.py - displays/manages frontend/backend post views,
- urls.py - manages post urls,
- forms.py - members form classes and definitions,
- models.py - post model classes and definitions
- MEMBERS:
- Serves user and profile management
- Models: 2
- Files:
- filters.py - filter retrieved member data,
- apps.py - config for members app,
- views.py - displays/manages frontend/backend members views,
- urls.py - manages members urls,
- forms.py - posts form classes and definitions,
- models.py - members model classes and definitions,
- signals.py - perform specific autonomous actions based on user activity,
- models.py - members model classes and definitions,
- CORE:
-
The application can be run by simply following the steps below:
- Install dependencies inside requirements.txt file
- Create a postgreSQL database and user
- Edit the settings.py file to include new database details
- Execute a migrate command ("python manage.py migrate")
- Create a super user
- Create a profile from the django admin for the super user
- Add a site from the django admin by the superuser
- Add social applications using API keys from google and facebook
- Web App Demo: https://smartpoet.herokuapp.com/
- PYTHON: Python is a programming language that lets you work quickly and integrate systems more effectively.
- DJANGO: Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design.
- POSTGRESQL: The World's Most Advanced Open Source Relational Database.
- HTML5:
- CSS3:
- JAVASCRIPT:
- MDN: Mozilla Developer Network - JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions
- W3SCHOOL: JavaScript Introduction
- Intersection Observer API: Provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport
- BOOTSTRAP5: Powerful, extensible, and feature-packed frontend toolkit.
- DISQUS: The internet's favorite comment plug-in.
- MUGSHOTBOT: Automatic beautiful link previews
- Portfolio - @SammyLeths
- Linkedin - @SammyLeths
- Twitter - @SammyLeths