Favorites / Social Approaches

AEM Communities

  • "Voting" Component has similar behavior as favorites. So we can use that component.
  • We can create users using:

curl '.../primary/signup.social.json' -uadmin:admin -v -X POST -H "Accept:application/json" --data 'email=user1@gmail.com&password=123456&:operation=social:createTenantUser' --compressed

AEM Communities

  • We can set a favorite page adding the component "voting" to a landing page, then:

curl http://localhost:4502/content/kids/en/myhome/jcr:content/parsys/voting -uuser1@gmail.com:123456 -v -X POST -H "Accept:application/json" --data ":operation=social:samples:toggleFavorite"

*toggleFavorite is a custom method in new Favorites Bundle.

AEM Communities

  • Good:
    • Integrated with Adobe Social Common Store (Cloud) / Mongo + Solr.
    • Votes component has similar behavior.
    • We can use all the AEM Community features (https://docs.adobe.com/docs/en/aem/6-1/administer/communities/overview.html)

AEM Communities

  • Bad:
    • Duplicated users (Up to 50 millions)

Custom REST API

We can create a custom API using one of REST HATEOAS frameworks in java like Spring HATEOAS + Spring Boot and manage data in a separated MongoDB (other database for big collections).

 

Custom REST API

Create Users:

curl -i -X POST -H "Content-Type:application/json" -d '{ "username" : "user1", "email" : "jhelbert@gmail.com", "favorites": [{"cardId": "/content/kids/en/myhome"}]}' http://localhost:9090/users

Edit an user (adding a new favorite):

curl -i -X PUT -H "Content-Type:application/json" -d '{ "favorites": [{"cardId": "/content/kids/en/games/wow"}]}' http://localhost:9090/users/56b43f3dd4c608c967315913

Custom REST API

Create Favorites:

curl -i -X POST -H "Content-Type:application/json" -d '{ "cardId" : "/content/kids/en/myhome", "users": [{"id":"56b43f3dd4c608c967315913"}]}' http://localhost:9090/cards

SOLR Collection

We can use SOLR as data repository for "social" collections like 'users' (with profile, preferences, etc) and 'favorites'.

I tried to find a similar approach as this one for Favorites but I just found mixed approaches (MongoDB + SOLR) 

deck

By Helbert Rico

deck

  • 575