diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000..ac7f3daf5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,52 @@ +name: 🐛 Bug Report +description: Report something that's broken, or not working like intented! +title: '[🐛 Bug] ' +labels: ['🐛 Bug'] +assignees: + - ajnart +body: + - type: dropdown + id: environment + attributes: + label: Environment + description: How have you deployed Homarr? + options: + - Docker + - NodeJS + - Cloud Service (Static) + validations: + required: true + - type: input + id: version + attributes: + label: Version + description: What version of Homarr are you running? + placeholder: 0.1.0 + validations: + required: false + - type: textarea + id: repro + attributes: + label: Describe the problem + description: Please describe the problem exactly, how to reproduce it, actual results, and expected results. + validations: + required: true + - type: textarea + id: logs + attributes: + label: Additional info + description: Logs? Screenshots? More info? + validations: + required: false + - type: checkboxes + id: idiot-check + attributes: + label: Please tick the boxes + description: Before submitting, please ensure that + options: + - label: You've read the [docs](https://github.com/ajnart/homarr#readme) + required: true + - label: You've checked for [duplicate issues](https://github.com/ajnart/homarr/issues) + required: true + - label: You've tried to debug yourself + required: true diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 000000000..4a4844335 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,25 @@ +name: ✨ Feature Request +description: Request a feature to help improve Homarr! +title: '[✨ Feature] <title>' +labels: ['✨ Feature'] +assignees: + - ajnart +body: + - type: textarea + id: feature + attributes: + label: Describe the feature you would like to see + placeholder: An outline of the feature you would like to see implemented, include as much detail as possible! + validations: + required: true + - type: dropdown + id: priority + attributes: + label: Priority + description: How urgent is the development of this feature? + options: + - Low (Nice-to-have) + - Medium (Would be very useful) + - High (App breaking feature) + validations: + required: true diff --git a/README-old.md b/README-old.md deleted file mode 100644 index 9e6b45ce6..000000000 --- a/README-old.md +++ /dev/null @@ -1,33 +0,0 @@ -# MyHomePage, a home page for your home server -### Do not hesitate to star ⭐ this repo if you like the project ! ![](https://img.shields.io/github/stars/ajnart/myhomepage?label=%E2%AD%90&style=for-the-badge?branch=master&kill_cache=1") -### Join the discord ! : https://discord.gg/C2WTXkzkwK -## What is MyHomePage ? - -HomePage is a web page for your home server, it provides a user friendly interface to access docker containers or other services. - -## Install -### Docker installation -Required : Docker -#### Standard docker install -To install the MyHomePage docker image simply execute ``docker pull ghcr.io/ajnart/mhp`` -To run the docker file ``docker run --name my-home-page -p 7575:80 -d ghcr.io/ajnart/mhp`` - -*Note: Currently the port used is 80 (Nginx default port) It will change to be 7575 by default* -#### Docker compose -Here's a docker compose example on how to integrate MHP into your container stack -```docker -services: - mhp: - image: ghcr.io/ajnart/mhp - ports: - - '7575:80' - restart: always -``` -### Local installation -Required: Node (LTS) -#### Install using node -To install MyHomePage locally: -- Clone the source code or download it. -- Execute ``npm install`` or ``yarn install`` *(prefered)* to install the dependencies -- Execute ``yarn export`` to build the source code into the final HTML pages in the ``./out`` folder -- Run a web server to serve the content of the ``./out`` folder. Example: ``python -m http.server 7575 --directory out`` diff --git a/README.md b/README.md index 127654014..671b1c846 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,9 @@ A homepage for <i>your</i> server. <br/> <a href = "https://github.com/ajnart/homarr/deployments/activity_log?environment=Production" > <strong> Demo ↗️ </strong> </a> • <a href = "#install" > <strong> Install ➡️ </strong> </a> + <br /> + <br /> + <a href = "https://discord.gg/aCsmEV5RgA" > <img src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield" > </a> </p> </p> @@ -15,6 +18,7 @@ - [⚡ Installation](#-installation) - [Deploying from Docker Image 🐳](#deploying-from-docker-image-) - [Building from Source 🛠️](#building-from-source-️) +- [💖 Contributing](#-contributing) <!-- Getting Started --> # 🚀 Getting Started @@ -62,10 +66,12 @@ _Requirements_: **Installing** -- Clone the GitHub repo: `git clone https://github.com/ajnart/homarr.git` & `cd myhomepage` +- Clone the GitHub repo: `git clone https://github.com/ajnart/homarr.git` & `cd homarr` - Install all dependencies: `yarn install` - Build the source: `yarn export` - Start a web server (Any web server will work): - _Examples:_ - NodeJS serve: `npm i -g serve` or `yarn global add serve` & `serve ./out` - python http.server: `python -m http.server 7474 --directory out` + +# 💖 Contributing diff --git a/components/AppShelf/AddAppShelfItem.tsx b/components/AppShelf/AddAppShelfItem.tsx index 4aa0f8a3d..249c0d5e2 100644 --- a/components/AppShelf/AddAppShelfItem.tsx +++ b/components/AppShelf/AddAppShelfItem.tsx @@ -82,11 +82,7 @@ function MatchIcon( apiKey: any; }> ) { - // TODO: In order to avoid all the requests, we could fetch - // https://data.jsdelivr.com/v1/package/gh/IceWhaleTech/AppIcon@main - // and then iterate over the files -> files -> name and then remove the extension (.png) - // Compare it to the input and then fetch the icon - fetch(`https://cdn.jsdelivr.net/gh/walkxhub/dashboard-icons/png/${name.toLowerCase()}.png`) + fetch(`https://cdn.jsdelivr.net/gh/walkxhub/dashboard-icons/png/${name.replace(/\s+/g, '-').toLowerCase()}.png`) .then((res) => { if (res.status === 200) { form.setFieldValue('icon', res.url); diff --git a/components/layout/Footer.tsx b/components/layout/Footer.tsx index 6683ec8e7..8727905c4 100644 --- a/components/layout/Footer.tsx +++ b/components/layout/Footer.tsx @@ -60,7 +60,7 @@ export function Footer({ links }: FooterCenteredProps) { > <Group className={classes.links}>{items}</Group> <Group spacing="xs" position="right" noWrap> - <ActionIcon<'a'> component="a" href="https://github.com/ajnart/myhomepage" size="lg"> + <ActionIcon<'a'> component="a" href="https://github.com/ajnart/homarr" size="lg"> <BrandGithub size={18} /> </ActionIcon> </Group> diff --git a/components/layout/Logo.tsx b/components/layout/Logo.tsx index b3d0305de..9f0b15f59 100644 --- a/components/layout/Logo.tsx +++ b/components/layout/Logo.tsx @@ -2,14 +2,9 @@ import { Text } from '@mantine/core'; import * as React from 'react'; export function Logo({ style }: any) { - return ( - <Text - sx={style} - weight="bold" - variant="gradient" - gradient={{ from: 'red', to: 'orange', deg: 145 }} - > - MyHomePage - </Text> - ); + return ( + <Text sx={style} weight="bold" variant="gradient" gradient={{ from: 'red', to: 'orange', deg: 145 }}> + Homarr + </Text> + ); } diff --git a/package.json b/package.json index 30a1ebd53..924c75624 100644 --- a/package.json +++ b/package.json @@ -1,84 +1,84 @@ { - "name": "homarr", - "version": "0.0.1", - "private": "false", - "description": "Customizable browser's home page to interact with your homeserver's Docker containers (i.e. Sonarr/Radarr)", - "repository": { - "type": "git", - "url": "https://github.com/ajnart/myhomepage" - }, - "scripts": { - "dev": "next dev", - "build": "next build", - "analyze": "ANALYZE=true next build", - "start": "next start", - "typecheck": "tsc --noEmit", - "export": "next build && next export", - "lint": "next lint", - "jest": "jest", - "jest:watch": "jest --watch", - "prettier:check": "prettier --check \"**/*.{ts,tsx}\"", - "prettier:write": "prettier --write \"**/*.{ts,tsx}\"", - "test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest", - "storybook": "start-storybook -p 7001", - "storybook:build": "build-storybook" - }, - "dependencies": { - "@mantine/core": "^4.2.1", - "@mantine/dates": "^4.2.1", - "@mantine/dropzone": "^4.2.1", - "@mantine/form": "^4.2.1", - "@mantine/hooks": "^4.2.1", - "@mantine/modals": "^4.2.1", - "@mantine/next": "^4.2.1", - "@mantine/notifications": "^4.2.1", - "@mantine/prism": "^4.2.1", - "@mantine/spotlight": "^4.2.1", - "@modulz/radix-icons": "^4.0.0", - "cookies-next": "^2.0.4", - "dayjs": "^1.11.1", - "framer-motion": "^6.3.1", - "js-file-download": "^0.4.12", - "next": "12.1.5-canary.4", - "prism-react-renderer": "^1.3.1", - "react": "18.0.0", - "react-dom": "18.0.0", - "tabler-icons-react": "^1.46.0" - }, - "devDependencies": { - "@babel/core": "^7.17.8", - "@next/bundle-analyzer": "^12.1.4", - "@next/eslint-plugin-next": "^12.1.4", - "@storybook/addon-essentials": "^6.4.22", - "@storybook/addon-links": "^6.4.22", - "@storybook/react": "^6.4.22", - "@testing-library/dom": "^8.12.0", - "@testing-library/jest-dom": "^5.16.3", - "@testing-library/react": "^13.0.0", - "@testing-library/user-event": "^14.0.4", - "@types/jest": "^27.4.1", - "@types/node": "^17.0.23", - "@types/react": "17.0.43", - "@typescript-eslint/eslint-plugin": "^5.16.0", - "@typescript-eslint/parser": "^5.16.0", - "babel-loader": "^8.2.4", - "eslint": "^8.11.0", - "eslint-config-airbnb": "19.0.4", - "eslint-config-airbnb-typescript": "^16.1.4", - "eslint-config-mantine": "1.1.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-storybook": "^0.5.11", - "eslint-plugin-testing-library": "^5.2.0", - "eslint-plugin-unused-imports": "^2.0.0", - "jest": "^27.5.1", - "prettier": "^2.6.2", - "storybook-addon-turbo-build": "^1.1.0", - "storybook-dark-mode": "^1.0.9", - "ts-jest": "^27.1.4", - "typescript": "4.6.3" - } -} \ No newline at end of file + "name": "homarr", + "version": "0.0.1", + "private": "false", + "description": "Homarr - A homepage for your server.", + "repository": { + "type": "git", + "url": "https://github.com/ajnart/homarr" + }, + "scripts": { + "dev": "next dev", + "build": "next build", + "analyze": "ANALYZE=true next build", + "start": "next start", + "typecheck": "tsc --noEmit", + "export": "next build && next export", + "lint": "next lint", + "jest": "jest", + "jest:watch": "jest --watch", + "prettier:check": "prettier --check \"**/*.{ts,tsx}\"", + "prettier:write": "prettier --write \"**/*.{ts,tsx}\"", + "test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest", + "storybook": "start-storybook -p 7001", + "storybook:build": "build-storybook" + }, + "dependencies": { + "@mantine/core": "^4.2.1", + "@mantine/dates": "^4.2.1", + "@mantine/dropzone": "^4.2.1", + "@mantine/form": "^4.2.1", + "@mantine/hooks": "^4.2.1", + "@mantine/modals": "^4.2.1", + "@mantine/next": "^4.2.1", + "@mantine/notifications": "^4.2.1", + "@mantine/prism": "^4.2.1", + "@mantine/spotlight": "^4.2.1", + "@modulz/radix-icons": "^4.0.0", + "cookies-next": "^2.0.4", + "dayjs": "^1.11.1", + "framer-motion": "^6.3.1", + "js-file-download": "^0.4.12", + "next": "12.1.5-canary.4", + "prism-react-renderer": "^1.3.1", + "react": "18.0.0", + "react-dom": "18.0.0", + "tabler-icons-react": "^1.46.0" + }, + "devDependencies": { + "@babel/core": "^7.17.8", + "@next/bundle-analyzer": "^12.1.4", + "@next/eslint-plugin-next": "^12.1.4", + "@storybook/addon-essentials": "^6.4.22", + "@storybook/addon-links": "^6.4.22", + "@storybook/react": "^6.4.22", + "@testing-library/dom": "^8.12.0", + "@testing-library/jest-dom": "^5.16.3", + "@testing-library/react": "^13.0.0", + "@testing-library/user-event": "^14.0.4", + "@types/jest": "^27.4.1", + "@types/node": "^17.0.23", + "@types/react": "17.0.43", + "@typescript-eslint/eslint-plugin": "^5.16.0", + "@typescript-eslint/parser": "^5.16.0", + "babel-loader": "^8.2.4", + "eslint": "^8.11.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-airbnb-typescript": "^16.1.4", + "eslint-config-mantine": "1.1.0", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jest": "^26.1.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-storybook": "^0.5.11", + "eslint-plugin-testing-library": "^5.2.0", + "eslint-plugin-unused-imports": "^2.0.0", + "jest": "^27.5.1", + "prettier": "^2.6.2", + "storybook-addon-turbo-build": "^1.1.0", + "storybook-dark-mode": "^1.0.9", + "ts-jest": "^27.1.4", + "typescript": "4.6.3" + } +} diff --git a/pages/_app.tsx b/pages/_app.tsx index 48877263c..a3a3a6794 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -22,7 +22,7 @@ export default function App(props: AppProps & { colorScheme: ColorScheme }) { return ( <> <Head> - <title>MyHomePage - Your new browser homepage! + Homarr - A homepage for your server!