- Summary
- Installation
- Demo
- API Documentation
- Educational Resources
- ToDos
- Feature Roadmap
- Future Scope
Hustlers Den is a knowledge resource aggregation platform. The motivation to build this project was to ease out the process of sharing educational resources amongst a team as compared to the alternative of messages getting lost in the wild while using Slack channels. The project is built using Django and Django Rest Framework. The API documentation is done using Swagger Documentation.
In case of any questions, queries or suggestions please reach out to @darth-dodo.
Cheers!
-
Make sure you have a Postgres version greater than 9.6
-
Clone the repo
-
Create your
.env
file by using.env.example
as template and substituting values based on your environment -
Use Pyenv to install and set Python to version 3.7.x
-
Run
pipenv install
-
Activate the virtualenv using
pipenv shell
-
Create development Postgres Database using the command
createdb den_db
and permissions for user as mentioned in theden/settings/dev.py
eg.$ createdb den_db
$ psql -U <user> or $ psql postgres
# CREATE ROLE den_app WITH LOGIN PASSWORD 'your-awesome-password';
# GRANT ALL PRIVILEGES ON DATABASE den_db TO den_app;
# \q
-
Create a superuser using the command
python manage.py createsuperuser
-
Run the local server using the command
python manage.py runserver
-
Hop on to the site and go to
<your-localhost-with-port>/admin
-
Use the above credentials to log into the admin panel
- The Backend sandbox can be accessed using Django Admin Panel and Jet at https://hustlers-den.herokuapp.com/ with the following credentials:
- Username: admin@hden.com
- password:
sharing-is-caring
- The Database Schema diagram can be found over here
- Interactive API Documentation generated using Swagger can be found here
- Static API Documentation using the OpenAPI spec can be found over here
- Work in Progress Postman Documentation
- While working on anything, we tend to come across educational resources which help us in getting better and understanding a problem as well as it's solution on a deeper level
- The Educational Resources file is a place we have listed down the resources we referred to while working on this project for giving a deeper context and through learning to the reader if required.
- Setting up django project
- Adding knowledge store
- Adding users
- Adding users to knowledge store
- Setup Django REST Framework
- Setup Hustler serializer
- Setup JWT, Session and Basic auth using DRF
- Custom JWT payload generator
- Read only viewsets based on auth token for knowledge base
- Appropriate filters and searches
- Swagger + Coreapi for better REST API interface
- Django Debug Toolbar, Query Count Middlewares and Django Power Shell for efficient debugging
- Eager Loading for Serializers to prevent N+1 queries
- Deploy on Heroku/PA
- Add more docstrings application wide
- Create a list of Educational Resources
- Custom Middleware for Error Handler
- Auto assign user permissions
- Implement Django Management Commands for generation seed database
- Knowledge Packets module
- Implement Celery Integration for resetting the Sandbox Database every 24 hours
- Base Service Class for MVCS approach
- Knowledge Resource creation and update using Model ViewSets and custom Permission Classes
- Only the creator can modify the his/her contributions
- SuperUsers can update anything
- Custom Permission Class
- Error Handling for custom Permission denied error exception
- Hustler Sign up via REST api
- Make an Abstract ViewSet for Hustler
- ViewSet for Hustler with Access Control
- Service to create django user, hustler and assign permissions group
- Integrate the service in endpoint
- Endpoint can be anonymous and require user verification from super user
- Endpoint can be consumed by super users for autoverified new user
- Adding
IsVerified
Permission to the viewsets
- Audit trail or Django Simple History integration
- Documentation about Base Service with usage example for Wiki
- Documentation about Custom Middleware with usage example for Wiki
- Weekly Newsletter implementation
- Integrate Sendgrid
- Weekly emails based on User interests
- User preferences/settings
- Create newsletter template
- Slack Bot
- Custom Slack App
- Explore Dialogs for adding resources
- Publish Slack bot
- Discussion module
- Test Cases
- Unit Tests
- Integration Tests
- Try out Django Watchman (for checking out system monitoring)
- Add ElasticSearch and relevant search indexes to be consumed by the ViewSets
- Move the App to a Demo environment in a separate Heroku App using "Heroku Deploy" Button
- Browser extension to add resources
- Custom roles and permissions
- Light Weight Dashboard
- Export data in CSV using custom Admin actions