{"id":19178622,"url":"https://github.com/marwanm-dev/devto-clone","last_synced_at":"2025-05-07T20:45:35.066Z","repository":{"id":59318495,"uuid":"507449064","full_name":"marwanm-dev/Devto-clone","owner":"marwanm-dev","description":"Dev.to clone","archived":false,"fork":false,"pushed_at":"2022-12-11T20:43:07.000Z","size":139112,"stargazers_count":91,"open_issues_count":0,"forks_count":20,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T20:45:25.912Z","etag":null,"topics":["axios","cloudinary","express","mern","mern-stack","mongodb","mongoose","node","oauth2","react","react-router","redux-persist","redux-toolkit","rtk-query","socket-io","styled-components","tailwind","tailwind-css"],"latest_commit_sha":null,"homepage":"https://marwanm-devto-clone.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-4-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marwanm-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-26T01:07:09.000Z","updated_at":"2024-09-13T16:22:10.000Z","dependencies_parsed_at":"2023-01-27T06:45:48.821Z","dependency_job_id":null,"html_url":"https://github.com/marwanm-dev/Devto-clone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marwanm-dev%2FDevto-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marwanm-dev%2FDevto-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marwanm-dev%2FDevto-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marwanm-dev%2FDevto-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marwanm-dev","download_url":"https://codeload.github.com/marwanm-dev/Devto-clone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252954144,"owners_count":21830895,"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":["axios","cloudinary","express","mern","mern-stack","mongodb","mongoose","node","oauth2","react","react-router","redux-persist","redux-toolkit","rtk-query","socket-io","styled-components","tailwind","tailwind-css"],"created_at":"2024-11-09T10:40:15.502Z","updated_at":"2025-05-07T20:45:35.044Z","avatar_url":"https://github.com/marwanm-dev.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://marwanm-devto-clone.vercel.app\"\u003e\n        \u003cimg src=\"https://user-images.githubusercontent.com/90101257/190815704-8d15a2f7-0eac-4a4e-9f39-26b093f5068c.png\" width=\"200\"\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ch1\u003eDev.to-clone\u003c/h1\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n\u003e A Dev.to clone created with MERN stack and more (Essentially FB without stories feature)\n\n\u003ca href=\"https://marwanm-devto-clone.vercel.app\"\u003e\n  \u003cimg src='https://user-images.githubusercontent.com/90101257/190000739-e824f9a6-2014-4df1-8aca-6ce64e11f4dd.PNG' /\u003e\n\u003c/a\u003e\n\n## Tech used with *vite*🔥:\n\n\u003e Frontend\n\n-   React\n-   Redux toolkit (Advanced RTK)\n-   Tailwind\n-   Styled components\n-   Framer motion\n-   React router\n-   Cloudinary (Image hosting)\n\n\u003e Backend\n\n-   MongoDB\n-   Express\n-   Node.js\n-   OAuth (Google/Github)\n-   JWT\n-   Socket.io (Real-time)\n-   Cloudinary\n-   Mongoose\n-   Axios\n\n## Features\n\n-   Login / Signup\n-   View / Edit Profile\n-   Google / Github OAuth\n-   Ultimate mobile responsiveness\n-   Real-time Notifications Toasted\n-   CRUD Posts / Comments / Replies / Tags\n-   Follow / Unfollow Users\n-   Follow / Unfollow Tags\n-   Like / Unicorn / Bookmark Posts\n-   Like comments\n-   Advanced Search engine for posts, people and tags\n-   Filter for posts\n-   Reading List\n-   Dashboard\n\n## Screenshots\n\n### Login / Signup / Edit / Delete\n\n![Login - Signup -Edit - Delete profile](https://user-images.githubusercontent.com/90101257/190129885-a618117c-71c5-48c8-a091-01e5f03266e3.gif)\n\n### Google / Github OAuth\n\n![Login OAuth](https://user-images.githubusercontent.com/90101257/190130170-31e95df0-86e9-4b79-8325-9bc3fcc3f164.gif)\n\n### Create / Update / Edit / Delete Posts\n\n![CRUD Posts](https://user-images.githubusercontent.com/90101257/190130345-68b6275c-743c-48da-9c65-e5c5515989d8.gif)\n\n### Reactions / Comments / Follows with Real-time notifications (Toasted)\n\n![Real time notifications - Reactions - Comments - Replies - Follows](https://user-images.githubusercontent.com/90101257/190132480-e07976d2-936a-49c2-897c-e6be5527b465.gif)\n\n### Tags / ReadingList\n\n![Tags - ReadingList](https://user-images.githubusercontent.com/90101257/190130607-7e6a7035-dc56-4dc7-b2e9-d2c6d00d5a87.gif)\n\n### Dashboard\n\n![Dashboard](https://user-images.githubusercontent.com/90101257/190119722-fb78a3ad-082c-45ad-b438-ee30606825ef.gif)\n\n### Search Engine\n\n![Search engine](https://user-images.githubusercontent.com/90101257/190130621-24249495-af37-4ecb-a57f-8909a5d13dbb.gif)\n\n## Live\n\n\u003e Client: https://marwanm-devto-clone.vercel.app\n\n\u003e Server: https://marwanm-devto-clone-server.onrender.com\n\n## How to setup locally\n\n### Clone Repo\n\nClone the repo to your local machine by `https://github.com/marwanm-dev/Devto-clone`\n\n### Setup\n\nInstall all dependencies in both `client` and `server` subdirectories by `npm i`\n\n```shell\n$ cd server \u0026\u0026 npm i\n$ cd client \u0026\u0026 npm i\n```\n\n### Create\n\nA MongoDB database either locally or online via \u003ca href='https://www.mongodb.com/cloud/atlas'\u003eMongoDB Atlas\u003c/a\u003e\n\nA \u003ca href=\"https://cloudinary.com/\"\u003eCloudinary account\u003c/a\u003e\n\nA new project on \u003ca href='https://console.cloud.google.com'\u003eGoogle Cloud Platform\u003c/a\u003e\n\nA `.env` file in in both `client` and `server` subdirectories\n\nENV variables\n\n`client/.env`:\n\n```js\nBASE_URL=\nGOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}\nGITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}\nGITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}\n```\n\n`server/.env`:\n\n```js\nACCESS_TOKEN_SECRET=\nREFRESH_TOKEN_SECRET=\n\nCLIENT_URL=\n\nGOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}\nGITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}\nGITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}\n\nDB_NAME=\nDB_USER=\nDB_PASSWORD=\n\nCLOUDINARY_CLOUD_NAME=\nCLOUDINARY_API_KEY=\nCLOUDINARY_API_SECRET=\nCLOUDINARY_DEFAULT_URL= // default image url\nCLOUDINARY_DEFAULT_PUBLIC_ID= // default image public_id\n```\n\nFinally, run \u003ccode\u003enpm run stack\u003c/code\u003e on the root of the two subdirectories\n\n## Credit\n\n\u003e Dev.to clone by me\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarwanm-dev%2Fdevto-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarwanm-dev%2Fdevto-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarwanm-dev%2Fdevto-clone/lists"}