{"id":19417945,"url":"https://github.com/lehcode/angular-fullstack-pro-starter","last_synced_at":"2026-04-11T01:04:02.753Z","repository":{"id":155784534,"uuid":"613127145","full_name":"lehcode/angular-fullstack-pro-starter","owner":"lehcode","description":"A public starter kit for building applications with NestJS and Angular with i18n support | A mix of Node.js, Docker, and MongoDB | Serverless deployment included","archived":false,"fork":false,"pushed_at":"2024-05-02T17:33:54.000Z","size":1434,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-07T17:25:26.369Z","etag":null,"topics":["angular","aws-lambda","boilerplate","docker","i18n","i18next","i18next-backend","mongodb","nestjs","nodejs","redis","starter-kit"],"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/lehcode.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":"2023-03-12T23:59:32.000Z","updated_at":"2024-02-20T16:34:22.000Z","dependencies_parsed_at":"2024-04-23T23:39:01.914Z","dependency_job_id":"8e4d5297-ab57-4b23-bedf-689b90e8988b","html_url":"https://github.com/lehcode/angular-fullstack-pro-starter","commit_stats":{"total_commits":8,"total_committers":2,"mean_commits":4.0,"dds":0.125,"last_synced_commit":"5ca6df316c77156d6f923f249ff21af0b96979a7"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehcode%2Fangular-fullstack-pro-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehcode%2Fangular-fullstack-pro-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehcode%2Fangular-fullstack-pro-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehcode%2Fangular-fullstack-pro-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lehcode","download_url":"https://codeload.github.com/lehcode/angular-fullstack-pro-starter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240599184,"owners_count":19826959,"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":["angular","aws-lambda","boilerplate","docker","i18n","i18next","i18next-backend","mongodb","nestjs","nodejs","redis","starter-kit"],"created_at":"2024-11-10T13:12:07.376Z","updated_at":"2026-04-11T01:04:02.672Z","avatar_url":"https://github.com/lehcode.png","language":"TypeScript","funding_links":["https://www.patreon.com/lehcode","https://opencollective.com/nestjs-and-angular-starter"],"categories":[],"sub_categories":[],"readme":"# NestJS \u0026 Angular Development Starter Boilerplate\n\nThis NestJS and Angular starter boilerplate is designed to help you quickly set up a single application for development using Docker Compose, MongoDB, MySQL, Redis, and AWS Lambda. The boilerplate includes configuration for code linting and testing pipelines for Bitbucket. Whether you deploy to containers or not,  containers make a great development environment because you can:\n\n- Develop with a consistent, easily reproducible toolchain on the same operating system you deploy to.\n- Quickly swap between different, separate development environments and safely make updates without worrying about impacting your local machine.\n- Make it easy for new team members / contributors to get up and running in a consistent development environment.\n- Try out new technologies or clone a copy of a code base without impacting your local setup.\n\n**NOTICE: Starter is supposed to use in development, testing or staging environments. DO NOT use it for production even if the effort was made to use the best security practices.**\n\n## What's Inside?\n\nThe nest-angular-starter provides a foundational setup for a full-stack development environment, integrating:\n\n - **NestJS**: A progressive Node.js framework for building efficient and scalable server-side applications.\n - **Angular**: A platform for building mobile and desktop web applications using TypeScript/HTML/CSS.\n\n### Key Features\n\n - **Boilerplate Code**: Get up and running with pre-configured boilerplate code for both NestJS and Angular.\n - **Language Support**: The project primarily uses TypeScript, with a mix of HTML, JavaScript, Dockerfile, SCSS, and Shell for a comprehensive development experience.\n - **Docker Integration**: Simplify your development and deployment workflow with Dockerfile configurations.\n - **i18n Support**: Internationalization is baked in, allowing for easy localization of your applications.\n - **Database Ready**: Integration with MongoDB for building applications with a NoSQL database.\n - **Cloud Functions**: AWS Lambda support for creating serverless functions.\n - **Starter Kit**: A perfect starting point for both learning and building enterprise-grade applications.\n\nProvides the `docker-compose.yml` file, the configuration file for [Docker Compose](https://docs.docker.com/compose/),\na tool for defining and running multi-container Docker applications. The file specifies the Docker services (`API`, `UI`, `MongoDB`,\n`MySQL`, `Redis`) that should be created, and their configurations.\n\nThe system includes both [MongoDB](https://www.mongodb.com/docs/) and [MySQL](https://dev.mysql.com/doc/refman/8.0/en/)\nDocker services, which are used as databases for the NestJS application. Depending on the needs of the application,\neither or both of these services can be used.\n\nThe [Redis](https://redis.io/docs/about/) service is used as a caching server for the NestJS application, which can\nimprove performance by caching frequently accessed data in memory.\n\n[NestJS](https://docs.nestjs.com/) is a Node.js web framework that is used to build the API service in this system. The\npre-configured connections to MongoDB, MySQL, and Redis allow the NestJS application to interact with these\nservices out of the box.\n\nThe system includes configuration for [AWS Lambda](https://aws.amazon.com/lambda/) and other cloud services using the\nserverless framework, which is a popular tool for building and deploying serverless applications.\n\nThe system also includes code linting and testing pipelines for\n[Bitbucket](https://bitbucket.org/product/features/pipelines), which is a web-based hosting service for\n[Git](https://git-scm.com/about) repositories.\n\n## What It Does?\n\n1. Downloads all software images `$ docker compose up`.\n2. Creates containers for Docker services: `api`, `ui`, `mongo`, `mysql`, `redis`.\n3. Set unified timezone across all containers, Etc/UTC by default.\n4. Mounts `api` and `ui` directories into API and UI containers respectively. From now on while environment is running, all changes on host filesystem in `api` and `ui` directories will be reflected in containers and vice versa. Folders are unmounted from container when `Ctrl+C` is pressed in terminal running `docker compose`, or `docker compose down` run.\n5. Installs all NPM packages with Yarn.\n6. Starts both `api` and `ui` Docker services in watch mode, with backends, completely ready for development.\n\n## What It Provides?\n\n### NestJS\n\n- Application configuration service loads config from `.ts` file which in turn utilizes environment variables to configure application.\n- [i18next](https://www.i18next.com/overview/getting-started) library and locale middleware with locale service to use multiple languages in your NestJS project.\n- Authorized administration API endpoints with [bcrypt](https://github.com/kelektiv/node.bcrypt.js#readme) password encryption.\n- Pre-configured Mongo database service using [Mongoose](https://mongoosejs.com/docs/).\n- `mongosh` to manually connect to MongoDB from container if needed, and debug queries using command line.\n- Pre-configured MySQL service utilizes [@nestjs/typeorm](https://docs.nestjs.com/techniques/database).\n- AWS Lambda configuration environment variables included in `.env` file.\n- Application logger service.\n\n### Angular\n\n- [Angular Material](https://material.angular.io/guide/getting-started) theme and styling.\n- [Compodoc](https://compodoc.app/) documenting.\n\n## Prerequisites\n\nThis is simple, as you only need **Docker** with Docker Compose installed on your system and NodeJS\u003e=16.14.0.\nCompose should be installed with Docker engine by default. Run `$ docker compose` to see similar output:\n\n```shell\n$ docker compose\n\nUsage:  docker compose [OPTIONS] COMMAND\n...\n```\n\nCheck Docker version installed on your system:\n\n```shell\n$ docker -v\nDocker version 20.10.24, build 297e128\n```\n\n## Setup\n\n1. Create project directory `$ mkdir starter`\n2. Clone the [NestJS \u0026 Angular starter boilerplate repository](https://github.com/lehcode/nest-angular-starter) onto your computer by running the command `$ git clone git@github.com:lehcode/nest-angular-starter.git ./starter`\n3. Copy `docker-compose.yml.dist` to `docker-compose.yml` and update `container_name` property and other values if you need. DO NOT change the `hostname` property as it may break connectivity to servers.\n4. Create file `starter/.env` by copying `starter/.env.dist`. Use following command in project root directory `cp .env.dist .env`.\n5. Use empty value for `$DEBUG` environment variable in `starter/.env` file to disable debug output. Debug is enabled by default.\n6. Adjust variables values in `.env` file as needed.\n\n## WSL\n\nYou MAY need to update current user name, UID, Docker group name and GID mappings in `.env` File. Permissions and access issues are possible otherwise; it is advised to use defaults first though.\n\n### How to get Docker User and Group Environment Variables?\n\nYou may need them to adjust `$HOST_DOCKER_GROUP` and `$HOST_DOCKER_GID` environment variables. Use `$ getent group docker`. If the docker group exists, the command will output information about the group, including its name, group ID, and the usernames of any users that are members of the group. If the docker group does not exist, the command will not produce any output.\n\n```shell\n$ getent group docker\ndocker:x:1001:dev\n```\n\n#### Breakdown\n\n`docker:x:1001:dev` is a single line entry in the `/etc/group` file on a Linux system.\n\nHere's what each field in the entry means:\n\n- `docker`: This is the **name** of the group.\n- `x`: This field used to contain an encrypted password for the group, but is no longer used and is typically set to `x`.\n- `1001`: This is the **group ID (GID)** of the `docker` group. GIDs are used to uniquely identify groups on a Linux system.\n- `dev`: This is a comma-separated list of usernames that are members of the docker group. In this case, the only member of the group is the user `dev`.\n\nThen replace empty values in `.env` with your required ones.\n\n## Run Project\n\nYou can run all services at once with `docker compose up`.\n\nAltenatively you can start **NestJS API service** with DB's and cache with `docker compose up api`. This will start API service with MongoDb and MySQL backends, and Redis caching server.\n\nTo start **Angular UI service** just use `docker compose up ui`.\n\n## That's It\n\nCheck if required containers are started (all in my case):\n\n```shell\n$ docker ps\nCONTAINER ID   IMAGE                  COMMAND                  CREATED             STATUS          PORTS                                                                                            NAMES\nf7d404320dee   starter/api:dev        \"docker-entrypoint.s…\"   41 minutes ago      Up 31 seconds   0.0.0.0:3000-\u003e3000/tcp, 0.0.0.0:3443-\u003e3443/tcp, 0.0.0.0:9229-\u003e9229/tcp                           starter-api-dev\n22ca57777403   starter/ui:dev         \"docker-entrypoint.s…\"   43 minutes ago      Up 30 seconds   0.0.0.0:4000-\u003e4000/tcp, 0.0.0.0:4200-\u003e4200/tcp, 0.0.0.0:4300-\u003e4300/tcp, 0.0.0.0:9222-\u003e9222/tcp   starter-ui-dev\n5e69999a6aed   starter/redis:7.0.10   \"docker-entrypoint.s…\"   About an hour ago   Up 32 seconds   0.0.0.0:6379-\u003e6379/tcp                                                                           starter-redis\nac0eb591f839   starter/mysql:8.0      \"docker-entrypoint.s…\"   About an hour ago   Up 31 seconds   0.0.0.0:3306-\u003e3306/tcp, 3306/tcp                                                                starter-mysql\n70fdb1da25ea   starter/mongo:6.0      \"docker-entrypoint.s…\"   About an hour ago   Up 32 seconds   0.0.0.0:27017-\u003e27017/tcp                                                                         starter-mongo\n\n```\n\nHave fun with dev :-)\n\nIf you like starter, please support with small recurring donation at [Patreon](https://www.patreon.com/lehcode) or one-time donation at [Open Collective](https://opencollective.com/nestjs-and-angular-starter)\n\n### Notes on MongoDB\n\nConnection string to connect to MongoDB instance from host system:\n\n`mongodb://[Your_Username]:[YourPassw0rd]@localhost:[MONGO_PORT]/?authMechanism=DEFAULT`\n\nConnection string to connect to MongoDB container from inside any container:\n\n`mongodb://[Your_Username]:[YourPassw0rd]@mongo-db:[MONGO_PORT]/?authMechanism=DEFAULT`\n\n### TODO\n\n### TODO\n\n1. Code linting and testing pipelines for [GitLab](https://docs.gitlab.com/ee/ci/pipelines/).\n2. Docker multi-stage build configuration for production.\n3. [Locize](https://locize.com/) integration\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flehcode%2Fangular-fullstack-pro-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flehcode%2Fangular-fullstack-pro-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flehcode%2Fangular-fullstack-pro-starter/lists"}