diff --git a/public/portal/admin.png b/public/portal/admin.png new file mode 100644 index 0000000..1679592 Binary files /dev/null and b/public/portal/admin.png differ diff --git a/public/portal.jpeg b/public/portal/banner.jpeg similarity index 100% rename from public/portal.jpeg rename to public/portal/banner.jpeg diff --git a/public/portal/checkin.png b/public/portal/checkin.png new file mode 100644 index 0000000..c94febb Binary files /dev/null and b/public/portal/checkin.png differ diff --git a/public/portal/event.png b/public/portal/event.png new file mode 100644 index 0000000..1847520 Binary files /dev/null and b/public/portal/event.png differ diff --git a/public/portal/events.png b/public/portal/events.png new file mode 100644 index 0000000..f3c59c4 Binary files /dev/null and b/public/portal/events.png differ diff --git a/public/portal/filters.png b/public/portal/filters.png new file mode 100644 index 0000000..b956ad6 Binary files /dev/null and b/public/portal/filters.png differ diff --git a/public/portal/login.png b/public/portal/login.png new file mode 100644 index 0000000..0ae77e0 Binary files /dev/null and b/public/portal/login.png differ diff --git a/public/portal/profile.png b/public/portal/profile.png new file mode 100644 index 0000000..71870c0 Binary files /dev/null and b/public/portal/profile.png differ diff --git a/public/portal/status.png b/public/portal/status.png new file mode 100644 index 0000000..50ade6a Binary files /dev/null and b/public/portal/status.png differ diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 24d1cb1..fd27735 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -17,7 +17,7 @@ export async function getStaticProps() { const projects: Project[] = [ { title: "Portal", - banner: "/portal.jpeg", + banner: "/banner.jpeg", location: "/portal", longDescription: "An advanced membership & event management system for my university's premier computer science organization.", shortDescription: "Advanced membership & event management system for students", diff --git a/src/pages/phototag.tsx b/src/pages/phototag.tsx index d265250..c658a1f 100644 --- a/src/pages/phototag.tsx +++ b/src/pages/phototag.tsx @@ -12,7 +12,7 @@ const PhototagPage: NextPage = () => { -
+
@@ -29,20 +29,17 @@ const PhototagPage: NextPage = () => { className="!relative pointer-events-none min-h-[10rem] rounded-md object-cover"/>
- -

Phototag is a powerful tool that helps you quickly and easily add rich, descriptive tags to - your - photos. Using Google's Vision API, Phototag automatically generates tags based on the visual - content - of your photos, making it easier than ever to organize and find your photos.

+

+ Phototag is a powerful tool that helps you quickly and easily add rich, descriptive tags to + your photos. Using Google's Vision API, Phototag automatically generates tags based on + the visual content of your photos, making it easier than ever to organize and find your + photos. +

With support for IPTC metadata and Adobe XMP Sidecar files, you can easily integrate - Phototag - into - your existing - workflow on Windows. Whether you're a professional photographer or a casual snapshot taker, - Phototag - is the perfect tool for adding clarity and context to your photos. + Phototag into your existing workflow on Windows. Whether you're a professional + photographer or a casual snapshot taker, Phototag is the perfect tool for adding clarity and + context to your photos.

  • Simple, but configurable
  • diff --git a/src/pages/portal.tsx b/src/pages/portal.tsx new file mode 100644 index 0000000..af68823 --- /dev/null +++ b/src/pages/portal.tsx @@ -0,0 +1,81 @@ +import type {NextPage} from "next"; +import Head from "next/head"; +import Image from "next/image"; +import {BsGithub} from "react-icons/bs"; +import Link from "next/link"; +import AppWrapper from "../components/AppWrapper"; +import type {ReactNode} from "react"; + +const images: [string, string | ReactNode][] = [ + ["/portal/events.png", <> A page listing all current events.
    Initial data is cached for performance, but + becomes + dynamic when filtered.], + ["/portal/admin.png", "A secure admin panel for our officers to view, filter & edit members & events."], + ["/portal/event.png", "The view of a specific event."], + ["/portal/checkin.png", "The check-in view."], + ["/portal/filters.png", "Organization filtering options. Dynamic semester filtering & event sorting is also available."], + ["/portal/login.png", "The login. Fast form validation, seamless login."], + ["/portal/profile.png", <>The member profile view; fully editable on both desktop & mobile.
    Seamless editing + of profiles for users. Full validation available.], + ["/portal/status.png", "Members can check their progress towards becoming full members & view what events they attended."], +] + +const PhototagPage: NextPage = () => { + return <> + + Portal | Xevion.dev + + + +
    +
    +
    +
    + Portal +
    +
    + + + +
    +
    +
    + + + +
    +
    +

    + Created in service of our membership, Portal was designed as a approachable membership + portal + for our users so we could track membership, advertise events and replace our + existing database solution. +

    +
      +
    • Fast - built to serve thousands
    • +
    • Cheap - minimize costs
    • +
    • Open Source - help us improve
    • +
    • Cutting Edge - the latest technology
    • +
    +

    Screenshots

    +
    + {images.map(([src, description]) => { + return
    + + {description} +
    + } + )} +
    +
    +
    +
    +
    + + +} + +export default PhototagPage; \ No newline at end of file