{"id":21124890,"url":"https://github.com/pararell/eshop_mean","last_synced_at":"2025-10-14T13:39:25.476Z","repository":{"id":40305193,"uuid":"257941046","full_name":"pararell/eshop_mean","owner":"pararell","description":"🛒 Ecommerce MEAN Stack ( MongoDB, Express and Node in Nest.js, Angular 20 SSR zoneless ) - render.com : https://eshop-mean.onrender.com/","archived":false,"fork":false,"pushed_at":"2025-08-08T18:56:45.000Z","size":6366,"stargazers_count":112,"open_issues_count":3,"forks_count":53,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-08T20:51:15.493Z","etag":null,"topics":["angular","cart","cloudinary","dashboard","docker","ecommerce","eshop","express","fullstack","google-login","heroku","jwt","mean-stack","mongodb","mongoose","nestjs","nodejs","schema-org","stripe","typescript"],"latest_commit_sha":null,"homepage":"https://eshop.privatelibrary.eu/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pararell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2020-04-22T15:24:34.000Z","updated_at":"2025-08-08T18:56:58.000Z","dependencies_parsed_at":"2023-02-09T08:46:44.210Z","dependency_job_id":"8718a01f-f5e8-4940-a463-82e8d18bea21","html_url":"https://github.com/pararell/eshop_mean","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pararell/eshop_mean","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararell%2Feshop_mean","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararell%2Feshop_mean/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararell%2Feshop_mean/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararell%2Feshop_mean/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pararell","download_url":"https://codeload.github.com/pararell/eshop_mean/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararell%2Feshop_mean/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018723,"owners_count":26086612,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["angular","cart","cloudinary","dashboard","docker","ecommerce","eshop","express","fullstack","google-login","heroku","jwt","mean-stack","mongodb","mongoose","nestjs","nodejs","schema-org","stripe","typescript"],"created_at":"2024-11-20T04:18:23.907Z","updated_at":"2025-10-14T13:39:25.458Z","avatar_url":"https://github.com/pararell.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![MEAN](https://res.cloudinary.com/dnpgh1vhi/image/upload/v1615640124/logo1_gvrmpd.svg) \n\n# Eshop template\n![Lines of code](https://img.shields.io/tokei/lines/github/pararell/eshop_mean)\n![GitHub repo size](https://img.shields.io/github/repo-size/pararell/eshop_mean)\n![GitHub package.json version](https://img.shields.io/github/package-json/v/pararell/eshop_mean)\n![GitHub Repo stars](https://img.shields.io/github/stars/pararell/eshop_mean?style=social)\n\n## Server : \u003cimg src=\"https://d33wubrfki0l68.cloudfront.net/e937e774cbbe23635999615ad5d7732decad182a/26072/logo-small.ede75a6b.svg\" alt=\"nest.js\" width=\"50\"/\u003e Nest.js with Express and \u003cimg src=\"https://webassets.mongodb.com/_com_assets/cms/mongodb_logo1-76twgcu2dm.png\" alt=\"mongoDB\" width=\"150\"\u003e MongoDB (Mongoose)\n## Client : \u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Angular_full_color_logo.svg/1200px-Angular_full_color_logo.svg.png\" alt=\"angular\" width=\"60\"\u003e Angular (Server-side rendering)\n\n## Description\n- Eshop with products and administration\n- Typescript stack with decorators, use MongoDB and mongoose schemas, JWT Passport\n- Theming with css variables\n\n![eshop-mean](https://res.cloudinary.com/dnpgh1vhi/image/upload/v1629725636/eshop-mean.png)\n\n## Blog\n- more info in blog [https://miroslavsmrtic.sk/blogs](https://miroslavsmrtic.sk/blogs)\n\n\u003cimg alt=\"eshop-mean setup\" src=\"https://res.cloudinary.com/dnpgh1vhi/image/upload/v1629726575/Isometric_illustration_design_concept_loading_and_maintenance_process_kjtxck.jpg\" height=\"200\" style=\"margin: 0; padding: 0;\"\u003e\n\n## Installation \n\nOne package.json contain now all neccessary for Nest and Angular, so server-side rendering with Angular is possible\n\n```bash\n$ npm install\n```\n\n## Running the app\n\n```bash\n# development - start BE - port 4000\n$ npm run start:dev\n\n# development - start FE - port 3000\n$ npm run start:client\n\n# watch mode server\n$ npm run start:dev\n\n# build ssr and serve\n$ npm run build\n$ npm run start\n```\n\nFor another commands look to package.json\n\n## Set enviroment for BE \n\n- Rename .env.example to .env\n\n```bash\n# BE HOST\nPORT=4000\nSERVER_URL=\"http://localhost:4000\"\n\n# FE HOST\nORIGIN=\"http://localhost:3000\"\n\n# JWT settings\nJWT_EXPIRATION=\"7d\"\nJWT_SECRET=\"youhavetochoseone\"\n\nCOOKIE_KEY=\"youhavetochoseone\"\n\n# DB URI\nMONGO_URI=\"mongodb://{user}:{password}@{host}:{port}/{databaseName}\"\n\n# Emails\nSENDGRID_KEY=\"set if you want have notification for order or contact from https://sendgrid.com (ADMIN_EMAILS and user will get notification)\"\n\n# Images\nCLOUDINARY_NAME=\"set name from cloudinary api https://cloudinary.com (for images upload)\"\nCLOUDINARY_KEY=\"set key from cloudinary api  https://cloudinary.com (for images upload)\"\nCLOUDINARY_SECRET=\"set secret from cloudinary api https://cloudinary.com (for images upload)\"\n\n# Pay\nSTRIPE_PUBLISHABLE_KEY=\"set for paying with card for orders with stripe https://stripe.com\"\nSTRIPE_SECRETKEY=\"set for paying with card for orders with stripe https://stripe.com\"\n\n# Google login\nGOOGLE_CLIENT_ID=\"set for google login activation\"\nGOOGLE_CLIENT_SECRET=\"set for google login activation\"\n\n# Admin emails get notification from sendgrid when order or contact are submitted\nADMIN_EMAILS=\"your@email.com, another@mail.com\"\n\n# Recaptcha server key from google\nRECAPTCHA_SERVER_KEY=\"RECAPTCHA_SERVER_KEY\"\n\n# Get location from IP - https://geolocation-db.com\nGEO_LOCATION_API_KEY=\"GEO_LOCATION_API_KEY\"\n\n# FE ENV SEND FROM BE\nFE_STRIPE_PUBLISHABLE_KEY=\"FE_STRIPE_PUBLISHABLE_KEY\"\nFE_TINYMCE_API_KEY=\"FE_TINYMCE_API_KEY\"\nFE_RECAPTCHA_CLIENT_KEY=\"FE_RECAPTCHA_CLIENT_KEY\"\n```\n## Docker\n\n```bash\n# pull docker\ndocker pull pararel/eshop-mean:latest\n\n# run docker with env file\ndocker run --env-file $PathToEnv --network=host pararel/eshop-mean:latest\n\n# run docker with env set in cmd line\ndocker run --e MONGO_URI=mongodbUrl --e OTHER_ENV=otherEnvValue --network=host pararel/eshop-mean:latest\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpararell%2Feshop_mean","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpararell%2Feshop_mean","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpararell%2Feshop_mean/lists"}