Add more projects and fixup existing ones

This commit is contained in:
mitchell 2024-06-21 18:24:54 -04:00
parent ee0b48af25
commit e0a2e3df9d
12 changed files with 116 additions and 20 deletions

View File

@ -25,7 +25,12 @@ export default defineConfig({
}, },
{ {
text: "Personal Projects", text: "Personal Projects",
items: [{ text: "mjfs.us", link: "/mjfs-us" }], items: [
{ text: "mjfs.us", link: "/mjfs-us" },
{ text: "mjfs.us (Old)", link: "/mjfs-us-react" },
{ text: "lambdarouter", link: "/lambdarouter" },
{ text: "selfpass", link: "/selfpass" },
],
}, },
], ],

View File

@ -13,7 +13,7 @@ const { text, copy, isSupported } = useClipboard();
</script> </script>
<template> <template>
<div v-if="isSupported" class="button-container"> <div v-if="isSupported" class="container">
<VPButton <VPButton
theme="brand" theme="brand"
class="button" class="button"
@ -33,7 +33,7 @@ const { text, copy, isSupported } = useClipboard();
@click="copy(discord)" @click="copy(discord)"
/> />
</div> </div>
<div v-else class="button-container"> <div v-else class="container">
<VPButton <VPButton
theme="brand" theme="brand"
class="button" class="button"
@ -58,8 +58,9 @@ const { text, copy, isSupported } = useClipboard();
<style scoped> <style scoped>
.button { .button {
margin: 6px; margin: 6px;
text-decoration: none;
} }
.button-container { .container {
margin: -6px; margin: -6px;
} }
</style> </style>

26
components/RepoButton.vue Normal file
View File

@ -0,0 +1,26 @@
<script setup lang="ts">
import { VPButton } from "vitepress/theme";
const props = defineProps<{ href: string }>();
</script>
<template>
<div class="container">
<VPButton
theme="brand"
text="Repository"
class="button"
:href="props.href"
/>
</div>
</template>
<style scoped>
.container {
display: flex;
justify-content: center;
}
.button {
margin-top: 30px;
text-decoration: none;
}
</style>

View File

@ -1,15 +1,27 @@
import globals from "globals"; import globals from "globals";
import js from "@eslint/js"; import js from "@eslint/js";
import ts from "typescript-eslint"; import ts from "typescript-eslint";
import tsParser from "@typescript-eslint/parser";
import vue from "eslint-plugin-vue"; import vue from "eslint-plugin-vue";
import vueParser from "vue-eslint-parser";
import prettier from "eslint-config-prettier"; import prettier from "eslint-config-prettier";
export default [ export default [
{ files: ["**/*.{js,mjs,cjs,ts,vue}"] }, { files: ["**/*.{js,mjs,cjs,ts,vue}"] },
{ ignores: [".vitepress/dist", ".vitepress/cache"] }, { ignores: [".vitepress/dist", ".vitepress/cache"] },
{ languageOptions: { globals: globals.browser } },
js.configs.recommended, js.configs.recommended,
...ts.configs.recommended, ...ts.configs.recommended,
...vue.configs["flat/recommended"], ...vue.configs["flat/recommended"],
prettier, prettier,
{
files: ["*.vue", "**/*.vue"],
languageOptions: {
globals: globals.browser,
parser: vueParser,
parserOptions: {
parser: tsParser,
sourceType: "module",
},
},
},
]; ];

15
lambdarouter.md Normal file
View File

@ -0,0 +1,15 @@
<script setup lang="ts">
import RepoButton from "./components/RepoButton.vue";
</script>
# lambdarouter
This package contains a router, written in Golang, capable of routing many AWS Lambda API gateway
requests to anything that implements the aws-lambda-go Handler interface, all in one Lambda
function. It plays especially well with go-kit's awslambda transport package.
This was originally designed for a work project where we wanted to consolidate code and Lambda
functions. It did the job and was used all over our codebase for some time. I imagine it has since
been retired.
<RepoButton href="https://github.com/whip-networks/lambdarouter" />

14
mjfs-us-react.md Normal file
View File

@ -0,0 +1,14 @@
<script setup lang="ts">
import RepoButton from "./components/RepoButton.vue";
</script>
# mjfs.us (React.js version)
The previous version of this site. I've built and rebuilt my personal website in many technologies,
but this is just a simple TypeScript React SPA. Before using TS, I put Flow up to the same task and
was pleasantly surprised, but ultimately won over in other projects by TS.
This site was hosted on S3 and cached/distributed around the US by Cloudfront, much like the new
site. It was also continuously deployed using TravisCI.
<RepoButton href="https://github.com/mitchell/mjfs.us" />

View File

@ -1,7 +1,16 @@
<script setup lang="ts">
import RepoButton from "./components/RepoButton.vue";
</script>
# mjfs.us # mjfs.us
This website is simple but effective and powered by [VitePress](https://vitepress.dev/). A static When creating this newest site, I decided to stick with TypeScript but instead go with Vue for fun.
site generator that uses Vite and Vue under the hood. Its powered by [VitePress](https://vitepress.dev/), a static site generator that uses Vite under the
hood to generate static HTML/JS/CSS assets from Markdown templates and Vue components. It's then
uploaded to S3 and distributed around the US by Cloudfront.
The content is composed with Markdown/Vue files then staticly rendered and deployed to AWS So far I've really enjoyed writing the bulk of the content in Markdown, while being able to add in
S3/Cloudfront for max performance and SEO optimization. Vue single file components where desired. Vue feels very lightweight to write and use, even in this
hybrid environment.
<RepoButton href="https://github.com/mitchell/mjfs-us" />

View File

@ -15,9 +15,8 @@ semi-automated deployment via OTA updates.
## Technologies ## Technologies
- React-Native - React-Native (TypeScript)
- TypeScript - iOS Native Modules (Swift)
- Swift iOS Native Modules - Android Native Modules (Java)
- Java Android Native Modules
- Serverless (AWS Lambda) - Serverless (AWS Lambda)
- AWS DynamoDB & AppConfig - AWS DynamoDB & AppConfig

View File

@ -27,6 +27,7 @@
"format": "prettier -w .", "format": "prettier -w .",
"lint": "eslint .", "lint": "eslint .",
"check": "bun run format && bun run lint && bun run typecheck", "check": "bun run format && bun run lint && bun run typecheck",
"clean": "rm -rf ./.vitepress/cache/ ./.vitepress/dist/" "clean": "rm -rf ./.vitepress/cache/ ./.vitepress/dist/",
"git:add": "bun run check && git add -p"
} }
} }

View File

@ -10,11 +10,9 @@ engineering lead and primary architect.
## Technologies ## Technologies
- Elixir - Phoenix (Elixir)
- C# - React.js (TypeScript)
- Typescript - .NET (C#)
- React.js
- Phoenix Framework
- PostgreSQL - PostgreSQL
- OracleDB - OracleDB
- SQL Server - SQL Server

16
selfpass.md Normal file
View File

@ -0,0 +1,16 @@
<script setup lang="ts">
import RepoButton from "./components/RepoButton.vue";
</script>
# selfpass
Selfpass was intended to be a self-hosted single-user password manager capable of
encrypting/decrypting credentials and storing them remotely through mutual, or two-way, TLS. All of
which is deployable locally or to popular cloud platforms such as GCP and AWS. Some of the
technologies used were go-kit, gRPC, Docker, Redis, and Flutter.
While developing it, after the encryption was implemented, I used this project as my own password
manager for while, before moving on to KeePassXC. I built it mostly out of interest in further
exploring Golang and trying out Dart/Flutter for native development.
<RepoButton href="https://github.com/mitchell/selfpass" />

View File

@ -1,4 +1,4 @@
# TV Time # TV Time (Whip Media)
## Backend Engineer ## Backend Engineer