You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey everyone! My name is Sly and I'm making an app that tracks brands and their impacts on society!
History
I originally started working on this in early 2020 at Gemify under the moniker "Emerald", but the concept got axed at the end of the year due to issues with content moderation and poor project management. I am reviving it today to take a second stab at it as now I have a bit more familiarity with the issues I'll run into as well as some of the solutions for problems I didn't know how to solve 4 years ago.
Purpose
Originally, the purpose of the app was to provide some way to rate organizations to determine which ones to buy from and support based on the 3 pillars of ESG. This goal has been abandoned as the primary goal of LikeMind.
The current main purpose of the app is to disseminate relevant information to users that would otherwise take them a while to dig up had they been sifting through news articles or wiki pages. The secondary goal of the app remains the same as before - to provide a soft boycott or safelist of which brands to engage with.
Additionally, it is worth noting that the looming TikTok ban sets a huge precedent on the governments ability to influence any corporation that it wants to (with arbitrary cause). It is imperative that an app like this is Open Source and in the distant future potentially even federated in case of any gov overreach.
Design
Entities
Entities are people, companies, and/or brands. Entities will find their way onto the platform in two ways: user generated and scraped lists.
Relationships
Relationships are the various connections between Entities whether they be familial in nature or financial. A Relationship allows us to show the various connections among different Entities that a user would not know about without having to do some digging. Relationships are all implicitly bi-directional and each relevant Relationship arc has a diametrically related type eg. parent/child or subsidiary/holding company. Relationships must be corroborated with Evidence.
Activities
Activities are the events that Entities participate in and the foundation of how Entities will be ranked by users. Activities can be with or without duration. Activities with duration can be ongoing or already ended. Activities can be mapped to multiple Entities. Activities must be corroborated with Evidence.
Evidences
Evidence is used to corroborate either a Relationship or an Activity. Evidence should be factual information pertaining to the Activity or Relationship in question. This means that Relationships and Activities should be as factual as possible. Opinionation comes with Reviews
Reviews
Reviews serve as data points for quantitative analysis on the Activities that Entities participate in. With Reviews we can perform analysis on what a User may be interested in learning about based on the way they engage with particular Entities and Activities. The way Reviews work is still up for discussion, but initial thoughts are to have a value between -1.00:1.00 be attached to this model.
Users
A User is anyone who uses the app! :)
Communities
Communities are Groups that you can subscribe to that influence the Activities you see as well as recommendations from Communities that have similar Review habits. These are invitation only to prevent bad actors from influencing your own Reviews. Communities that have similar Review patterns will be recommended similar Activities to look at and optionally review.
Tags
Tags are used to better match Users and Communities with Activities that are similar to the ones that they engage in. Additionally we can do some text based analysis on Evidence to find similarities, but this is the easier route for now.
ERD
Here's the (slightly old) ERD that you can stick in Mermaid to see. I'll update this post with some more information and comments when I have some free time. To see the most up to date ERD, check out /db/schemas:
erDiagram
Tag ||--|{ ActivityTagLink : ""
Activity ||--|{ ActivityTagLink : ""
Evidence ||--|{ ActivityEvidence : ""
Evidence ||--|{ RelationshipEvidence : ""
Relationship ||--|{ RelationshipEvidence : ""
Activity ||--|{ ActivityEvidence : ""
Entity ||--|{ Activity : ""
Entity ||--|{ RelationshipArc : "2:n"
Activity ||--|{ ActivityReview : ""
User ||--|{ ActivityReview : ""
User ||--|{ RelationshipReview : ""
User ||--|{ UserGroupLink : ""
UserGroup ||--|{ UserGroupLink : ""
Relationship ||--|{ RelationshipReview : ""
Relationship ||--|| RelationshipArc : "2:n"
UserGroup {
uuid id PK
string name
}
UserGroupLink {
uuid id PK
uuid group_id FK
uuid user_id FK
}
User {
uuid id PK
}
Entity {
uiid id PK
datetime created_at
}
Activity {
uuid id PK
datetime started_at
datetime ended_at
}
ActivityReview {
uuid id PK
uuid user_id FK
uuid activity_id FK
}
ActivityEvidence {
uuid id PK
uuid activity_id FK
uuid evidence_id FK
}
ActivityTagLink {
uuid id PK
uuid activity_id FK
string tag_name FK
}
Tag {
uuid id
string name PK
}
RelationshipArc {
uuid id PK
uuid relationship_id FK
uuid start_entity_id FK
uuid end_entity_id FK
string type
}
Relationship {
uuid id PK
datetime created_at
}
RelationshipEvidence {
uuid id PK
uuid relationsip_id FK
uuid evidence_id FK
}
RelationshipReview {
uuid id PK
uuid user_id FK
uuid relationship_id FK
}
Evidence {
uuid id PK
str source
str description
}
Loading
Technologies
I'm using what comes easiest to me: Nuxt/Vue. I can prototype things really fast with it and building fully typed TypeScript app sounds like heaven to me.
Nuxt/Vue
Postgres
Docker
DrizzleORM
Redis? (Later for Caching and Complex App Analytics)
Will add more to this initial post as I have some more time throughout the week. Apologies for any typos or poorly reviewed copy in advance!
Hey everyone! My name is Sly and I'm making an app that tracks brands and their impacts on society!
History
I originally started working on this in early 2020 at Gemify under the moniker "Emerald", but the concept got axed at the end of the year due to issues with content moderation and poor project management. I am reviving it today to take a second stab at it as now I have a bit more familiarity with the issues I'll run into as well as some of the solutions for problems I didn't know how to solve 4 years ago.
Purpose
Originally, the purpose of the app was to provide some way to rate organizations to determine which ones to buy from and support based on the 3 pillars of ESG. This goal has been abandoned as the primary goal of LikeMind.
The current main purpose of the app is to disseminate relevant information to users that would otherwise take them a while to dig up had they been sifting through news articles or wiki pages. The secondary goal of the app remains the same as before - to provide a soft boycott or safelist of which brands to engage with.
Additionally, it is worth noting that the looming TikTok ban sets a huge precedent on the governments ability to influence any corporation that it wants to (with arbitrary cause). It is imperative that an app like this is Open Source and in the distant future potentially even federated in case of any gov overreach.
Design
Entities
Entitiesare people, companies, and/or brands.Entitieswill find their way onto the platform in two ways: user generated and scraped lists.Relationships
Relationshipsare the various connections betweenEntitieswhether they be familial in nature or financial. ARelationshipallows us to show the various connections among differentEntitiesthat a user would not know about without having to do some digging. Relationships are all implicitly bi-directional and each relevant Relationship arc has a diametrically related type eg. parent/child or subsidiary/holding company.Relationshipsmust be corroborated withEvidence.Activities
Activitiesare the events thatEntitiesparticipate in and the foundation of howEntitieswill be ranked by users.Activitiescan be with or without duration.Activitieswith duration can be ongoing or already ended.Activitiescan be mapped to multipleEntities.Activitiesmust be corroborated withEvidence.Evidences
Evidence is used to corroborate either a Relationship or an Activity. Evidence should be factual information pertaining to the Activity or Relationship in question. This means that Relationships and Activities should be as factual as possible.
Opinionationcomes withReviewsReviews
Reviewsserve as data points for quantitative analysis on the Activities that Entities participate in. With Reviews we can perform analysis on what a User may be interested in learning about based on the way they engage with particularEntitiesandActivities. The way Reviews work is still up for discussion, but initial thoughts are to have a value between -1.00:1.00 be attached to this model.Users
A
Useris anyone who uses the app! :)Communities
CommunitiesareGroupsthat you can subscribe to that influence theActivitiesyou see as well as recommendations fromCommunitiesthat have similarReviewhabits. These are invitation only to prevent bad actors from influencing your ownReviews.Communitiesthat have similarReviewpatterns will be recommended similarActivitiesto look at and optionally review.Tags
Tags are used to better match
UsersandCommunitieswithActivitiesthat are similar to the ones that they engage in. Additionally we can do some text based analysis onEvidenceto find similarities, but this is the easier route for now.ERD
Here's the (slightly old) ERD that you can stick in Mermaid to see. I'll update this post with some more information and comments when I have some free time. To see the most up to date ERD, check out
/db/schemas:erDiagram Tag ||--|{ ActivityTagLink : "" Activity ||--|{ ActivityTagLink : "" Evidence ||--|{ ActivityEvidence : "" Evidence ||--|{ RelationshipEvidence : "" Relationship ||--|{ RelationshipEvidence : "" Activity ||--|{ ActivityEvidence : "" Entity ||--|{ Activity : "" Entity ||--|{ RelationshipArc : "2:n" Activity ||--|{ ActivityReview : "" User ||--|{ ActivityReview : "" User ||--|{ RelationshipReview : "" User ||--|{ UserGroupLink : "" UserGroup ||--|{ UserGroupLink : "" Relationship ||--|{ RelationshipReview : "" Relationship ||--|| RelationshipArc : "2:n" UserGroup { uuid id PK string name } UserGroupLink { uuid id PK uuid group_id FK uuid user_id FK } User { uuid id PK } Entity { uiid id PK datetime created_at } Activity { uuid id PK datetime started_at datetime ended_at } ActivityReview { uuid id PK uuid user_id FK uuid activity_id FK } ActivityEvidence { uuid id PK uuid activity_id FK uuid evidence_id FK } ActivityTagLink { uuid id PK uuid activity_id FK string tag_name FK } Tag { uuid id string name PK } RelationshipArc { uuid id PK uuid relationship_id FK uuid start_entity_id FK uuid end_entity_id FK string type } Relationship { uuid id PK datetime created_at } RelationshipEvidence { uuid id PK uuid relationsip_id FK uuid evidence_id FK } RelationshipReview { uuid id PK uuid user_id FK uuid relationship_id FK } Evidence { uuid id PK str source str description }Technologies
I'm using what comes easiest to me: Nuxt/Vue. I can prototype things really fast with it and building fully typed TypeScript app sounds like heaven to me.
Will add more to this initial post as I have some more time throughout the week. Apologies for any typos or poorly reviewed copy in advance!