{"id":15152460,"url":"https://github.com/jewel109/blog-server","last_synced_at":"2026-01-20T18:56:01.207Z","repository":{"id":247321714,"uuid":"825533971","full_name":"jewel109/blog-server","owner":"jewel109","description":"Blog Api with end to end testing for user to following other user, create blog post , real time news feed , notifications. Used event driven architecture in kafka, elasticsearch for fast search , mongodb for data storage and redis for caching ","archived":false,"fork":false,"pushed_at":"2024-10-07T05:04:16.000Z","size":436,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-13T13:18:32.964Z","etag":null,"topics":["docker-compose","elasticsearch","endtoendtesting","jest","kafka","mongodb","redis","rest-api","tyepscript","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/jewel109.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,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T03:01:35.000Z","updated_at":"2024-09-18T04:02:29.000Z","dependencies_parsed_at":"2024-07-26T03:27:50.780Z","dependency_job_id":"8a2872a2-e733-453f-8dce-31b129d289ec","html_url":"https://github.com/jewel109/blog-server","commit_stats":null,"previous_names":["jewel109/blog-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewel109%2Fblog-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewel109%2Fblog-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewel109%2Fblog-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewel109%2Fblog-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jewel109","download_url":"https://codeload.github.com/jewel109/blog-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247639455,"owners_count":20971541,"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":["docker-compose","elasticsearch","endtoendtesting","jest","kafka","mongodb","redis","rest-api","tyepscript","unit-testing"],"created_at":"2024-09-26T16:01:56.039Z","updated_at":"2026-01-20T18:56:01.190Z","avatar_url":"https://github.com/jewel109.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blog API Uses\n\n- allows users to following each other after getting authorized\n- allows users to creating blog posts\n- allows users to access real-time news feed\n- allows users to receive instant notifications\n- used event driven architecture\n- End to End test to all the api\n\n# Installation\n\nDocker-compose is used for installing mongodb, elastic search, redis, kafka\n\nyou can build and run the container after cloning the repo by following command\n\n```shell\ndocker compose up --build\n```\n\nyou can install the dependencies of the api by running\n\n```shell\npnpm install # pnpm must be in your path if not use npm \n\n```\n\nYou have to need a **env** file to run the server and you have to keep the env file in `config` directory.\n\njust copy the `.env.example` to `.config/test.env`\n\nThen run\n\n```shell\npnpm start\n```\n\nFinally go to other terminal and run\n\n```shell\npnpm run consume # kafka consumer will subscripe to topics and handle the messages\n```\n\nNow the api server is ready\n\nFor Test you can run\n\n```shell\nnpm test\n```\n\n## Technology used\n\nkafkajs,nodejs redis client, nodejs elastic search client , mongoose, expressjs, typescript, jsonwebtoken\n\n## Api end points are bellow\n\n**For Register**\n`POST http://localhost:3025/api/v1/register`\nrequest body\n\n```json\n{\n  \"name\": \"jewel\", \"email\": \"jewel@gmail.com\", \"password\": \"1253\"\n}\n```\n\n**For Login**\n`POST http://localhost:3025/api/v1/login`\nrequest body\n\n```json\n{\n   \"email\": \"jewel@gmail.com\", \"password\": \"1253\"\n}\n```\n\n**For following a User**\n`POST http://localhost:3025/api/v1/me/follow`\nrequest body\n\n```json\n{\n   \"followeeEmail\": \"jewel@gmail.com\", \n}\n```\n\nRequest Header\n\n```shell\nAuthorization: bearer token\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjewel109%2Fblog-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjewel109%2Fblog-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjewel109%2Fblog-server/lists"}