{"id":29016516,"url":"https://github.com/memgraph/bluej","last_synced_at":"2025-06-25T22:30:32.963Z","repository":{"id":169066143,"uuid":"642343324","full_name":"memgraph/bluej","owner":"memgraph","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-22T11:31:21.000Z","size":1147,"stargazers_count":27,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-22T12:49:15.297Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memgraph.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-05-18T11:05:02.000Z","updated_at":"2024-04-22T11:31:26.000Z","dependencies_parsed_at":"2024-04-22T12:47:58.118Z","dependency_job_id":"63efe14c-23f9-4ece-b9ee-54983625d693","html_url":"https://github.com/memgraph/bluej","commit_stats":null,"previous_names":["memgraph/bluej"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/memgraph/bluej","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fbluej","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fbluej/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fbluej/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fbluej/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memgraph","download_url":"https://codeload.github.com/memgraph/bluej/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fbluej/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261962050,"owners_count":23236859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-25T22:30:32.020Z","updated_at":"2025-06-25T22:30:32.899Z","avatar_url":"https://github.com/memgraph.png","language":"C++","readme":"# Welcome to Home+\n\nIt's the Home feed Bluesky was missing until now: A feed that shows those you care about, and adds interesting content from your extended social circles\n\nIt's the first fully algorithmic feed that offers a twitter home like experience, but without the engagement hacking\n\n\u003e [!NOTE]  \n\u003e BlueJ is no longer maintained, but you can use this project as a template to create your custom feed for Bluesky.\n\n\n## Instructions\n\nTo run BlueJ, run the Memgraph database with:\n```\ndocker run -it -p 7687:7687 -p 7444:7444 memgraph/memgraph-mage\n```\n\nOr follow the instructions for your platform on https://memgraph.com/docs/memgraph/installation\n\n## Indexes\n\nIndexes are critical for performance, for each event that comes in the database needs to match user id's and post id's, and without indexes those take a looonnggg time (for a computer anyway), so once you have memgraph running, create indexes using this query:\n```\nCREATE INDEX ON :Person(did);\nCREATE INDEX ON :Person(handle);\nCREATE INDEX ON :Person(community_id);\nCREATE INDEX ON :Post(uri);\nCREATE INDEX ON :Person;\nCREATE INDEX ON :Post;\n```\n\n## Running\n\nOnce done, follow these steps to run:\n\n1) `git clone https://github.com/memgraph/bluej.git`\n2) `cd bluej`\n3) `npm i`\n4) `npm i -g ts-node`\n5) `cp .env.example .env`\n6) `ts-node src/index.ts`\n\nTo start creating your own feed, copy ./src/algos/home-plus.ts to a new file and register it in ./src/algos/index.ts. Restart ts-node and you should be able to call your feed by opening it up in your browser:\nhttp://localhost:3001/xrpc/app.bsky.feed.getFeedSkeleton?limit=20\u0026feed=at%3A%2F%2Fdid%3Aplc%3A2wqomm3tjqbgktbrfwgvrw34%2Fapp.bsky.feed.generator%2Fhome-plus\n\nReplace did:plc:ewgejell4547pukut5255ibm with the DID from your account (running `ts-node scripts/get-did.ts myhandle.bsky.social` can help you find it) and /home-plus with the name of your feed. If it works you should see an output like\n\n```\n{\n   \"cursor\": \"2500830::did:plc:ewgejell4547pukut5255ibm::20\",\n   \"feed\": [{\n      \"post\": \"at://did:plc:cak4klqoj3bqgk5rj6b4f5do/app.bsky.feed.post/3jxolhbl7ad2p\"\n   }, {\n      \"post\": \"at://did:plc:24lz3lshhmjsieafxih4exlw/app.bsky.feed.post/3jxofbiqcst2l\"\n   }, {\n      \"post\": \"at://did:plc:m2hze6zxa744iberzknpkc3i/app.bsky.feed.post/3jxoje7g57t2s\"\n   }, {\n      \"post\": \"at://did:plc:7eb2rkqterqn7zvs6r52jroz/app.bsky.feed.post/3jxolgv73hc2e\"\n   }, {\n      \"post\": \"at://did:plc:ydtsvzzsl6nlfkmnuooeqcmc/app.bsky.feed.post/3jxojj57p5w2l\"\n   }, {\n      \"post\": \"at://did:plc:hf7ezrajxadu7v3tzcyij424/app.bsky.feed.post/3jxolgpbd6u2w\"\n   }, {\n      \"post\": \"at://did:plc:l6arnocvhn2zrll2gn6xlxn2/app.bsky.feed.post/3jxoi34utet2s\"\n   }, {\n      \"post\": \"at://did:plc:oqbijttmayqui2xv3e2xwcdz/app.bsky.feed.post/3jxolgmf6x32u\"\n   }, {\n      \"post\": \"at://did:plc:hu2obebw3nhfj667522dahfg/app.bsky.feed.post/3jxoeyc7i3k2e\"\n   }, {\n      \"post\": \"at://did:plc:qvzn322kmcvd7xtnips5xaun/app.bsky.feed.post/3jxolgezvno2l\"\n   }, {\n      \"post\": \"at://did:plc:ydtsvzzsl6nlfkmnuooeqcmc/app.bsky.feed.post/3jxojxl2h3h2r\"\n   }, {\n      \"post\": \"at://did:plc:oqbijttmayqui2xv3e2xwcdz/app.bsky.feed.post/3jxolfi5tdl2s\"\n   }, {\n      \"post\": \"at://did:plc:siuuoqcskrsyg63qvqrgewtl/app.bsky.feed.post/3jxoj7hhlns2e\"\n   }, {\n      \"post\": \"at://did:plc:2gx2noukxzwmj6dkxbmh3qt5/app.bsky.feed.post/3jxolexxyzl2p\"\n   }, {\n      \"post\": \"at://did:plc:ydtsvzzsl6nlfkmnuooeqcmc/app.bsky.feed.post/3jxoime5o7q2e\"\n   }, {\n      \"post\": \"at://did:plc:hf7ezrajxadu7v3tzcyij424/app.bsky.feed.post/3jxolenqngs2e\"\n   }, {\n      \"post\": \"at://did:plc:s6j27rxb3ic2rxw73ixgqv2p/app.bsky.feed.post/3jxoh2ls34i2a\"\n   }, {\n      \"post\": \"at://did:plc:oqbijttmayqui2xv3e2xwcdz/app.bsky.feed.post/3jxolc4s5wl2s\"\n   }, {\n      \"post\": \"at://did:plc:hm4euky3y3a3dqrvstvbqakn/app.bsky.feed.post/3jxohoxpngh2r\"\n   }, {\n      \"post\": \"at://did:plc:7eb2rkqterqn7zvs6r52jroz/app.bsky.feed.post/3jxolb6pwwb2a\"\n   }]\n}\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemgraph%2Fbluej","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemgraph%2Fbluej","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemgraph%2Fbluej/lists"}