diff --git a/.gitignore b/.gitignore index 5ef6a52..906100b 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# bun +bun.lock* \ No newline at end of file diff --git a/README.md b/README.md index e215bc4..46a3792 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,27 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# im-a-server -## Getting Started +Give your server's hostname a proper home on the Internet. -First, run the development server: +## Configuration -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev +Configuration is done through the `.tsx` files in `src/app/config`. Don't worry, even if you haven't used Next.js before, it's dead simple to configure. + +Some other options may be configured with other methods, which are documented here. + +### Server Name + +Changing the server name displayed on the homepage and in the title of the page can be done by setting the `NEXT_PUBLIC_SERVER_NAME` environment variable. You might have to create a new `.env` file. + +**Example:** + +`/.env` + +```text +NEXT_PUBLIC_SERVER_NAME=example ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +### Services -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +You can add service names and icons very easily through the `/src/app/config/services.ts` file. You can use any icon made for React (we suggest [React Icons](https://react-icons.github.io/react-icons)). -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +Comments have been added to help you import icons and place them in the right spot. diff --git a/UNLICENSE b/UNLICENSE new file mode 100644 index 0000000..efb9808 --- /dev/null +++ b/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/bun.lock b/bun.lock index 4ba305f..6430bac 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "next": "15.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", + "react-icons": "^5.5.0", }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -626,6 +627,8 @@ "react-dom": ["react-dom@19.1.0", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.0" } }, "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g=="], + "react-icons": ["react-icons@5.5.0", "", { "peerDependencies": { "react": "*" } }, "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw=="], + "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], diff --git a/package.json b/package.json index e776e84..15a85ca 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,10 @@ "lint": "next lint" }, "dependencies": { + "next": "15.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "next": "15.3.0" + "react-icons": "^5.5.0" }, "devDependencies": { "typescript": "^5", diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/components/services.tsx b/src/app/components/services.tsx new file mode 100644 index 0000000..31aba5e --- /dev/null +++ b/src/app/components/services.tsx @@ -0,0 +1,25 @@ +import services from "../config/services" + +interface Service { + name: string; + icon: React.ComponentType<{ size: number }>; +} + +function Services() { + return ( +
+ {services.map((service: Service) => { + const Icon = service.icon; + return ( +
+ +

{service.name}

+
+ ); + })} +
+ ) +} + +export default Services +export type { Service } \ No newline at end of file diff --git a/src/app/config/services.ts b/src/app/config/services.ts new file mode 100644 index 0000000..99b2cb9 --- /dev/null +++ b/src/app/config/services.ts @@ -0,0 +1,20 @@ +// Import any icons you need +import { SiNginxproxymanager, SiNextcloud } from "react-icons/si" + +// === Don't change these imports! ============= +import { Service } from "../components/services" +// ============================================= + +// Add your services here +const services: Service[] = [ + { + name: "NGINX Proxy Manager", // Name of the service + icon: SiNginxproxymanager, // Corresponding icon imported from above + }, + { + name: "Nextcloud", // Add as many as you like! + icon: SiNextcloud, + }, +] + +export default services \ No newline at end of file diff --git a/src/app/favicon.ico b/src/app/favicon.ico deleted file mode 100644 index 718d6fe..0000000 Binary files a/src/app/favicon.ico and /dev/null differ diff --git a/src/app/globals.css b/src/app/globals.css index a2dc41e..a8e6f63 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -8,8 +8,6 @@ @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); } @media (prefers-color-scheme: dark) { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f7fa87e..7de931c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,20 +1,15 @@ -import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; -import "./globals.css"; +import type { Metadata } from "next" +import { Almendra } from "next/font/google" +import "./globals.css" -const geistSans = Geist({ - variable: "--font-geist-sans", +const almendra = Almendra({ subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); + weight: ["400", "700"], +}) export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: `Hi, I'm ${process.env.NEXT_PUBLIC_SERVER_NAME}`, + description: "I'm a server", }; export default function RootLayout({ @@ -25,7 +20,7 @@ export default function RootLayout({ return ( {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index e68abe6..fed00f3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,103 +1,18 @@ -import Image from "next/image"; +'use client' + +import Services from "./components/services" export default function Home() { return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
- -
- - Vercel logomark - Deploy now - - - Read our docs - -
-
- +
+
+

Hi there,

+

My name is {process.env.NEXT_PUBLIC_SERVER_NAME}, and I'm a server.

+
+
+

I am the backbone for

+ +
- ); + ) }