{"id":25442125,"url":"https://github.com/techcell-project/tech-cell-server","last_synced_at":"2025-11-01T14:30:24.503Z","repository":{"id":174290559,"uuid":"649965676","full_name":"TechCell-Project/tech-cell-server","owner":"TechCell-Project","description":"Back-end application for TechCell","archived":false,"fork":false,"pushed_at":"2024-03-20T12:57:16.000Z","size":25026,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"development","last_synced_at":"2024-03-20T21:42:15.358Z","etag":null,"topics":["docker","i18n","letsencrypt","microservice","mongodb","nest","nestjs","nginx","nodejs","rabbitmq","redis","swagger","typescript"],"latest_commit_sha":null,"homepage":"https://api.techcell.cloud","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/TechCell-Project.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}},"created_at":"2023-06-06T03:17:59.000Z","updated_at":"2024-01-14T05:08:20.000Z","dependencies_parsed_at":"2023-09-21T21:59:11.629Z","dependency_job_id":"c2d75112-2b0d-41e7-9e33-1ff86e749092","html_url":"https://github.com/TechCell-Project/tech-cell-server","commit_stats":null,"previous_names":["techcell-project/tech-cell-web-server","techcell-project/tech-cell-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechCell-Project%2Ftech-cell-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechCell-Project%2Ftech-cell-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechCell-Project%2Ftech-cell-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechCell-Project%2Ftech-cell-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TechCell-Project","download_url":"https://codeload.github.com/TechCell-Project/tech-cell-server/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239293927,"owners_count":19615043,"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","i18n","letsencrypt","microservice","mongodb","nest","nestjs","nginx","nodejs","rabbitmq","redis","swagger","typescript"],"created_at":"2025-02-17T13:16:55.077Z","updated_at":"2025-11-01T14:30:24.461Z","avatar_url":"https://github.com/TechCell-Project.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://nestjs.com/\" target=\"blank\"\u003e\u003cimg src=\"https://nestjs.com/img/logo-small.svg\" width=\"200\" alt=\"Nest Logo\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eA progressive \u003ca href=\"http://nodejs.org\" target=\"_blank\"\u003eNode.js\u003c/a\u003e framework for building efficient and scalable server-side applications.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/TechCell-Project/tech-cell-server\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/github/license/TechCell-Project/tech-cell-server\" alt=\"Project License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/TechCell-Project/tech-cell-server/actions/workflows/tech-cell-server-ci-cd.yml\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/TechCell-Project/tech-cell-server/actions/workflows/tech-cell-server-ci-cd.yml/badge.svg\" alt=\"Tech Cell Server CI/CD\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/TechCell-Project/tech-cell-server/actions/workflows/build-test-pull-request.yml\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/TechCell-Project/tech-cell-server/actions/workflows/build-test-pull-request.yml/badge.svg\" alt=\"Build and test on pull request\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://api.techcell.cloud\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/RESTful%20API-Online-green\" alt=\"RESTful API\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.techcell.cloud\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Documentation-Online-green\" alt=\"Documentation\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://design.techcell.cloud\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Source%20Code%20Docs-Online-green\" alt=\"Source Code Docs\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# 🚀 Deployed\n\n- RESTful API: [api.techcell.cloud](https://api.techcell.cloud)\n- Documentations: [docs.techcell.cloud](https://docs.techcell.cloud)\n- Source code docs: [architecture.techcell.cloud](https://architecture.techcell.cloud)\n\n# 📖 Description\n\nThis application is built using a microservices architecture with [Nest](https://nestjs.com/) and [RabbitMQ](https://www.rabbitmq.com/). It includes the following features:\n\n- **Infrastructure:**\n  - Monorepo with [Nest Monorepo](https://docs.nestjs.com/cli/monorepo#monorepo-mode)\n  - Containerization with [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/)\n  - Message Broker with [RabbitMQ](https://www.rabbitmq.com/)\n  - Cache with [Redis](https://redis.io/)\n  - Database with [MongoDB](https://www.mongodb.com/)\n  - Job queue with [BullMQ](https://bullmq.io/)\n  - Deploy with [Google Cloud](https://cloud.google.com/), [Azure](https://azure.microsoft.com/), and other cloud services\n  - CI/CD with [Github Actions](https://github.com/features/actions)\n  - Reverse proxy with [Nginx](https://www.nginx.com/)\n  - SSL with [Let's Encrypt](https://letsencrypt.org/), [ZeroSSL](https://zerossl.com/), and [Cloudflare](https://www.cloudflare.com/)\n  - High availability with [HAProxy](https://www.haproxy.org/)\n\n- **Features:**\n  - User, Profile, Product, Order, Category, Notification, Attribute, Cart, Otp management ...\n  - Transaction order with [Mongodb transaction](https://docs.mongodb.com/manual/core/transactions/) and distributed lock with [Redlock](https://redis.io/topics/distlock)\n  - Multi languages with [i18n](https://www.npmjs.com/package/i18n)\n  - Authentication with [JWT](https://jwt.io/)\n  - Login, sign up with Credentials (email verified), Google\n  - Storage with [Cloudinary](https://cloudinary.com/)\n  - Custom domain emails with [Sendgrid](https://sendgrid.com/), [Resend](https://resend.com/), and [Gmail](https://mail.google.com/)\n  - Notifications with [Socket.io](https://socket.io/), using job queue to send notifications\n  - Cron jobs to clean unused data\n  - Payment integration with [VNPay](https://vnpay.vn/)\n  - Shipping integration with [GiaoHangNhanh](https://ghn.vn/)\n\n\n# 📦 Installation\n\n## ⚡ Require installed\n\n- Docker, docker-compose ...\n- Or custom install:\n  * Nodejs: [nodejs 18](https://nodejs.org/en/blog/announcements/v18-release-announce)\n  * Package Manager: [yarn](https://yarnpkg.com/)\n  * Message Broker: [RabbitMQ](https://www.rabbitmq.com/)\n  * Database: [Mongodb](https://www.mongodb.com/) with [replica set mode](https://www.mongodb.com/docs/manual/replication/) or [mongodb atlas](https://www.mongodb.com/docs/atlas/)\n  * Cache: [Redis](https://redis.io/)\n\n## ⚠️ Attention:\n- [Ubuntu](https://ubuntu.com/) or [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) (Windows subsystems for Linux) is **recommended** for both development and production\n- Windows is **not** recommended, can use in development **not** for production\n\n## 📝 Before start\n\n- Copy the .env.example and rename to .env.\n- Change the default values to your own.\n\n## 🐳 With docker, docker-compose\n\n### 🔨 Services\n- Core services:\n  * Database\n  * Message Broker\n  * Reverse proxy\n- Application services (each folder in `apps` folder is a service):\n  * api\n  * auth\n  * search\n  * .etc..\n\n### Starting\n\n#### First, you need to start the core services\n```bash\nyarn up:core # start core services\n```\n\n#### Then, you can start the application services\n- `service_name` - optional: is the name of the service you want to start, by default it will start all services\n```bash\nyarn up:prod \u003cservice_name\u003e # start all services in production mode\n```\n\n### Stopping\n- `service_name` - optional: is the name of the service you want to start, by default it will start all services\n```bash\nyarn down:prod \u003cservice_name\u003e  # stop all services\n# or\nyarn down:core # stop core services\n```\n\n### Restart and rebuild\n- `service_name` - optional: is the name of the service you want to start, by default it will start all services\n```bash\nyarn restart:prod \u003cservice_name\u003e # restart and rebuild all services \n# or\nyarn restart:core # restart and rebuild core services\n```\n\n### Update the services\n- `service_name` - optional: is the name of the service you want to start, by default it will start all services\n- Update the services to the latest version from the docker registry\n- Make sure your github repository is up to date\n```bash\ngit pull # update the repository\n\nyarn update:prod \u003cservice_name\u003e # update core services\n```\n\n## 🦽 With manual run\n\n### Required\n- Make sure all the following core services have been installed and run successfully\n  * RabbitMQ: port 5672\n  * Mongodb: port 27017, replica set mode\n  * Redis: port 6379\n- Or you can run core services in docker and run app services manually\n- Or you can using cloud services like [mongodb atlas](https://www.mongodb.com/cloud/atlas), [redis cloud](https://redislabs.com/redis-enterprise-cloud/overview/), [rabbitmq cloud](https://www.cloudamqp.com/)\n\n### Starting\n- `service_name` - optional: is the name of the service you want to start, by default it is `api` service\n```bash\n# You can run core services in docker and run app services manually\n\nyarn start \u003cservice_name\u003e # start the service as normal mode\nyarn start:dev \u003cservice_name\u003e # start the service as development mode\nyarn start:prod \u003cservice_name\u003e # start the service as production mode\n```\n\n### Stopping\n```bash\n# Just CTRL-C to stop the service\n```\n\n### Use Docker\n\n- Check what is running on docker:\n```bash\ndocker ps -a\n```\n\n- Get the log of a container:\n```bash\ndocker logs \u003cCONTAINER_ID\u003e # get logs\n\ndocker logs -f \u003cCONTAINER_ID\u003e # get logs realtime\n# Remember to replace `\u003cCONTAINER_ID\u003e` with the actual ID of the container you want to inspect.\n```\n\n- To remove all containers, volumes, and images that are not currently running, you can use the following commands:\n```bash\ndocker container prune # remove all stopped containers\ndocker volume prune # remove all unused volumes\ndocker image prune # remove all unused images\n# or just one\ndocker system prune -a # remove all stopped containers and unused volumes, images\n```\n\n\n## 🦽 License\n\nNest is [MIT licensed](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechcell-project%2Ftech-cell-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechcell-project%2Ftech-cell-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechcell-project%2Ftech-cell-server/lists"}