<script setup lang="ts">
import PlainLink from '@/components/PlainLink.vue'
import SoftwareProjectTile from '@/components/SoftwareProjectTile.vue'
</script>

<template>
  <main>
    <p>
      Here you'll find a selection of projects I've worked on over the course of my software
      engineering career.
    </p>
    <p>
      Beside the projects listed here, you can view my complete portfolio on
      <a href="https://git.andrewlalis.com" class="link-out">git.andrewlalis.com</a>. I also have a
      <a href="https://github.com/andrewlalis" class="link-out">GitHub</a> account, but I only use
      it for collaboration and projects that rely on GitHub's API integration.
    </p>

    <article>
      <SoftwareProjectTile
        name="Finnow"
        url="https://finnow.andrewlalis.com"
        :tags="['Dlang', 'Vue', 'Typescript', 'Finance']"
      >
        <p>
          An evolution of my previous desktop app <em>Perfin</em>, this is a web application that
          provides a more universal platform for personal finance management, with responsive views
          and more comprehensive tools for searching, along with so many other improvements over the
          first iteration.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="Perfin"
        url="https://git.andrewlalis.com/andrew/perfin"
        :tags="['Java', 'JavaFX', 'Finance']"
      >
        <p>
          A desktop personal finance application that makes it easy to manage your accounts and
          transactions in a secure manner. Record transactions, track brokerage assets, and view
          graphs of your spending, total value, and more.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="Guerilla Gardening Map"
        url="https://guerilla-gardening.andrewlalis.com"
        :tags="['Dlang', 'Vue', 'Typescript']"
      >
        <p>
          A website for anonymously tracking and sharing information on
          <a href="https://en.wikipedia.org/wiki/Guerrilla_gardening" class="link-out"
            >Guerilla-Gardening</a
          >
          locations around the world.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="LiteList"
        url="https://litelist.andrewlalis.com"
        :tags="['Dlang', 'Vue', 'Typescript']"
      >
        <p>
          An extremely barebones web application to demonstrate the viability of my own HTTP server.
          It's just your average ToDo list app, with basic JWT-based authentication.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="Handy-Http"
        url="https://github.com/andrewlalis/handy-httpd"
        :tags="['Dlang']"
      >
        <p>
          An lightweight and flexible HTTP server implemented in the D programming language.
          Supports websockets, file serving, complex URL paths with path variables, and more!
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="JavaFX Scene Router"
        url="https://git.andrewlalis.com/andrew/javafx-scene-router"
        :tags="['Java', 'JavaFX']"
      >
        <p>
          A <em>router</em> implementation for JavaFX desktop applications. Define a singleton
          <code>SceneRouter</code>, add some routes to it, and add the router's provided view
          component to your scene graph. Now you can navigate to different "pages" programmatically
          or with user-interaction.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="Gymboard"
        url="https://git.andrewlalis.com/andrew/Gymboard"
        :tags="['Java', 'Spring', 'Vue', 'Typescript', 'Dlang']"
      >
        <p>
          Proof-of-concept for a local gym leaderboard web application, where users post videos of
          their lifts to climb to the top of various leaderboards. Built using a
          <em>modular-monolith</em> software architecture.
        </p>
      </SoftwareProjectTile>
      <SoftwareProjectTile
        name="Streams"
        url="https://github.com/andrewlalis/streams"
        :tags="['Dlang']"
      >
        <p>
          A library that defines useful stream primitive types and implementations for IO, which
          serves as a convenient wrapper around platform-specific reading and writing operations for
          files, sockets, and more.
        </p>
      </SoftwareProjectTile>
    </article>

    <article>
      <h3>Active Web Projects</h3>
      <p>
        While some may have been mentioned above, the following list enumerates all of my active,
        publicly available web projects and where to find them.
      </p>
      <ul>
        <li>
          <PlainLink link="https://litelist.andrewlalis.com" external />
        </li>
        <li>
          <PlainLink link="https://guerilla-gardening.andrewlalis.com" external />
        </li>
        <li>
          <PlainLink link="https://d-package-search.andrewlalis.com" external />
        </li>
        <li>
          <PlainLink link="https://mc-servers.andrewlalis.com" external />
        </li>
      </ul>
    </article>
  </main>
</template>
<style></style>
