initial commit
This commit is contained in:
commit
0f94d1300e
18 changed files with 947 additions and 0 deletions
85
app/about/page.tsx
Normal file
85
app/about/page.tsx
Normal file
|
@ -0,0 +1,85 @@
|
|||
import { Nav } from "@/components/core/nav";
|
||||
import { GiStoneWheel } from "react-icons/gi";
|
||||
import { TbUserSquareRounded } from "react-icons/tb";
|
||||
import { RiTelegram2Line } from "react-icons/ri";
|
||||
|
||||
export default function About() {
|
||||
return (
|
||||
<main>
|
||||
<Nav />
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbUserSquareRounded size={36} />
|
||||
<h1 className="text-4xl font-bold">
|
||||
About
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3">
|
||||
<h2 className="text-2xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
p0ntus is a small team of developers working towards
|
||||
<span className="bg-red-400 text-white rounded-full italic ml-2 px-3 pr-4 py-1">one goal</span>.
|
||||
</h2>
|
||||
<h2 className="text-xl text-center w-full flex flex-wrap items-center justify-center">
|
||||
we want to make the cloud accessible to <span className="ml-1 italic">everyone</span>.
|
||||
</h2>
|
||||
<h2 className="text-lg text-center w-full flex flex-wrap items-center justify-center">
|
||||
no corporate sponsors, no closed source, no microtransactions.
|
||||
</h2>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<div className="flex flex-col items-center justify-between gap-3">
|
||||
<GiStoneWheel size={60} />
|
||||
<h2 className="text-3xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
we don't reinvent the wheel,
|
||||
</h2>
|
||||
<h2 className="text-2xl text-center w-full flex flex-wrap items-center justify-center">
|
||||
but we get the job done.
|
||||
</h2>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-2 max-w-3xl">
|
||||
<p className="text-md text-center w-full flex flex-wrap items-center justify-center">
|
||||
we put effort into finding, creating, and building on the best tools avaliable to bring the magic of the cloud to you.
|
||||
</p>
|
||||
<p className="text-md text-center w-full flex flex-wrap items-center justify-center">
|
||||
we believe using cloud services is <span className="ml-1 italic">more than just a way to store your data.</span>
|
||||
<span className="font-bold">your experience should be valued.</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<div className="flex flex-col items-center justify-between gap-3">
|
||||
<RiTelegram2Line size={60} />
|
||||
<h2 className="text-3xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
let's talk.
|
||||
</h2>
|
||||
<div className="flex flex-col items-center justify-between gap-2">
|
||||
<p className="text-md text-center w-full flex flex-wrap items-center justify-center">
|
||||
we're always looking for new people to help out.
|
||||
</p>
|
||||
<p className="text-md text-center w-full flex flex-wrap items-center justify-center">
|
||||
we're here for everything else, too! account support, deployment, service, and more.
|
||||
</p>
|
||||
<p className="text-md text-center w-full flex flex-wrap items-center justify-center">
|
||||
join us on telegram for support, questions, chatting, and more.
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row items-center justify-center gap-4 my-3">
|
||||
<button className="flex flex-row items-center justify-center gap-2 bg-blue-500 text-white px-4 py-2 rounded-md">
|
||||
<RiTelegram2Line size={24} />
|
||||
<span className="text-md">
|
||||
contact
|
||||
</span>
|
||||
</button>
|
||||
<button className="flex flex-row items-center justify-center gap-2 bg-blue-500 text-white px-4 py-2 rounded-md">
|
||||
<RiTelegram2Line size={24} />
|
||||
<span className="text-md">
|
||||
join group
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
26
app/globals.css
Normal file
26
app/globals.css
Normal file
|
@ -0,0 +1,26 @@
|
|||
@import "tailwindcss";
|
||||
|
||||
:root {
|
||||
--background: #ffffff;
|
||||
--foreground: #171717;
|
||||
}
|
||||
|
||||
@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) {
|
||||
:root {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #ededed;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
background: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-geist-sans);
|
||||
}
|
34
app/layout.tsx
Normal file
34
app/layout.tsx
Normal file
|
@ -0,0 +1,34 @@
|
|||
import type { Metadata } from "next";
|
||||
import { Geist, Geist_Mono } from "next/font/google";
|
||||
import "./globals.css";
|
||||
|
||||
const geistSans = Geist({
|
||||
variable: "--font-geist-sans",
|
||||
subsets: ["latin"],
|
||||
});
|
||||
|
||||
const geistMono = Geist_Mono({
|
||||
variable: "--font-geist-mono",
|
||||
subsets: ["latin"],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "p0ntus",
|
||||
description: "p0ntus is a free and open set of services for the public",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body
|
||||
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
94
app/page.tsx
Normal file
94
app/page.tsx
Normal file
|
@ -0,0 +1,94 @@
|
|||
import Link from "next/link";
|
||||
import { SiForgejo, SiJellyfin, SiOllama } from "react-icons/si";
|
||||
import { TbMail, TbKey, TbServer, TbArrowRight } from "react-icons/tb";
|
||||
import { Nav } from "@/components/core/nav";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main>
|
||||
<Nav />
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<h1 className="text-4xl font-bold">
|
||||
p0ntus
|
||||
</h1>
|
||||
<h3 className="text-2xl">
|
||||
open source at your fingertips
|
||||
</h3>
|
||||
</div>
|
||||
<hr className="border-black mt-24 mb-24" />
|
||||
<div className="max-w-6xl mx-auto w-full px-4 md:px-10">
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-x-38 gap-y-16">
|
||||
<div className="flex flex-col items-center justify-start gap-6 h-full">
|
||||
<h2 className="text-3xl font-bold text-center w-full whitespace-nowrap">Services</h2>
|
||||
<h3 className="text-xl italic text-center w-full">what can we offer you?</h3>
|
||||
<div className="grid grid-cols-3 gap-10 my-8">
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/git" className="flex flex-col items-center gap-2">
|
||||
<SiForgejo size={50} />
|
||||
<h3 className="text-lg font-bold">git</h3>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/mail" className="flex flex-col items-center gap-2">
|
||||
<TbMail size={50} />
|
||||
<h3 className="text-lg font-bold">mail</h3>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/ai" className="flex flex-col items-center gap-2">
|
||||
<SiOllama size={50} />
|
||||
<h3 className="text-lg font-bold">ai</h3>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/tv" className="flex flex-col items-center gap-2">
|
||||
<SiJellyfin size={50} />
|
||||
<h3 className="text-lg font-bold">tv</h3>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/keybox" className="flex flex-col items-center gap-2">
|
||||
<TbKey size={50} />
|
||||
<h3 className="text-lg font-bold">keybox</h3>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-center gap-3">
|
||||
<Link href="/services/keybox" className="flex flex-col items-center gap-2">
|
||||
<TbServer size={50} />
|
||||
<h3 className="text-lg font-bold">hosting</h3>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-start gap-6 h-full">
|
||||
<h2 className="text-3xl font-bold text-center w-full whitespace-nowrap">Where we are</h2>
|
||||
<h3 className="text-xl italic text-center w-full">how can you find us?</h3>
|
||||
<div className="flex flex-col items-center gap-6 mt-6">
|
||||
<p className="text-lg text-center">
|
||||
p0ntus is fully on the public internet! our servers are mainly located in the united states.
|
||||
</p>
|
||||
<p className="text-lg text-center">
|
||||
we also operate servers in the united states, canada and germany.
|
||||
</p>
|
||||
<Link href="/servers" className="flex flex-row items-center gap-2 text-lg text-center text-blue-500 hover:underline">
|
||||
our servers <TbArrowRight size={20} />
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-start gap-6 h-full">
|
||||
<h2 className="text-3xl font-bold text-center w-full whitespace-nowrap">Why is p0ntus free?</h2>
|
||||
<h3 className="text-xl italic text-center w-full">what's the point?</h3>
|
||||
<div className="flex flex-col items-center gap-6 mt-6">
|
||||
<p className="text-lg text-center">
|
||||
everything today includes microtransactions, and we were fed up with it.
|
||||
</p>
|
||||
<p className="text-lg text-center">
|
||||
p0ntus exists to show that it is possible to have a free and open set of services that people have fun using.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
130
app/servers/page.tsx
Normal file
130
app/servers/page.tsx
Normal file
|
@ -0,0 +1,130 @@
|
|||
import { Nav } from "@/components/core/nav";
|
||||
import { TbServer } from "react-icons/tb";
|
||||
import Flag from 'react-world-flags';
|
||||
|
||||
export default function Servers() {
|
||||
return (
|
||||
<main>
|
||||
<Nav />
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<h1 className="text-4xl font-bold">
|
||||
servers and infrastructure
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<h2 className="text-2xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
where we host out of
|
||||
</h2>
|
||||
<div className="grid grid-cols-3 gap-4 my-4">
|
||||
<p className="flex flex-row items-center justify-between gap-2 text-lg bg-blue-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="US" className="w-6 h-6" /> usa
|
||||
</p>
|
||||
<p className="flex flex-row items-center justify-between gap-2 text-lg bg-red-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="CA" className="w-6 h-6" /> canada
|
||||
</p>
|
||||
<p className="flex flex-row items-center justify-between gap-2 text-lg bg-orange-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="DE" className="mr-4 w-6 h-6" /> germany
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3">
|
||||
<h2 className="text-2xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
hardware
|
||||
</h2>
|
||||
<div className="grid grid-cols-3 gap-4 my-4 w-5xl">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
NY-1
|
||||
</span>
|
||||
</div>
|
||||
<p className="flex flex-col text-sm my-2 gap-4">
|
||||
<span><span className="font-bold">CPU:</span> 2x Intel Xeon E5-2699 v4 @ 3.60 GHz</span>
|
||||
<span><span className="font-bold">RAM:</span> 256GB (8x Samsung 32GB DDR4)</span>
|
||||
<span><span className="font-bold">Boot Drive:</span> Samsung Evo 850 250GB</span>
|
||||
<span><span className="font-bold">Storage:</span> HP FX900 Pro 4TB NVMe</span>
|
||||
<span><span className="font-bold">Bandwidth:</span> 40TB</span>
|
||||
<span><span className="font-bold">Location:</span> Buffalo, New York, USA</span>
|
||||
<span><span className="font-bold">Provider:</span> ColoCrossing</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2 text-lg bg-red-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
CA-1
|
||||
</span>
|
||||
</div>
|
||||
<p className="flex flex-col text-sm my-2 gap-4">
|
||||
<span><span className="font-bold">CPU:</span> 2 cores shared</span>
|
||||
<span><span className="font-bold">RAM:</span> 2GB</span>
|
||||
<span><span className="font-bold">Disk:</span> 3.5TB Raidz2</span>
|
||||
<span><span className="font-bold">Storage:</span> HP FX900 Pro 4TB NVMe</span>
|
||||
<span><span className="font-bold">Bandwidth:</span> Unlimited @ 250Mbps</span>
|
||||
<span><span className="font-bold">Location:</span> Montreal, Canada</span>
|
||||
<span><span className="font-bold">Provider:</span> Serverica</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2 text-lg bg-orange-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
DE-1
|
||||
</span>
|
||||
</div>
|
||||
<p className="flex flex-col text-sm my-2 gap-4">
|
||||
<span><span className="font-bold">CPU:</span> 1vCPU AMD EPYC</span>
|
||||
<span><span className="font-bold">RAM:</span> 1GB</span>
|
||||
<span><span className="font-bold">Storage:</span> 153GB</span>
|
||||
<span><span className="font-bold">Location:</span> Frankfurt, Germany</span>
|
||||
<span><span className="font-bold">Bandwidth:</span> Unlimited</span>
|
||||
<span><span className="font-bold">Provider:</span> Oracle Cloud</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2 text-lg bg-orange-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
DE-2
|
||||
</span>
|
||||
</div>
|
||||
<p className="flex flex-col text-sm my-2 gap-4">
|
||||
<span><span className="font-bold">CPU:</span> 1vCPU AMD EPYC</span>
|
||||
<span><span className="font-bold">RAM:</span> 1GB</span>
|
||||
<span><span className="font-bold">Storage:</span> 47GB</span>
|
||||
<span><span className="font-bold">Location:</span> Frankfurt, Germany</span>
|
||||
<span><span className="font-bold">Bandwidth:</span> Unlimited</span>
|
||||
<span><span className="font-bold">Provider:</span> Oracle Cloud</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-3 my-20">
|
||||
<h2 className="text-2xl font-semibold text-center w-full flex flex-wrap items-center justify-center">
|
||||
our ip addresses
|
||||
</h2>
|
||||
<p className="text-center text-md my-2">
|
||||
if you own a mail server/service, please consider whitelisting our ip addresses.
|
||||
</p>
|
||||
<div className="grid grid-cols-3 gap-4 my-4">
|
||||
<p className="flex flex-row items-center gap-2 text-lg bg-blue-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="US" className="w-6 h-6" /> <span className="font-bold">NY1:</span> 192.3.178.206
|
||||
</p>
|
||||
<p className="flex flex-row items-center gap-2 text-lg bg-red-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="CA" className="w-6 h-6" /> <span className="font-bold">CA1:</span> 209.209.9.109
|
||||
</p>
|
||||
<p className="flex flex-row items-center gap-2 text-lg bg-orange-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="DE" className="w-6 h-6" /> <span className="font-bold">DE1:</span> 138.2.154.209
|
||||
</p>
|
||||
<p className="flex flex-row items-center gap-2 text-lg bg-orange-400 text-white px-4 py-2 rounded-full">
|
||||
<Flag code="DE" className="w-6 h-6" /> <span className="font-bold">DE2:</span> 158.180.60.92
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
12
app/services/[slug]/page.tsx
Normal file
12
app/services/[slug]/page.tsx
Normal file
|
@ -0,0 +1,12 @@
|
|||
"use client"
|
||||
|
||||
import { ServicesShell } from "@/components/front/services"
|
||||
import { useParams } from "next/navigation"
|
||||
|
||||
export default function Service() {
|
||||
const slug = useParams().slug
|
||||
|
||||
return (
|
||||
<ServicesShell slug={slug as string} />
|
||||
)
|
||||
}
|
87
app/services/page.tsx
Normal file
87
app/services/page.tsx
Normal file
|
@ -0,0 +1,87 @@
|
|||
import { Nav } from "@/components/core/nav"
|
||||
import { SiForgejo, SiJellyfin, SiOllama } from "react-icons/si"
|
||||
import { TbKey, TbMail, TbServer, TbTool } from "react-icons/tb"
|
||||
import Link from "next/link"
|
||||
|
||||
export default function Services() {
|
||||
return (
|
||||
<main>
|
||||
<Nav />
|
||||
<div className="flex flex-col items-center justify-between gap-10 my-16">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbTool size={36} />
|
||||
<h1 className="text-4xl font-bold">
|
||||
services
|
||||
</h1>
|
||||
</div>
|
||||
<div className="flex flex-col items-center justify-between gap-2">
|
||||
<h2 className="text-3xl font-light text-center w-full flex flex-wrap items-center justify-center">
|
||||
please select a service.
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-4 gap-4 my-4 w-3/4 mx-auto">
|
||||
<Link href="/services/git">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<SiForgejo size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
git
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/services/mail">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbMail size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
email
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/services/ai">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<SiOllama size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
ai
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/services/tv">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<SiJellyfin size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
tv
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/services/keybox">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbKey size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
keybox
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/services/hosting">
|
||||
<div className="flex flex-col gap-2 text-lg bg-blue-400 text-white px-8 py-8 rounded-4xl">
|
||||
<div className="flex flex-row items-center justify-between gap-2">
|
||||
<TbServer size={36} />
|
||||
<span className="text-2xl font-bold">
|
||||
hosting
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</main>
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue