Satori Knowledge Base is an application that allows users to watch & study Brazilian Jiu Jitsu (BJJ) techniques. Users are able to register, like and comment on videos.
The application was built using the Django Framework and can be accessed here
The purpose of this site is to allow users to access and filter a library of Brazilian Jiu Jitsu techniques. Users are able to like, comment and acces a liked videos in a minimalistc layout that focuses on users learning. Admin users are able to create, edit and delete videos all on the user facing site.
An Agile Project Management approach was adopted from the begining of the project. User stories were created for each individual feature of the site. Each user story was broken down into acceptance criteria allowing a clear goal to be illustrated with each user story. User stories were tracked and updated throughout the development cycle with tasks being added and updated and new stories added if they arose. The user stories were tracked using a Github Project Kanban board which you can view here here
The site was broken down into six epics that dealt with specific sections of the site
Project Set-up
Techniques
User Management
Deployment
Main Page
The database structure was developed using the django built-in models. Before development the models were defined and mapped out as a database schema that can be viewed below.
The database was designed to allow CRUD functionality for Techniques to admin users once they are signed in.
The Technique model contains the individual techniques that can be viewed by users once published.
The Keywords model is linked to the Technique model as a many to one relationship allowing for many keywords to be applied to individual techniques.
The Comment model is linked to the Technique model as a many to one relationship allowing for many comments from multiple users to be applied to individual techniques.
The site consists of a main home page that allows all users to view published techniques. Individual techniques can then be selected and viewed. There are also authentication and CRUD pages that will be discussed below.
The nav bar was implemented on all pages but changed depending on authentication. On smaller devices it changes to a hamburger menu. The navbar consisted of the following items:
A footer was implemented at the bottom of each page that contains links to the social media aages of the site. Links open in new tabs to ensure the best user experience and also contain aria-labels.
The main page of the site is the home page and consists of a heading informing users what the purpose of the site is. There is a search form that allows users to search for specific Techniques or filter by keyword. Below the form there is the list view of all published techniques ordered by upload date. The list is paginated by nine posts per page.
Each Technique has its own unique page that consists of the title, the embedded youtube video and the like and comment sections. When a user is logged in they can like the technique and leave a comment for approval. Admin users also are able to select to edit or delete the indiviual technique.
When a user is logged in they are able to like a techniques in the techniques unique pages and then select the liked techniques link in the navbar and view the techniques that they have liked already. This feature was implemented to allow users to return to favorite videos.
When a site admin is logged in they are able to select the Add Technique link in the navbar. This link brings them to a form allowing the user to create a new technique for site users
When a site admin is logged in they are able to select the edit Technique link on the unique Techniques page. This link brings them to a form allowing the user to edit the current technique to update or correct any information.
When a site admin is logged in they are able to select the delete Technique link on the unique Techniques page. This link brings them to a form allowing the user to delete current technique.
A sign-up page was created in order to allow users to sign up to the site allowing them to like and comment on techniques.
A login page was created in order to allow users to login to the site allowing them to like and comment on techniques and view their previously like techniques.
When a user is logged in they are given the option to log out in the navbar.
A 404 page was implemented to ensure that if a user navigates to a broken link information will be displayed informing of what happened and they will be able to return to the home page.
A 403 page was implemented to ensure that if a users tries to gain accesss to restricted content they well be informed and will be able to return to the home page.This includes the following pages:
A favicon was implemented to ensure that the wste was easily recognizable even with multiple tabs open.
Alerts are displayed when a user signs-in, signs-up or logs out. This allows the user to be notified that their request was succesful
Views were secured using the LoginRequiredMixin and the UserPassesTestMixin these were used to ensure that users attempting to access specific pages were authorized. Only admins are able to access the Create, edit and delete technique pages and only logged in users could view their liked techniques.
During development environment variables were stored in an env.py for local development for security purposes to ensure no secret keys or sensitive information was added the the repository. In production, these variables were added to the heroku config vars within the project.
The site goals are to be minimalistic and focus in on the techniques ensuring users are not distracted. To ensure this is the case the color scheme that was used was black and white.
The Exo and also the Kanit fonts were used throughout the site. These are google fonts that were imported in the header section of the base.html.
All thumbnails were sourced from the Youtube thumbnails using Youtube thumbnail grabber.
All testing can be found in the TESTING.md file. This was moced to improve readibility of this file.
The site was created using the CodeAnywhere IDE. Throughout development changes were pushed to the SatoriKnowledgeBase repository on GitHub.
The git commands used to push code to the repository were as follows:
git add <file>
- This command was used to add the file(s) to the staging area before they are committed.
git commit -m “commit message”
- This command was used to commit changes to the local repository queue.
git push
- This command was used to push all queued code to the repository on github.
The site is hosted on heroku and deployment was completed following these steps: