Code Monkey home page Code Monkey logo

apphub's Introduction

AppHub

A very simple configurable application hub built using React. It allows you to bring different web applications together in one place, displaying their content in an iframe.

Rationale

I host a bunch of services on my own server, mostly monitoring and administration ones. I wanted to have a single place to manage them all, instead of opening a ton of tabs in my browser every time I wanted to check a service.

Configure the software

The file settings.json file in the public/data folder contains all the configuration for the application.

The available settings are:

  • name: The name of the AppHub instance displayed in the title of the page. Defaults to AppHub.
  • extra: Extra configuration settings.
    • faviconURL: The favicon of the app, in case you want to use a different one. Leave it empty to use the default one.
    • backgroundColor: The background color of some parts of the UI.
      • sidebar: The color of the sidebar.
      • canvas: The color of the canvas.
    • showAbout: Whether to show the about button, which displays the version of AppHub. Defaults to true.
    • aboutIconColor: The color of the previous button.
    • showReset: Whether to show the reset button, which reloads the UI when pressed. Defaults to true.
    • resetIconColor: The color of the previous button.
  • apps: An array of objects, each one containing the following properties:
    • url: The URL of the app.
    • name: The name of the app.
    • icon: The icon of the app to be shown. See Font Awesome (only free + brand ones are available).
    • iconColor: Optional. The color of the icon.

Example:

{
    "name": "AppHub",
    "extra": {
        "faviconURL": "",
        "backgroundColor": {
            "sidebar": "#dddddd",
            "canvas": "#dddddd"
        },
        "showAbout": true,
        "aboutIconColor": "",
        "showReset": true,
        "resetIconColor": ""
    },
    "apps": [
        {
            "url": "https://github.com",
            "name": "GitHub",
            "icon": "fa-brands fa-github"
        },
        {
            "url": "https://google.com/webhp?igu=1",
            "name": "Google",
            "icon": "fa-brands fa-google",
            "iconColor": "#4285F4"
        }
    ]
}

How to run the app locally

npm run start

Runs the app in the development mode on http://localhost:3000.

How to build the app

npm run build

Builds the app for production to the build folder. You can deploy it with NGinx or something like that.

Run and deploy the app using Docker

The docker-compose.override.yml file is for overriding the default settings (building the image locally) and the docker-compose.yml file is for the "default" settings, fetching the image from the container registry (ghcr.io).

docker-compose build: This will build the image locally, in case you're fetching the image from the container registry it will do nothing. docker-compose up: This will start the container and run the app.

In case you want to modify the settings and data of the app running in the container you can uncomment the following lines in the docker-compose file:

# volumes:
#   - ./apphub-data:/usr/share/nginx/html/data

This will mount the apphub-data folder to the /usr/share/nginx/html/data folder. Then, you can modify the settings file in that folder to fit your needs. See a configuration example in the apphub-data folder.

Extra info

Some pages do not allow you to access them directly via an iframe. In some cases, like self hosted apps, that issue can be fixed. In other cases this browser extension can be helpful:

Some screenshots

Initial page:

Initial page

GitHub example:

GitHub example

Portainer example:

Portainer example

No apps configured:

No apps configured

apphub's People

Contributors

harvestcore avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.