{"id":14957071,"url":"https://github.com/sashenjayathilaka/imessage-clone","last_synced_at":"2025-07-11T22:07:31.362Z","repository":{"id":64984862,"uuid":"527799360","full_name":"SashenJayathilaka/iMessage-Clone","owner":"SashenJayathilaka","description":"Realtime Chat App (iMessage Clone) with NextJS, GraphQL, NodeJS, MongoDB, Prisma, TypeScript, NextAuth.js, Google Authentication, Chakra UI, (1-1 Messaging, Real Time Messaging, Creating chat conversation, joining chat conversation, Leaving chat conversation)","archived":false,"fork":false,"pushed_at":"2023-04-09T00:38:33.000Z","size":7943,"stargazers_count":56,"open_issues_count":0,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-04T00:05:12.822Z","etag":null,"topics":["apollo-client","apollo-server","body-parser","chakra-ui-react","cors","dotenv","express","framer-motion","graphql","graphql-subscriptions","graphql-tag","graphql-tools","graphql-ws","lodash-merge","next-auth-adapter","next-js","prisma","react-hot-toast","react-js","typescript"],"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/SashenJayathilaka.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":"2022-08-23T02:09:08.000Z","updated_at":"2025-06-13T09:19:51.000Z","dependencies_parsed_at":"2024-09-26T17:41:42.906Z","dependency_job_id":"5f375444-d716-43d7-9772-f9f04bfa9ae4","html_url":"https://github.com/SashenJayathilaka/iMessage-Clone","commit_stats":{"total_commits":36,"total_committers":1,"mean_commits":36.0,"dds":0.0,"last_synced_commit":"116099997f01f08014b423ec06d5fbe8525110bc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SashenJayathilaka/iMessage-Clone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FiMessage-Clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FiMessage-Clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FiMessage-Clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FiMessage-Clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SashenJayathilaka","download_url":"https://codeload.github.com/SashenJayathilaka/iMessage-Clone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SashenJayathilaka%2FiMessage-Clone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264904576,"owners_count":23681231,"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":["apollo-client","apollo-server","body-parser","chakra-ui-react","cors","dotenv","express","framer-motion","graphql","graphql-subscriptions","graphql-tag","graphql-tools","graphql-ws","lodash-merge","next-auth-adapter","next-js","prisma","react-hot-toast","react-js","typescript"],"created_at":"2024-09-24T13:14:02.643Z","updated_at":"2025-07-11T22:07:31.339Z","avatar_url":"https://github.com/SashenJayathilaka.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003cimg src=\"https://user-images.githubusercontent.com/99184393/214863304-edd5e3d9-ac65-4c6e-8697-5424f89c0368.png\" alt=\"logo\" width=\"200\" height=\"auto\" /\u003e\n  \n  \u003ch1\u003eiMessage Clone\u003c/h1\u003e\n\n  \u003cp\u003e\nRealtime Chat App (iMessage Clone) with NextJS, GraphQL, NodeJS, MongoDB, Prisma, TypeScript, NextAuth.js, Google Authentication, Chakra UI, (1-1 Messaging, Real Time Messaging, Creating chat conversation, joining chat conversation, Leaving chat conversation).\n  \u003c/p\u003e\n  \n  \n\u003c!-- Badges --\u003e\n\n![](https://img.shields.io/badge/Maintained-Yes-indigo)\n![](https://img.shields.io/github/forks/SashenJayathilaka/iMessage-Clone.svg)\n![](https://img.shields.io/github/stars/SashenJayathilaka/iMessage-Clone.svg)\n![](https://img.shields.io/github/issues/SashenJayathilaka/iMessage-Clone)\n![](https://img.shields.io/github/last-commit/SashenJayathilaka/iMessage-Clone)\n\n\u003ch4\u003e\n    \u003ca href=\"\"\u003eView Demo\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/iMessage-Clone/blob/main/README.md\"\u003eDocumentation\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/iMessage-Clone/issues\"\u003eReport Bug\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/SashenJayathilaka/iMessage-Clone/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- Table of Contents --\u003e\n\n## :notebook_with_decorative_cover: Table of Contents\n\n- [About the Project](#star2-about-the-project)\n  - [Screenshots](#camera-screenshots)\n  - [Tech Stack](#space_invader-tech-stack)\n  - [Environment Variables](#key-environment-variables)\n- [Getting Started](#toolbox-getting-started)\n  - [Prerequisites](#bangbang-prerequisites)\n  - [Installation](#gear-installation)\n  - [Run Locally](#running-run-locally)\n  - [Deployment](#triangular_flag_on_post-deployment)\n- [Contact](#handshake-contact)\n\n\u003c!-- About the Project --\u003e\n\n## :star2: About the Project\n\n\u003c!-- Screenshots --\u003e\n\n### :camera: Screenshots\n\n- Google Authentication using Next Auth\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"\"\u003e\u003cimg width='800' src='./demo/demoOne.gif' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n- Searching \u0026 Creating chat conversation\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\u003cimg width='800' src='./demo/demoTwo.gif' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n- 1-1 Messaging, Real Time Messaging \u0026 joining chat conversation\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\u003cimg width='800' src='./demo/demoThree.gif' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n- 1-1 Messaging, Real Time Messaging \u0026 joining chat conversation\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\u003cimg width='800' src='./demo/demoThree.gif' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n- Leaving chat conversation\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\u003cimg width='800' src='./demo/demoFive.gif' alt='image'/\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)\n![forthebadge](https://forthebadge.com/images/badges/for-you.svg)\n![forthebadge](https://forthebadge.com/images/badges/powered-by-coffee.svg)\n\n### :space_invader: Tech Stack\n\n\u003cdetails\u003e\n  \u003csummary\u003eClient\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://#/\"\u003eTypescript\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://nextjs.org/\"\u003eNext.js\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://reactjs.org/\"\u003eReact.js\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://chakra-ui.com/\"\u003eChakra UI\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.prisma.io\"\u003ePrisma\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.apollographql.com\"\u003eApollo\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBackend\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://www.mongodb.com\"\u003eMongoDB\u003c/a\u003e\u003c/li\u003e\n     \u003cli\u003e\u003ca href=\"https://www.prisma.io\"\u003ePrisma\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://www.apollographql.com\"\u003eApollo\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cbr /\u003e\n\n\u003ca href=\"#facebook\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original.svg\" alt=\"Facebook\" width=\"30\" height=\"30\"/\u003e\u003c/a\u003e\n\u003ca href=\"#instagram\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/183096870-fdf58e59-d78c-44f4-bd1c-f9033c16d907.png\" alt=\"Instagram\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#instagram\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/187247836-8df8fb4e-074c-4f3a-a150-555108f4c2c7.png\" alt=\"Instagram\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/181918664-569af962-756c-438c-b350-294f042e6f61.png\" alt=\"Instagram\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/214866214-341bd8aa-9028-46e6-b692-3fcfca33c129.png\" alt=\"Instagram\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/180462270-ea4a249c-627c-4479-9431-5c3fd25454c4.png\" alt=\"Instagram\" width=\"30\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/214867700-a566dce6-180d-46dc-a7f2-0ef9b43bb797.png\" alt=\"Instagram\" width=\"\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/204170976-0e5c6e2a-2b41-483d-adbd-d5d1e40b8d15.png\" alt=\"Instagram\" width=\"\" height=\"30\" /\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/99184393/214867309-7b59fa0e-c872-484e-bc8f-462896c54d2a.png\" alt=\"Instagram\" width=\"\" height=\"30\" /\u003e\u003c/a\u003e\n\n## :toolbox: Getting Started\n\n### :bangbang: Prerequisites\n\n- Sign up for a MongoDB account \u003ca href='https://www.mongodb.com'\u003eHERE\u003c/a\u003e\n- Install Node JS in your computer \u003ca href='https://nodejs.org/en/'\u003eHERE\u003c/a\u003e\n\n\u003c!-- Env Variables --\u003e\n\n### :key: Environment Variables\n\nTo run this project, you will need to add the following environment variables to your .env file\n\n##### Frontend\n\n`NEXTAUTH_URL`\n\n`NEXTAUTH_SECRET`\n\n`GOOGLE_CLIENT_ID`\n\n`GOOGLE_CLIENT_SECRET`\n\n`NODE_ENV`\n\n`MONGODB_URI`\n\n`NEXT_PUBLIC_BASE_URL`\n\n##### Backend\n\n`CLIENT_ORIGIN`\n\n`MONGODB_URI`\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n### :gear: Installation\n\n![](https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB)\n![](https://img.shields.io/badge/next.js-20232A?style=for-the-badge\u0026logo=next.js\u0026logoColor=61DAFB)\n\nInstall my-project with npm\n\n```\nnpx create-next-app@latest --ts my-project\n```\n\n```\ncd my-project\n```\n\nInstall dependencies\n\n### In your Next.js project, install Chakra UI\n\n![](https://img.shields.io/badge/UI-Chakra%20UI-green)\n\n#### Installation\n\nIn your Next.js project, install Chakra UI by running either of the following:\n\n```bash\nnpm i @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^6\n```\n\nProvider Setup\nAfter installing Chakra UI, you need to set up the `ChakraProvider` at the root of your application.\n\nGo to `pages/_app.js` or `pages/_app.tsx` (create it if it doesn't exist) and wrap the `Component` with the `ChakraProvider`:\n\n```ts\n// pages/_app.js\nimport { ChakraProvider } from \"@chakra-ui/react\";\n\nfunction MyApp({ Component, pageProps }) {\n  return (\n    \u003cChakraProvider\u003e\n      \u003cComponent {...pageProps} /\u003e\n    \u003c/ChakraProvider\u003e\n  );\n}\n\nexport default MyApp;\n```\n\n\u003ca href=\"https://chakra-ui.com/getting-started/nextjs-guide\" target=\"_blank\"\u003e🔷 Customizing theme \u0026 More\u003c/a\u003e\n\nInstall dependencies\n\n\u003ca href=\"https://github.com/SashenJayathilaka/iMessage-Clone/blob/main/Backend/package.json\" target=\"_blank\"\u003e🔶 Dependency Info (Backend)\u003c/a\u003e\n\u003ca href=\"https://github.com/SashenJayathilaka/iMessage-Clone/blob/main/frontend/package.json\" target=\"_blank\"\u003e🔶 Dependency Info (Frontend)\u003c/a\u003e\n\n\u003c!-- Run Locally --\u003e\n\n### :running: Run Locally\n\n![](https://img.shields.io/badge/GIT-E44C30?style=for-the-badge\u0026logo=git\u0026logoColor=white)\n\nClone the project\n\n```bash\n  git clone https://github.com/SashenJayathilaka/iMessage-Clone.git\n```\n\nchange directory\n\n```bash\n  cd iMessage-Clone\n```\n\nInstall dependencies\n\nFrontend \u0026 Backend\n\n```\ncd backend\n\u0026\ncd frontend\n```\n\n```bash\n  npm install\n```\n\nStart the server\n\nFrontend \u0026 Backend\n\n```\ncd backend\n\u0026\ncd frontend\n```\n\n```bash\n  npm run dev\n```\n\n\u003chr /\u003e\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n\u003chr /\u003e\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.\n\n[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.\n\nThe `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.\n\n### Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n\u003c!-- Deployment --\u003e\n\n### :triangular_flag_on_post: Deployment\n\nTo deploy this project run\n\n##### Deploy on Vercel\n\n![](https://img.shields.io/badge/Vercel-000000?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n\n## :handshake: Contact\n\nSashen - [@twitter_handle](https://twitter.com/SashenHasinduJ) - sashenjayathilaka95@gmail.com\n\nProject Link: [https://github.com/SashenJayathilaka/iMessage-Clone.git](https://github.com/SashenJayathilaka/iMessage-Clone.git)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashenjayathilaka%2Fimessage-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsashenjayathilaka%2Fimessage-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashenjayathilaka%2Fimessage-clone/lists"}