Eli Bosley d63e54bdbc feat: split plugin builds
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced containerized plugin deployment support with updated Docker
Compose configurations.
- Added continuous build watch modes for API, web, and UI components for
smoother development iterations.
  - Added a new job for API testing in the CI/CD workflow.
- Added a new shell script to determine the local host's IP address for
Docker configurations.
- Introduced a new entry point and HTTP server setup in the plugin's
Docker environment.
- Added new scripts for building and watching plugin changes in
real-time.
- Added a new script for building the project in watch mode for the API
and UI components.

- **Improvements**
- Streamlined the plugin installation process and refined release
workflows for a more reliable user experience.
- Enhanced overall CI/CD pipelines to ensure efficient, production-ready
deployments.
- Updated artifact upload paths and job definitions for clarity and
efficiency.
- Implemented new utility functions for better URL management and
changelog generation.
- Modified the `.dockerignore` file to ignore all contents within the
`node_modules` directory.
- Added new constants and functions for managing plugin paths and
configurations.
- Updated the build process in the Dockerfile to focus on release
operations.

- **Tests**
- Expanded automated testing to validate environment setups and build
stability, ensuring higher reliability during updates.
- Introduced new test suites for validating plugin environment setups
and configurations.
- Added tests for validating environment variables and handling of
manifest files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Datelle <mdatelle@icloud.com>
Co-authored-by: mdatelle <mike@datelle.net>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-02-25 14:14:14 -05:00
2025-02-25 14:14:14 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Unraid Connect

Monorepo for Unraid Connect and the Unraid API.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Built With

  • Unraid
  • Node.js
  • Nuxt
  • PHP

(back to top)

Getting Started

This section will guide you through the steps necessary to get the monorepo projects running and communicating with each other.

Prerequisites

Make sure the following software is installed before proceeding.

  • Bash
  • Docker (for macOS folks, Orbstack works too)
  • Node.js (v20)
  • Just
  • libvirt (macOS folks can run brew install libvirt)
  • An Unraid server for development

Next, create an SSH key if you haven't already. Once you have your key pair, add your public SSH key to your Unraid server:

  1. Log in to your Unraid development server.
  2. Use the navigation menu to go to 'Users'.
  3. Click on the user you logged in with (e.g. root)
  4. Paste your SSH public key into 'SSH authorized keys' and click 'Save'.

Installation

  1. Clone and enter the repo

    # Optionally, give the cloned folder a more specific name
    gh repo clone unraid/api api-monorepo
    cd api-monorepo
    
  2. Run the monorepo setup command.

    just setup
    

    This will run installation scripts, container builds, and some git scripts to reduce noise (i.e. personal editor customizations, etc).

    Alternatively, run pnpm install for a lighter, less opinionated setup.

  3. Run dev servers

    pnpm dev
    

    This will run every dev server in the monorepo. By default, this means:

    • The unraid-api will be available at localhost:3001
    • The dev server for "rich" web components (like the User Profile Component) will be at localhost:4321 -- Note that shipping to unraid is preferred, as the dev environment is significantly different.
    • The vite server for unraid-ui development will be at localhost:5173
  4. Test on Unraid

    pnpm unraid:deploy <SERVER_IP>
    

    This will ship a staging build of unraid-api, unraid-ui, and unraid-components to an Unraid server located at <SERVER_IP>.

(back to top)

Usage

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

For more examples, please refer to the Documentation

(back to top)

Contributing

Work Intent Process

Before starting development work on this project, you must submit a Work Intent and have it approved by a core developer. This helps prevent duplicate work and ensures changes align with the project's goals.

  1. Create a Work Intent

  2. Wait for Approval

    • A core developer will review your Work Intent
    • They may ask questions or suggest changes
    • Once approved, the unapproved label will be removed
  3. Begin Development

    • Only start coding after your Work Intent is approved
    • Follow the approach outlined in your approved Work Intent
    • Reference the Work Intent in your future PR

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Top contributors

contrib.rocks image

Contact

@UnraidOfficial - support@unraid.net.com

Project Link: https://github.com/unraid/api

(back to top)

Acknowledgments

(back to top)

Description
Unraid API / Connect / UI Monorepo
Readme 128 MiB
Languages
TypeScript 78.2%
Vue 11.9%
PHP 5.1%
Shell 1.9%
JavaScript 1.3%
Other 1.5%