diff --git a/public/services.json b/public/services.json new file mode 100644 index 0000000..ca8ba1b --- /dev/null +++ b/public/services.json @@ -0,0 +1,146 @@ +[ + { + "name": "Archivebox", + "uri": "https://archivebox.starbase80.dev", + "description": "Backup webpages", + "icon": { + "href": "/icons/archivebox.jpg" + } + }, + { + "name": "Authelia", + "uri": "https://auth.starbase80.dev", + "description": "Authentication", + "icon": { + "href": "/icons/authelia.png" + } + }, + { + "name": "Calibre", + "uri": "https://calibre.starbase80.dev", + "description": "eBook library", + "icon": { + "href": "/icons/calibre.png" + } + }, + { + "name": "Gitea", + "uri": "https://git.starbase80.dev", + "description": "Code hosting", + "icon": { + "href": "/icons/gitea.svg" + } + }, + { + "name": "Jellyfin", + "uri": "https://jellyfin.starbase80.dev", + "description": "Media server", + "icon": { + "href": "/icons/jellyfin.svg" + } + }, + { + "name": "Mastodon", + "uri": "https://notclickable.social", + "description": "NotClickable.social", + "icon": { + "href": "/icons/mastodon.jpg" + } + }, + { + "name": "Mealie", + "uri": "https://mealie.starbase80.dev", + "description": "Recipe manager", + "icon": { + "href": "/icons/mealie.jpg" + } + }, + { + "name": "N8N", + "uri": "https://n8n.starbase80.dev", + "description": "Workflow automation", + "icon": { + "href": "/icons/n8n.jpg" + } + }, + { + "name": "MeTube", + "uri": "https://metube.starbase80.dev", + "description": "Archive YouTube", + "icon": { + "href": "/icons/metube.jpg" + } + }, + { + "name": "Miniflux", + "uri": "https://miniflux.starbase80.dev", + "description": "RSS server", + "icon": { + "href": "/icons/miniflux.jpg" + } + }, + { + "name": "Portainer", + "uri": "https://portainer.starbase80.dev", + "description": "Docker management", + "icon": { + "href": "/icons/portainer.png" + } + }, + { + "name": "Roher Twins", + "uri": "https://rohertwins.starbase80.dev", + "description": "Weekly newsletter", + "icon": { + "href": "/icons/ghost.jpg" + } + }, + { + "name": "Roher Wiki", + "uri": "https://roherwiki.starbase80.dev", + "description": "Family wiki", + "icon": { + "href": "/icons/wikijs.svg" + } + }, + { + "name": "Standard Notes", + "uri": "https://standardnotes.starbase80.dev", + "description": "Knowledge base", + "icon": { + "href": "/icons/standardnotes.png" + } + }, + { + "name": "Vaultwarden", + "uri": "https://vaultwarden.starbase80.dev", + "description": "Password manager", + "icon": { + "href": "/icons/vaultwarden.svg" + } + }, + { + "name": "Visual Studio Code", + "uri": "https://vscode.starbase80.dev", + "description": "Code editor", + "icon": { + "href": "/icons/vscode.jpg" + } + }, + { + "name": "Wallabag", + "uri": "https://wallabag.starbase80.dev", + "description": "Read later", + "icon": { + "href": "/icons/wallabag.png" + } + }, + { + "name": "Woodpecker", + "uri": "https://woodpecker.starbase80.dev", + "description": "Continuous integration", + "icon": { + "href": "/icons/woodpecker.jpg" + } + } +] diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 7593e5b..5ebb57d 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,7 +1,8 @@ import React from "react"; +import userServices from "../../public/services.json"; import { Header } from "../components/header"; import { Services } from "../components/services"; -import { FAKE_SERVICES } from "../shared/types"; +import { IService } from "../shared/types"; interface IProps { title?: string; @@ -9,13 +10,15 @@ interface IProps { } export const IndexPage: React.FunctionComponent = ({ icon, title }) => { + const mySerices = userServices as IService[]; + return (
- +
); diff --git a/src/shared/types.ts b/src/shared/types.ts index 1b52a81..e581e52 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -11,150 +11,3 @@ export interface IIcon { title?: string; alt?: string; } - -export const FAKE_SERVICES: IService[] = [ - { - name: "Archivebox", - uri: "https://archivebox.starbase80.dev", - description: "Backup webpages", - icon: { - href: "/icons/archivebox.jpg", - }, - }, - { - name: "Authelia", - uri: "https://auth.starbase80.dev", - description: "Authentication", - icon: { - href: "/icons/authelia.png", - }, - }, - { - name: "Calibre", - uri: "https://calibre.starbase80.dev", - description: "eBook library", - icon: { - href: "/icons/calibre.png", - }, - }, - { - name: "Gitea", - uri: "https://git.starbase80.dev", - description: "Code hosting", - icon: { - href: "/icons/gitea.svg", - }, - }, - { - name: "Jellyfin", - uri: "https://jellyfin.starbase80.dev", - description: "Media server", - icon: { - href: "/icons/jellyfin.svg", - }, - }, - { - name: "Mastodon", - uri: "https://notclickable.social", - description: "NotClickable.social", - icon: { - href: "/icons/mastodon.jpg", - }, - }, - { - name: "Mealie", - uri: "https://mealie.starbase80.dev", - description: "Recipe manager", - icon: { - href: "/icons/mealie.jpg", - }, - }, - { - name: "N8N", - uri: "https://n8n.starbase80.dev", - description: "Workflow automation", - icon: { - href: "/icons/n8n.jpg", - }, - }, - { - name: "MeTube", - uri: "https://metube.starbase80.dev", - description: "Archive YouTube", - icon: { - href: "/icons/metube.jpg", - }, - }, - { - name: "Miniflux", - uri: "https://miniflux.starbase80.dev", - description: "RSS server", - icon: { - href: "/icons/miniflux.jpg", - }, - }, - { - name: "Portainer", - uri: "https://portainer.starbase80.dev", - description: "Docker management", - icon: { - href: "/icons/portainer.png", - }, - }, - { - name: "Roher Twins", - uri: "https://rohertwins.starbase80.dev", - description: "Weekly newsletter", - icon: { - href: "/icons/ghost.jpg", - }, - }, - { - name: "Roher Wiki", - uri: "https://roherwiki.starbase80.dev", - description: "Family wiki", - icon: { - href: "/icons/wikijs.svg", - }, - }, - { - name: "Standard Notes", - uri: "https://standardnotes.starbase80.dev", - description: "Knowledge base", - icon: { - href: "/icons/standardnotes.png", - }, - }, - { - name: "Vaultwarden", - uri: "https://vaultwarden.starbase80.dev", - description: "Password manager", - icon: { - href: "/icons/vaultwarden.svg", - }, - }, - { - name: "Visual Studio Code", - uri: "https://vscode.starbase80.dev", - description: "Code editor", - icon: { - href: "/icons/vscode.jpg", - }, - }, - { - name: "Wallabag", - uri: "https://wallabag.starbase80.dev", - description: "Read later", - icon: { - href: "/icons/wallabag.png", - }, - }, - { - name: "Woodpecker", - uri: "https://woodpecker.starbase80.dev", - description: "Continuous integration", - icon: { - href: "/icons/woodpecker.jpg", - }, - }, -]; diff --git a/tsconfig.json b/tsconfig.json index 3d0a51a..d37a456 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,21 @@ { - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src", "public"], + "references": [{ "path": "./tsconfig.node.json" }] }