{"id":20016554,"url":"https://github.com/antonio-marasescu/sanctumlab","last_synced_at":"2026-04-06T21:31:34.685Z","repository":{"id":262523466,"uuid":"874141535","full_name":"antonio-marasescu/sanctumlab","owner":"antonio-marasescu","description":"Sanctum Lab is a versatile homelab software suite for efficient home content management","archived":false,"fork":false,"pushed_at":"2025-02-12T22:14:47.000Z","size":1176,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T02:47:11.716Z","etag":null,"topics":["angular","aws-lambda","cdk","cognito","docker","dynamodb","git-hooks","home-webapp","nx","serverless","storybook"],"latest_commit_sha":null,"homepage":"","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/antonio-marasescu.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-17T10:20:35.000Z","updated_at":"2025-02-12T22:14:51.000Z","dependencies_parsed_at":"2024-12-12T19:31:22.038Z","dependency_job_id":"c1a71183-5ad9-4a81-ad00-e8132b783323","html_url":"https://github.com/antonio-marasescu/sanctumlab","commit_stats":null,"previous_names":["antonio-marasescu/sanctumlab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antonio-marasescu/sanctumlab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonio-marasescu%2Fsanctumlab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonio-marasescu%2Fsanctumlab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonio-marasescu%2Fsanctumlab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonio-marasescu%2Fsanctumlab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antonio-marasescu","download_url":"https://codeload.github.com/antonio-marasescu/sanctumlab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antonio-marasescu%2Fsanctumlab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","aws-lambda","cdk","cognito","docker","dynamodb","git-hooks","home-webapp","nx","serverless","storybook"],"created_at":"2024-11-13T08:09:28.825Z","updated_at":"2026-04-06T21:31:34.654Z","avatar_url":"https://github.com/antonio-marasescu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sanctum Lab\n\n**Sanctum Lab** is a versatile homelab software suite for efficient home content management, featuring a centralized menu, guest and admin access, and support for multi-language content.\n\n## Table of Contents\n\n1. **[🔍 Overview](#sanctum-lab)**\n2. **[✨ Key Features](#key-features)**\n3. **[🛠️ Primary Tools Used](#primary-tools-used)**\n4. **[📦 Getting Started](#getting-started)**\n5. **[📚 Documentation](#documentation)**\n6. **[📜 License](#license)**\n\n## Key Features\n\n| **Feature**                   | **Description**                                                | **Status**           |\n| ----------------------------- | -------------------------------------------------------------- | -------------------- |\n| **Recipe Management Feature** | Managing recipes and ingredients for various foods and drinks. | 🚧 Under Development |\n| **Dashboard**                 | Admin statistics and insights.                                 | ❌ Not Implemented   |\n| **Admin MFA**                 | Add multi-factor authentication to admin login.                | ❌ Not Implemented   |\n| **Menu Feature**              | Manage and display bar menu content.                           | ✅ Implemented       |\n| **Guest Access**              | Secure features for guest interactions.                        | ✅ Implemented       |\n| **Admin Access**              | Admin login functionality.                                     | ✅ Implemented       |\n| **Internationalization**      | Multi-language content support.                                | ✅ Implemented       |\n| **Modular Design**            | Extendable for future features.                                | ✅ Implemented       |\n| **Infrastructure as Code**    | Manage cloud deployment via code.                              | ✅ Implemented       |\n\n## Primary Tools Used\n\n| **Frontend**                           | **Backend**                                  | **DevOps**                                            | **Shared Tools**                                                      |\n| -------------------------------------- | -------------------------------------------- | ----------------------------------------------------- | --------------------------------------------------------------------- |\n| [Angular](https://angular.io/)         | [Express.js](https://expressjs.com/) (Local) | [AWS CDK](https://aws.amazon.com/cdk/)                | [Nx](https://nx.dev/)                                                 |\n| [RxJs](https://rxjs.dev/)              | [AWS Lambda](https://aws.amazon.com/lambda/) | [GitHub Actions](https://github.com/features/actions) | [Zod](https://zod.dev/)                                               |\n| [NgRx](https://ngrx.io/)               | [DynamoDB](https://aws.amazon.com/dynamodb/) | [Docker](https://www.docker.com/)                     | [Prettier](https://prettier.io/)                                      |\n| [I18Next](https://www.i18next.com/)    |                                              |                                                       | [Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) |\n| [Storybook](https://storybook.js.org/) |                                              |                                                       |                                                                       |\n\n## Getting Started\n\n1. **Install Prerequisites**:\n\n- Ensure **Node.js v20+** is installed.\n- Install **Nx** globally: `npm add --global nx@latest`\n- Install **Docker**: [Windows](https://docs.docker.com/desktop/setup/install/windows-install/) | [Linux](https://docs.docker.com/desktop/setup/install/linux/)\n- Install **AWS CDK** globally: `npm install -g aws-cdk`\n- Install **AWS CLI**: [Installation Guide](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)\n\n2. **Set Up the Project**:\n\n- Clone the repository: `git clone \u003crepo-url\u003e`\n- Navigate to the root folder and run: `npm install`\n\n3. **Run Local DynamoDB**:\n\n- Navigate to the `docker` folder: `cd docker`\n- Start the container: `docker-compose up -d`\n\n4. **Deploy Infrastructure**:\n\n- Navigate to the `infrastructure` folder: `cd infrastructure`\n- Run: `npm install`\n- Configure AWS CLI: `aws configure`\n- Deploy to AWS: `cdk deploy -c appName=\u003cyour_app_name\u003e -c tenantEnv=dev -c production=false`\n\n5. **Set Up Cognito Users**:\n\n- Create guest and admin users in the AWS dashboard.\n- Set passwords:\n    ```sh\n    aws cognito-idp admin-set-user-password --user-pool-id \u003cuser_pool_id\u003e --username \u003cyour_user\u003e --password \u003cnew_password\u003e --permanent\n    ```\n\n6. **Configure Environment Variables**:\n\n- Create a `.env` file in the root directory with:\n    ```dotenv\n    DYNAMODB_TABLE_ID=\u003cany_table_id_for_local_development\u003e\n    DYNAMODB_CLIENT_ENDPOINT=http://localhost:8000\n    DYNAMODB_CLIENT_REGION=eu-central-1\n    DYNAMODB_LOCAL_ENV=true\n    COGNITO_USER_POOL_ID=\u003cyour_created_cognito_user_pool_id\u003e\n    COGNITO_CLIENT_ID=\u003cyour_created_cognito_user_pool_client_id\u003e\n    COGNITO_GUEST_USERNAME=\u003cyour_created_cognito_user_pool_guest_username\u003e\n    ```\n- In `apps/sanctumlab-ui/src/environments`, create `environment.development.ts` and configure similar to `environment.ts`.\n\n7. **Run Scripts and Services**:\n\n- Setup local DynamoDB: `npm run scripts:db-setup`\n- Generate guest access code: `npm run scripts:access-code`\n- Open Storybook: `npm run storybook:clib`\n- Start local API server: `npm run serve:api-dev`\n- Start UI server: `npm run serve:ui`\n- Build all applications: `npm run build`\n\n## Documentation\n\n- [Architecture Overview](docs/architecture.md)\n- [Pipelines](docs/pipelines.md)\n- [Project Concepts](docs/concepts.md)\n\n## License\n\nLicensed under MIT, this project is intended for personal hobby use and as a learning resource.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantonio-marasescu%2Fsanctumlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantonio-marasescu%2Fsanctumlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantonio-marasescu%2Fsanctumlab/lists"}