DentroptyDaemon Monorepo
ddaemon-monorepo
A collection of ETL(Extract Transform Load) tools for taking social media and quantified self data and generating visualizations so people can better understand themselves and others.
Motivation
Why can't Google index all my data allowing me to search myself? The vision for Dentropy Daemon is to take all ones data into a single extendable API that the user and only the user has access and control over.
Guide to Bindings and Apps
- Bindings are tools to get and transform data from different sources into a format that can be queried.
- Apps are tools that can be used to interact with the data once the bindings have it in the correct format
Bindings
- wiki.ddaemon.monorepo.bindings.keybase
- Export data from keybase and put it in Elasticsearch
- wiki.ddaemon.monorepo.bindings.discord
- Take exported data from discord and put it into Elasticsearch
- wiki.ddaemon.monorepo.bindings.git
- TODO
Apps
- wiki.ddaemon.monorepo.app.web
- Visualize the data from different bindings
dentropydaemon-wiki/Dentropy Daemon/Archive/Monorepo/backlog
Feedback
- Fix the documentation for my project
- Polish
- Additional Charts
- Backend API
- Tell a bit of a story through the data
- User Stories
General Backlog
- Reference design for backend API
- Start thinking about caching
Epics
- Reaction type queries
- Multi team/user/topic select
- Messages per hour
- Create API Backend rather than proxying the elasticsearch queries
- Modular Query Builder function (Which can be moved to the backend later)
- Add team / user select programmatically to each query rather than hard coding it in the JSON
- Add specific team, user, and topic to query programmatically
- Get most reactions to a specific message
- Reply queries
- Per capita queries
- Finish adding the elasticsearch error response function in all components
Tech Debt
- Review names for all reducers
- Skim through everything
- Place better console.logs as comments for later debugging
- Remove the unused components
- Margin and CSS stuff
Delete Specific Index
source .env
curl -XDELETE -iL -u $ELASTIC_USER:$ELASTIC_PASS "$ELASTIC_NODE/discordguild*"
Discord Binding
- How many users in a guild
- Add scripts for dumping and indexing each separate index
- Get the character count of the contents
- Get the number of attachments, mentions, embeds etc
- Parse out any domain names
DataViz Backlog
- What about specific user and topic queries
- A specific user is not going to work because we want to graph the different message types
- What about their activity across channel's?
- For this it requires doing an aggregation on a separate field
- This is worth doing
- User message types is not going to work
- General search functionality
- Replies Graph
- Topic's across team
- User
- Datagrid that can list complete messages
- Combine the data grid components?
- Longest
- Replies
- Most Reaction's
Git Binding
- DOCUMENT THE THING ddaemon.monorepo.bindings.git.README
Repo Errors
https://github.com/Loopring/lightcone https://github.com/nemtech/nem2-workshop-nem-applied-to-supply-chain https://github.com/kusamanetwork/kusama.network https://github.com/Abracadabra-money/wonderland-frontend https://github.com/curvefi/curve-vue https://github.com/0xProject/contracts https://github.com/XYOracleNetwork/xyo-solidity https://github.com/oceanprotocol/ocean https://github.com/oceanprotocol/squid-js https://github.com/oceanprotocol/keeper-contracts https://github.com/oceanprotocol/pleuston https://github.com/singnet/singnet
Keybase Binding
- Parse Reactions
Reminders
- Project Management.ddaemon-webapp.logs
- Key base Data Ex filtration
- Getting Started with Discord Bot Development
- Rubber Duck Debugging
- Diagram it out
- Project Management.ddaemon-webapp.User Stories BEFORE developing a feature
Current Task
- REREAD THE USER STORIES
- Review all user stories for the list queries and create a list of tech debt
- Gotta fix the way the reducers values are named for the Query Selector especially for the lists
Research Notes
Design
- wiki.software.Catagories.Data Visualization
- Do I want the graph itself to be stored in the context?
- Do I want to store each part of the graph as a separate reducer and use a separate context?
- Yes but that is over optimization at this point
- Reactions and Replies
- Do I want to do an aggregation for reactions to a message for slack?
- First I would have to seach all replies, then I would have to do an aggregation on the specific messages replied to
Feedback
- Query replies
- Per Capita message types
- URL's per person
- Emoji's sent by specific user distribution
- Emoji's received by specific user
- Graph of who interacts via emoji's
- Time based stuff
- Search across teams
- Who is across multiple teams
- CRM Integration
- Hashtag support
- Completed
- Who has not posted in X Channel
Project Management.ddaemon-webapp.User Stories
Features*
- Graph select
- Get an example query for every graph you want to query
- Project Management.ddaemon-webapp.Query Data Visualizations.analysis queries
- Get list of all users
- Emoji analysis
- View context of messages
- Support for multiple teams
- Most popular domain names
- Error correction
Bindings
- keybase-binding-nodejs
- Get the attachments
- Import topic list
- Check if topic has been exported
- Export or import topic
- Find all attachments and save to attachments folder
- List group chats
- Export group chat
- TODO ALSO EXTRACT CHARACTER COUNT, URLS, AND WORD COUNT FOR EDITS
- discord-binding
- Document how to get token
- Document what is missing in Paul Mullins / DiscordChatExporter Helper ยท GitLab
- facebook-binding
- reddit-binding
- pinboard-binding
Issues
- We want a generalized way to do the elasticsearch queries
- Why not have a switch statement and for each graph require a specific set of key's
- This way it will be easy to get the graph title managed here as well
- I guess this requires a custom component with props, yes it does
- I need to add a props section to this wiki
- There is not title for the graph
- Research vega title
- I want to make the sidebar built into the graph render component
Steps to add a graph
- Create component template
- Requirements
- Graph name:
- Graph ID:
- Add component to KeybaseRoot.js
- Add graph radio button to QuerySelect.js
- Add to switch statement in KeybaseRoot.js
- Automatically select Topic and Team in the left sidebar
Nice to haves
- List users that are accounted for in the other part of the pie chart
Elastic Keys
- user = msg.sender.username
- topic = msg.channel.topic_name.keyword
- team = msg.channel.name
- Message type = msg.content.type