{"id":28281735,"url":"https://github.com/codytolene/pip-terminal","last_synced_at":"2026-02-21T09:06:36.862Z","repository":{"id":322657520,"uuid":"939876123","full_name":"CodyTolene/pip-terminal","owner":"CodyTolene","description":"Pip-Boy.com is a community-driven hub dedicated to bringing the iconic Pip-Boy experience to the web. Explore interactive interfaces and companion apps created by fans, for fans. Not affiliated with Bethesda.","archived":false,"fork":false,"pushed_at":"2026-02-13T23:49:08.000Z","size":84839,"stargazers_count":7,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2026-02-14T05:28:21.710Z","etag":null,"topics":["fallout","fallout-3","fallout-4","fallout-76","fallout-new-vegas","fallout-nv","pip-boy","pip-boy-2000-mk-vi","pip-boy-3000","pip-boy-3000-mk-iv","pip-boy-3000-mk-v","pip-boy-3000a"],"latest_commit_sha":null,"homepage":"https://www.Pip-Boy.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodyTolene.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["CodyTolene"]}},"created_at":"2025-02-27T08:54:55.000Z","updated_at":"2026-02-13T23:48:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"283da03b-6c3d-4f30-920b-51e6d0fd0e07","html_url":"https://github.com/CodyTolene/pip-terminal","commit_stats":null,"previous_names":["codytolene/pip-terminal"],"tags_count":115,"template":false,"template_full_name":null,"purl":"pkg:github/CodyTolene/pip-terminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodyTolene%2Fpip-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodyTolene%2Fpip-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodyTolene%2Fpip-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodyTolene%2Fpip-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodyTolene","download_url":"https://codeload.github.com/CodyTolene/pip-terminal/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodyTolene%2Fpip-terminal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29677881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T06:23:40.028Z","status":"ssl_error","status_checked_at":"2026-02-21T06:23:39.222Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["fallout","fallout-3","fallout-4","fallout-76","fallout-new-vegas","fallout-nv","pip-boy","pip-boy-2000-mk-vi","pip-boy-3000","pip-boy-3000-mk-iv","pip-boy-3000-mk-v","pip-boy-3000a"],"created_at":"2025-05-21T12:13:30.668Z","updated_at":"2026-02-21T09:06:36.846Z","avatar_url":"https://github.com/CodyTolene.png","language":"TypeScript","funding_links":["https://github.com/sponsors/CodyTolene"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003c!--\n  \u003cimg \n    align=\"center\" \n    src=\"https://raw.githubusercontent.com/CodyTolene/pip-terminal/main/.github/images/logo/fav-icon.png\" \n    width=\"250\"\n  /\u003e\n  --\u003e\n  \u003cimg \n    align=\"center\" \n    src=\"https://raw.githubusercontent.com/CodyTolene/pip-terminal/main/.github/images/logo/fav-icon.png\" \n    width=\"250\"\n  /\u003e\n  \u003ch1 align=\"center\"\u003ePip Terminal - \u003ca href=\"https://www.Pip-Boy.com\"\u003ePip-Boy.com\u003c/a\u003e\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    Pip-Boy.com brings Pip-Boy interfaces to the web with interactive simulations for multiple models. It also includes a companion app for the real Pip-Boy 3000 Mk V using Web Serial to flash firmware, install community apps, manage files, and run utilities.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## Index \u003ca name=\"index\"\u003e\u003c/a\u003e\n\n- [Community](#community)\n- [Contribution](#contribution)\n  - [Prerequisites](#prerequisites)\n  - [Development](#development)\n  - [Local User Testing](#local-user-testing)\n  - [Deploying Frontend](#deploy-frontend)\n  - [Deploying API](#deploy-api)\n  - [Automated Testing](#automated-testing)\n  - [Throttling](#throttling)\n  - [Versioning](#versioning)\n  - [Content Guidelines](#content-guidelines)\n  - [File Structure](#file-structure)\n- [Secrets](#secrets)\n  - [Production Secrets](#production-secrets)\n  - [Development Secrets](#development-secrets)\n- [License(s)](#licenses)\n- [Terms of Use](#terms)\n- [Wrapping Up](#wrapping-up)\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## 💬 Community \u003ca name=\"community\"\u003e\u003c/a\u003e\n\nJoin the Community\n\n- 🎮 Contribute to the [Pip Apps \u0026 Games repository][link-pip-apps].\n- 🖥️ Join the [Pip-Boy.com Discord][link-discord].\n- 🤖 Join the [RobCo Industries Discord][link-discord-robco-industries].\n- 🕸️ Visit the [RobCo Industries Website][link-robco-industries].\n- 🐛 Report issues [here][link-new-issue].\n- 💡 Suggest features in [Discussions][link-github-disc].\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## 🛠️ Contribution \u003ca name=\"contribution\"\u003e\u003c/a\u003e\n\n### Prerequisites \u003ca name=\"prerequisites\"\u003e\u003c/a\u003e\n\n- Git: https://git-scm.com/downloads\n\n- You can use the Git Bash terminal to run the scripts in this project. You may\n  want to enable better copy/paste on Windows with the following script:\n\n  ```bash\n  bind 'set enable-bracketed-paste on'\n  ```\n\n  \u003e ![info][img-info] Preserves formatting and prevents unwanted characters when\n  \u003e pasting into the terminal.\n\n- Node.js: https://nodejs.org/en/download/\n\n- NVM (Node Version Manager): https://github.com/coreybutler/nvm-windows or\n  https://github.com/nvm-sh/nvm\n\n  This is recommended for managing Node.js versions. To know what node version\n  you need see the `engines` field in the root `package.json` file.\n\n  ```bash\n  # Example install of Node.js 20\n  nvm install 20\n  nvm use 20\n  ```\n\n  To see what versions of Angular support what versions of Node.js, see the\n  following link: https://angular.dev/reference/versions\n\n- You may need to set the repo as a safe directory if you encounter the error\n  \"fatal: detected dubious ownership in repository at 'C:/repos/pip-terminal'\".\n\n  ```bash\n  git config --global --add safe.directory C:/repos/pip-terminal\n  ```\n\n  \u003e ![info][img-info] Change `C:/repos/pip-terminal` to your local path.\n\n- You will need to install Java 21 or higher to run the Firebase emulators. You\n  can download it from the following link:\n\n  https://adoptium.net/temurin/releases\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Development \u003ca name=\"development\"\u003e\u003c/a\u003e\n\nTo get started with development follow these steps:\n\n1. Fork and clone the repository (`dev` branch).\n\n   ```bash\n   git clone -b dev https://github.com/yourname/pip-terminal.git\n   cd pip-terminal\n   ```\n\n2. Run `git submodule update --init --recursive` to pull all submodules\n   recursively.\n\n3. Create a new branch `git checkout -b \u003cyour-branch-name\u003e`.\n\n4. Run `npm install` in the root folder to install the project dependencies.\n\n5. Generate a ssl cert:\n\n   ```bash\n   mkdir ssl\n   cd ssl\n\n   openssl req -x509 -newkey rsa:2048 -nodes -keyout pip-boy.local.key -out pip-boy.local.crt -days 365 -subj \"/CN=pip-boy.local\"\n\n   cd ..\n   ```\n\n6. Update your `hosts` file here: `C:\\Windows\\System32\\drivers\\etc\\`:\n\n   ```bash\n   127.0.0.1 pip-boy.local\n   ```\n\n7. Get the latest changes in submodules, run the following:\n\n   ```bash\n   git submodule foreach git pull origin main\n   ```\n\n8. Be sure to generate the apps for the Pip-Boy mod tool/app loader:\n\n   ```bash\n   npm run generate:apps\n   ```\n\n9. Run `npm run start:https` to start the development app. HTTPS is required for\n   most features, so it's recommended to use it. You can run `npm run start` to\n   run on HTTP.\n\n10. Open a browser and navigate to `http://localhost:4200`.\n\n11. Make your changes to the code (browser will automatically reload).\n\n12. Push your changes up to GitHub.\n\n13. Open a pull request to the `dev` branch here.\n\n14. Wait for the pull request to be reviewed and merged.\n\n15. Once in the `dev` branch, your code will go out to production in the next\n    release.\n\nThank you for any and all contributions!\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Local User Testing \u003ca name=\"local-user-testing\"\u003e\u003c/a\u003e\n\nWhen you run the API locally `npm run start:api`, users are automatically seeded\nto the database. You can use the following users for testing locally:\n\n- [Admin Users][link-admin-users]\n- [Regular Users][link-regular-users]\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Deploying Frontend \u003ca name=\"deploy-frontend\"\u003e\u003c/a\u003e\n\nThe frontend Angular application is deployed via GitHub Actions when you merge\nchanges from a pull request into the main branch. For more information see the\ndocumentation in the [development](#development) section above.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Deploying API \u003ca name=\"deploy-api\"\u003e\u003c/a\u003e\n\nYou can build and deploy the API by running the following command:\n\n```bash\nnpm run deploy:api\n```\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Automated Testing \u003ca name=\"automated-testing\"\u003e\u003c/a\u003e\n\nAutomated tests help ensure that changes to the codebase don’t introduce\nregressions. This project uses [Cypress](https://www.cypress.io/) for end‑to‑end\ntesting and runs tests both locally and in CI.\n\n#### Cloud and CI Testing\n\nAll pull requests to the `dev` branch automatically trigger a GitHub Actions\nworkflow defined in `.github/workflows/cypress.yml`. The workflow performs the\nfollowing steps:\n\n1. **Install prerequisites** – installs Node.js 20 and Java 21 (the Firebase\n   emulators require Java), along with the Firebase CLI and a utility called\n   [`wait-on`](https://npm.im/wait-on).\n2. **Install dependencies and build the API** – runs `npm ci` in the root and\n   `api` directories, then compiles the Firebase Functions code so that the\n   emulators can load it.\n3. **Build the Angular app** – runs `npm run build` to ensure the app compiles\n   cleanly before serving it in the emulator environment.\n4. **Start Firebase emulators** – launches the Auth, Firestore, Functions and\n   Storage emulators defined in `firebase.json`. The workflow waits for all\n   emulator ports (8080, 9099, 9199 and 5001) to be reachable before continuing.\n5. **Start the Angular dev server** – runs `ng serve` on port 4200 without\n   opening a browser and waits until `http://127.0.0.1:4200` responds.\n6. **Run Cypress headlessly** – uses the official `cypress-io/github-action` to\n   execute all Cypress specs against the development server. Environment\n   variables point the app to the local emulators (`FIRESTORE_EMULATOR_HOST`,\n   `AUTH_EMULATOR_HOST`, `STORAGE_EMULATOR_HOST` and `FUNCTIONS_EMULATOR_HOST`).\n7. **Upload logs on failure** – if any step fails, the workflow uploads\n   `emulator.log` and `frontend.log` artifacts to aid debugging.\n\nThe results of each CI run are visible on the “Actions” tab of the GitHub\nrepository.\n\n#### Running Cypress Locally\n\nFor quick feedback while developing, you can run the Cypress tests on your\nmachine. Before launching Cypress you should ensure that both the Angular\nfrontend and the Firebase emulators are running:\n\n1. In a new terminal, start the Angular frontend:\n\n   ```bash\n   npm run start\n   ```\n\n2. In a second terminal, start the Firebase API:\n\n   ```bash\n   npm run start:api\n   ```\n\n3. In a third terminal, run Cypress:\n\n   ```bash\n   npm run cypress:open\n   ```\n\nThis will open the Cypress Test Runner. Click on either E2E Testing or Component\nTesting to run your tests.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Throttling \u003ca name=\"throttling\"\u003e\u003c/a\u003e\n\nIt can be difficult to throttle the Firestore Emulator during local develompent\nusing browser tools. To force throttling, you can use a network level tool like\n[Clumsy][link-clumsy]. Clumsy allows you to simulate various network conditions\nincluding latency, packet loss, and bandwidth limitations. You can download it\nfrom the following link:\n\nhttps://jagt.github.io/clumsy/download.html\n\nUse the following filter perameters to throttle the Firestore Emulator port\n(8080):\n\n```bash\noutbound and ip.DstAddr == 127.0.0.1 and tcp.DstPort == 8080\n```\n\nA useful function is \"Lag\" which adds latency to packets, set the delay to\nsomething like 1000ms (1 second) to simulate a slower connection.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Versioning \u003ca name=\"versioning\"\u003e\u003c/a\u003e\n\nThere is one single source of truth for the project version. This is the\n`package.json` file. Steps to update version:\n\n1. Update the \"version\" property in the `package.json` file.\n\n2. Run `npm run update:version` to manually update the version across the\n   project.\n\n\u003e ![Info][img-info] Running `npm run start` or `npm run build` will also update\n\u003e the version automatically, and globally from the current `package.json` file.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### Content Guidelines \u003ca name=\"content-guidelines\"\u003e\u003c/a\u003e\n\nWhen contributing to this project, please ensure that all assets and code are\noriginal, properly licensed, or free to use. We encourage creativity and\nexperimentation, but ask contributors to respect copyright and legal guidelines.\n\nAvoid including materials that may be subject to copyright or licensing\nrestrictions, such as:\n\n- Music\n- Videos\n- Images\n- Fonts\n- Text\n- Source code from other projects\n\nIf you're ever unsure whether something is appropriate to include, feel free to\nask in a discussion or open an issue.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n### File Structure \u003ca name=\"file-structure\"\u003e\u003c/a\u003e\n\n    .\n    ├─ .angular/                   # Angular CLI build cache and temp files (gitignored).\n    ├─ .firebase/                  # Firebase data files such as rules.\n    ├─ .github/                    # GitHub workflows, actions, and related automation files.\n    ├─ .husky/                     # Husky Git hook scripts for enforcing pre-commit rules.\n    ├─ .scripts/                   # Project utility and automation scripts.\n    ├─ .vscode/                    # VS Code workspace settings, extensions, and tasks.\n    ├─ api/                        # Firebase Functions + Express API backend.\n    │  ├─ lib/                     # Compiled JavaScript output from the TypeScript API source.\n    │  ├─ node_modules/            # API-side Node.js dependencies (gitignored).\n    │  ├─ src/                     # API TypeScript source files.\n    │  │  ├─ controllers/          # Request handlers for specific API endpoints.\n    │  │  ├─ data/                 # Data access (getters and setters) and manipulation functions.\n    │  │  ├─ events/               # Firebase event handlers (auth triggers, Firestore hooks, etc.).\n    │  │  ├─ models/               # Data models, interfaces, and schema definitions for the API.\n    │  │  ├─ secrets/              # Secret management and environment variable handling.\n    │  │  ├─ seeds/                # Scripts and data for populating Firestore during development.\n    │  │  ├─ types/                # TypeScript type definitions shared within the API layer.\n    │  │  └─ utilities/            # Reusable helper functions for API logic.\n    │  ├─ .prettierignore          # Files/folders to skip during Prettier formatting for API.\n    │  ├─ .secret.local            # Local-only secret environment variables for the API (gitignored).\n    │  ├─ eslint.config.js         # ESLint configuration for API code style and linting.\n    │  ├─ package-lock.json        # Locked dependency versions for the API.\n    │  ├─ package.json             # API project metadata and dependency list.\n    │  ├─ prettier.config.js       # Prettier configuration for API formatting rules.\n    │  ├─ tsconfig.dev.json        # TypeScript config for local development builds of the API.\n    │  └─ tsconfig.json            # Base TypeScript configuration for the API.\n    ├─ dist/                       # Production build output for the Angular app (auto-generated, gitignored).\n    ├─ node_modules/               # Frontend Node.js dependencies (gitignored).\n    ├─ public/                     # Static assets served by Firebase Hosting (favicon, icons, etc.).\n    ├─ src/                        # Angular UI source code.\n    │  ├─ app/                     # Root Angular app folder containing core code.\n    │  │  ├─ commands/             # Commands used for the Pip-Boy device I/O.\n    │  │  ├─ components/           # Standalone, reusable Angular UI components.\n    │  │  ├─ constants/            # Constant values used across the Angular app.\n    │  │  ├─ decorators/           # Custom TypeScript/Angular decorators.\n    │  │  ├─ directives/           # Attribute and structural directives for DOM behavior.\n    │  │  ├─ enums/                # Enum definitions for shared values and states.\n    │  │  ├─ guards/               # Route guards for access control and navigation logic.\n    │  │  ├─ layout/               # Layout components and templates (header, footer, nav, etc.).\n    │  │  ├─ models/               # Frontend data models and interfaces.\n    │  │  ├─ pages/                # Routed page components for the application.\n    │  │  ├─ pipes/                # Custom Angular pipes for data transformation.\n    │  │  ├─ services/             # Injectable services for HTTP, state, storage, etc.\n    │  │  ├─ signals/              # Angular signal stores for reactive state.\n    │  │  ├─ styles/               # Component-level or global SCSS partials.\n    │  │  ├─ types/                # Shared TypeScript type definitions for the UI.\n    │  │  ├─ utilities/            # Helper and utility functions for the Angular app.\n    │  │  ├─ pip.component.html    # Root UI template for the app.\n    │  │  ├─ pip.component.scss    # Styles scoped to the root component.\n    │  │  ├─ pip.component.ts      # Root component logic bootstrapped by Angular.\n    │  │  └─ pip.config.ts         # Application-wide configuration settings.\n    │  ├─ environments/            # Environment-specific Angular config files (dev/prod).\n    │  ├─ global.ts                # Global variables, helpers, and type augmentations.\n    │  ├─ index.html               # Main HTML shell for the Angular app.\n    │  ├─ main.ts                  # Angular bootstrap entry point.\n    │  └─ styles.scss              # Global styles for the Angular app.\n    ├─ ssl/                        # Local SSL/TLS certificates for HTTPS development (gitignored).\n    ├─ .editorconfig               # Shared editor formatting rules.\n    ├─ .firebaserc                 # Firebase project alias configuration.\n    ├─ .gitignore                  # Git ignore rules.\n    ├─ .gitmodules                 # Git submodule definitions.\n    ├─ .prettierignore             # Files/folders to skip during Prettier formatting.\n    ├─ angular.json                # Angular CLI project configuration.\n    ├─ API.md                      # Documentation for API usage and structure.\n    ├─ apphosting.yaml             # Firebase App Hosting configuration.\n    ├─ eslint.config.js            # ESLint configuration for the root project.\n    ├─ firebase.json               # Firebase Hosting and Functions deployment config.\n    ├─ LICENSE_MIT.md              # MIT license file for applicable parts of the project.\n    ├─ LICENSE_MPL.md              # Mozilla Public License file for applicable parts.\n    ├─ LICENSE.md                  # General license details.\n    ├─ package-lock.json           # Locked dependency versions for the full project.\n    ├─ package.json                # Root project metadata and dependency list.\n    ├─ prettier.config.js          # Prettier configuration for the whole project.\n    ├─ README.md                   # Main project readme and overview.\n    ├─ TERMS.md                    # Project terms of use and conditions.\n    ├─ tsconfig.app.json           # Angular app-specific TypeScript configuration.\n    ├─ tsconfig.json               # Root TypeScript configuration.\n    └─ tsconfig.spec.json          # TypeScript config for Angular test files.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## 🤫 Secrets \u003ca name=\"secrets\"\u003e\u003c/a\u003e\n\nFirebase Functions allows you to store sensitive information as secrets. These\nsecrets are accessed securely within functions.\n\n```bash\n# Be sure to use the right project\nfirebase use\n\n# Set a secret (value). Enter value when prompted.\nfirebase functions:secrets:set ADMIN_EMAILS\n\n# Get secret metadata (version, state, etc.).\nfirebase functions:secrets:get ADMIN_EMAILS\n\n# Get the actual secret value.\nfirebase functions:secrets:access ADMIN_EMAILS\n```\n\n| Secret       | Description                    | Example Value                               |\n| ------------ | ------------------------------ | ------------------------------------------- |\n| ADMIN_EMAILS | List of admin email addresses. | `admin@pip-boy.local,support@pip-boy.local` |\n\n\u003e ![Warn][img-warn] Updating a secret creates a new secret version. Cloud\n\u003e Functions typically bind to a version at deploy. In practice that means you\n\u003e usually need to redeploy the function to pick up changes to the secret usage.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## ⚖️ License(s) \u003ca name=\"licenses\"\u003e\u003c/a\u003e\n\nThis project is licensed under the Creative Commons Attribution-NonCommercial\n4.0 International License. See the [license][link-license] file for more\ninformation.\n\nThis project uses the following third party libraries:\n\n- jszip: A library for creating, reading, and editing .zip files. Licensed under\n  the [MIT License][link-license-mit].\n\n- https://github.com/CodyTolene/pip-boy-apps\n\n- https://github.com/espruino/EspruinoAppLoaderCore\n\n- https://github.com/espruino/EspruinoWebTools\n\nThis project uses the **Monofonto** font by Typodermic Fonts Inc. for the\nproject PNG logo.\n\n- Free for desktop and image/logo use (commercial \u0026 non-commercial).\n- Download from: [Typodermic Fonts][link-font-monofonto]\n\nThis project uses sounds found on FreeSound.org. The sounds are licensed under\nthe Creative Commons 0 License. The list of sounds can be found below:\n\n- [`tick.wav`](https://freesound.org/people/Joao_Janz/sounds/477704/) by\n  Joao_Janz\n\n- [`tick-2.wav`](https://freesound.org/people/joedeshon/sounds/119415/) by\n  joedeshon\n\n`SPDX-License-Identifiers: CC-BY-NC-4.0, MPL-2.0, LicenseRef-Typodermic-Free-Desktop, CC0-1.0`\n\n\u003e ![Warn][img-warn] By using this software, you acknowledge and agree to the\n\u003e terms of these licenses.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## 📜 Terms of Use \u003ca name=\"terms\"\u003e\u003c/a\u003e\n\nBethesda Softworks, LLC. The Wand Company, all trademarks, logos, and brand\nnames are the property of their respective owners. This project is for personal\nuse only and is not intended for commercial purposes. Use of any materials is at\nyour own risk.\n\nFor more information, see the full [Terms of Use][link-terms] document.\n\n\u003cp align=\"right\"\u003e[ \u003ca href=\"#index\"\u003eIndex\u003c/a\u003e ]\u003c/p\u003e\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n## 🏁 Wrapping Up \u003ca name=\"wrapping-up\"\u003e\u003c/a\u003e\n\nThank you to Bethesda \u0026 The Wand Company for such a fun device to tinker with!\nIf you have any questions, please let me know by opening an issue\n[here][link-new-issue].\n\nFin. Happy programming friend!\n\nCody Tolene\n\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\u003c!----------------------------------------------------------------------------\u003e\n\n\u003c!-- IMAGE REFERENCES --\u003e\n\n[img-info]: .github/images/ng-icons/info.svg\n[img-warn]: .github/images/ng-icons/warn.svg\n\n\u003c!-- LINK REFERENCES --\u003e\n\n[link-admin-users]: /api//src//seeds/admins.seed.ts\n[link-clumsy]: https://jagt.github.io/clumsy/\n[link-discord-robco-industries]: https://discord.gg/WNEuWsck6n\n[link-discord]: https://discord.gg/zQmAkEg8XG\n[link-ffmpeg]: https://ffmpeg.org/\n[link-font-monofonto]: https://typodermicfonts.com/monofonto/\n[link-github-disc]: https://github.com/CodyTolene/pip-terminal/discussions\n[link-license-mit]: /LICENSE_MIT.md\n[link-license-mpl]: /LICENSE_MPL.md\n[link-license]: /LICENSE.md\n[link-new-issue]: https://github.com/CodyTolene/pip-terminal/issues\n[link-pip-apps]: https://github.com/CodyTolene/pip-boy-apps\n[link-regular-users]: /api//src//seeds/users.seed.ts\n[link-robco-industries]: https://log.robco-industries.org/\n[link-terms]: /TERMS.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodytolene%2Fpip-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodytolene%2Fpip-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodytolene%2Fpip-terminal/lists"}