Projects

Projects all lead to Github for more documentation. Click for Architecture Diagram.

Spaceify

Built in 24 hours for Auburn Hackathon 2024 Space Theme. React web app hosted on AWS EC2 that allows users to dynamically populate 3d rendering of playlists as a solar system. Song metadata determines factors of the planet like size, speed, and rotation. Users can click on planets to hear 30 second snippets of the song that planet represents. Employs computer vision via SciKitLearn to map album art palette to planet color gradient. Utilizes Docker to host the backend, frontend, and NGINX. AWS-EC2 Docker NGINX React SciKitLearn Computer Vision MultiThreading

Additional Image
CGI Recruit Tracker

Built in 24 hours for UA Hackathon 2024. React web app designed to help CGI in their recruiting efforts. The application allows mobile users to easily input information into a MongoDB database. The app implemets a combined authenticaion portal for both students and CGI staff. Endpoints are secure and cannot be accessed manually. Students can update information whenever they need, and upload resumes. HR staff can add addiitonal feedback and update any fields. They can also use OpenAI API to generate feedback based on parsing the submitted resume from the student. Docker React FastAPI OpenAI MongoDB

Additional Image2
AWS DevOps Pipeline

An AWS pipeline created with Terraform. Ansible playbooks build a Jenkins server with a build slave, which analyzes code with SonarQube, which analyzes the codes for bugs and only continues the pipeline if the app does not reach a threshold. It then builds a container with Docker, publishes on JFrog Artifactory, and deploys on Kubernetes for high availability in case of crashes. Terraform AWS-EC2 AWS-EKS Jenkins SonarQube JFrog Artifactory Ansible Docker Kubernetes

Additional Image
End-to-End DevOps Pipeline

A simple web application that updates a live production through AWS automatically. Jenkins polls for changes to GitHub source code for a Tomcat server hosted web application and then executes jobs with Ansible scripts. These scripts create new Docker images with the changes, upload those images to DockerHub, and then deploy the new image into multiple pods on Kubernetes with a loadbalancer. AWS-EC2 AWS-EKS Jenkins Tomcat Maven Ansible Docker Kubernetes

Additional Image
AWS SAM Serverless Zoo Manager

Built in 10 hours for AWS GameDay Hackathon Regions 2024. A serverless AWS project that uses a full AWS SAM template. It builds an animal registry API Gateway API for new and born animals. It also uses a Cloudwatch Bus Rule to trigger a Lambda to automate the feeding for animals. Animals are stored in a DynamoDB database, and the animal processing is done through a Step Function with a Map to process the Lambda functions simultaneously. SAM (Serverless Application Model) API Gateway EventBridge Cron jobs Lambda DynamoDB Step Functions IAM

Additional Image
Serverless Django WebApp

Django web application that uses Postgres to handle user data, while leveraging AWS-S3 for storage of static files. The applicaiton was containerized with Docker and the image was uploading to Amazon Elastic Container Registery (ECR) . The image was then used to deploy the applicatino on Amazon Elastic Container Service (ECS) using the Fargate serverless launch type. The deployment includes security measures with HTTPS support and a custom domain. AWS CLI Boto3 Certificate Manager Django Docker ECR ECS Fargate Gunicorn Postgres RDS Route53

Additional Image
Catalog Web Scraper

A Python bookstore web scraper to extract book information from an online catalogue using Xlml, scrape that information asynchronously using Asyncio and RabbitMQ to queue work items, store information in a PostgreSQL database, allow users to query data from the created database using Flask, and pull data in a way that allows for additional book information than the website provides. The project was containerized using Docker. Python Xlml Asyncio RabbitMQ PostgreSQL Flask Docker

Additional Image
RecruitWise

Built over 2 weeks for Google's AI Hackathon 2024. Program that allows recruiters to chat using Gemini to jobs and get insights into applicants. It's hosting with a React frontend, a FastAPI backend, and connects with Google Cloud to produce candidate information in a conversation like format. It uses RAG to reduce hallucinations by storing data in Pinecone and passing the embedded data to Gemini with the help of VectorAI React Auth0 Docker TailwindCSS Uvicorn FastAPI Dotenv Pinecone Gemini VertexAI MongoDB

Additional Image
React Movie Database GUI

A C# and React JS GUI that connects to Microsoft Sql Server using .NET Entity Framework CORE to do CRUD operations to manipulate movie data. The user can add, like, delete, and sort data in various ways, and these changes with be reflected in the sql database and the GUI. C# ReactJS Microsoft SQL Server .NET6 Entity Framework Core

Additional Image
Cloud File Upload Service

An AWS project that uses Lambda and SNS to allow users to access a Flask webserver to upload files. These files can then be shared via email with recipients recieving links to download uploaded files. User information is stored in a MySQL RDS Database. AWS Lambda SNS Flask MySQL

Additional Image
S3 Website Hosting Custom Action

This project uses various Github Custom Composite Actions, Javscript Actions,and Docker Actions. Using these custom actions, I set up a CI/CD pipeline and deploy a static website to Amazon S3. These actions are trigger automatically upon code commit. Github Actions Github CI/CD Composite Actions Javascript Actions Docker Actions AWS S3

Additional Image
Kafka Stock Market Data Stream

This project uses Jupyter Notebooks to produce to a Apache Kafka Stream hosted on AWS MSK. The stock market API data is consumed by a Jupyter consumer and stored in S3. An AWS Glue crawler takes the S3 Json files, and transforms them into a data catalog for AWS Athena to query against in real-time. Kafka Jupyter Notebooks Pandas AWS MSK AWS EC2 AWS Glue AWS S3

Additional Image
AI Marketing Agent

This was a commisioned project, so the source code is private. Users access the application on any webpage via an embeddedable iframe. The appliction's React frontend is hosted on Firebase and the backend is hosted on Google Cloud's Cloud Run. The FastAPI API communicates with OpenAI's API to generate AI responses. When code chnages are pushed, Github Actions deploys the frontend and backend. It builds a Docker container, which is stored in Google Artifact Registry, which is pulled by Cloud Run. Secrets are stored on Github Secrets and Google Secrets Manager. Github Actions React Firebase Google Cloud Google Cloud Run Google Secrets Manager Google Artifacts Registry Google Secret Manager OpenAI API Docker FastAPI

Additional Image
AI Company Agent

This project demonstrates how to build a company AI agent using Amazon Bedrock and Claude 3 Sonnet to interpret user inputs and execute corresponding API operations via AWS Lambda functions. The agent leverages semantic matching to map user prompts to API descriptions defined in an OpenAPI schema. Banking records are stored in DyamoDB, returned to the Bedrock Agent, which uses RAG Retrieval-Augmented Generation similarty search in an Bedrock Knowledge Base from an OpenSearch vector database, with vector embeddings generated from company pdf stored in S3 RAG Bedrock Agent Bedrock Knowledge Base Claude 3 Sonnet Lambda OpenAPI Schema

Additional Image
AI Chatbot

Dockerized Python application that runs a Streamlet UI for an AI Chatbot. The chatbot uses Langchainedrock, specifically anthropic's claude-3-haiku LLM. The chatbot uses Langchain to keep track of the conversations memory and give contextually accurate responses. Langchain Bedrock Claude 3 Haiku Streamlit Docker

Additional Image
AI RAG Document QA

Dockerized Python application that runs a Streamlet UI for a RAG (Retrieval-Augmented Generation) document question and answering bot. The pdf is loaded, split into chunks, and turned into embeddings by AWS Bedrock's Titan Text. These embeddings are stored in Meta's FAISS Facebook AI Similarity Search. The question that the user gives is embedded, and Langchain performs a similarity search on the question, grabs data context from the Vector storage, and passes that context and question to Claude v-2 LLM, which gives the user a response. Langchain Claude-v2 Titan-embed-text-v1 FAISS Streamlit Docker Langchain

Additional Image
NLP Sentiment Analysis for SQL Database

A Python project that investiagates HuggingFace's Transformers and NLTK, but ultimately Implements SpaCY to add a sentiment section to an PostgreSQL database of posts, and populate those with sentiment polaritys based off the content of the post. The SQL query uses a batch format to make the program run faster. Python HuggingFace NLTK SpaCY PostgreSQL

Golang GraphQL Server

GraphQL Server implemented with Go and MongoDB. Basic queries and mutations, the server can be used to create a dog, get a dog, and get a list of dogs. Golang GraphQL GqlGen MongoDB

Agriculture Monitoring Drone

The purpose of this project was to learn about software development methods, learn to implement software as a team, and produce a dashboard to control a drone for modernized agricultural development. It was developed in Java with the JavaFX GUI. The drone was controlled via the Tello SDK. Java JavaFX Tello SDK

Buildwise

An AI automated devops architecture visualizer. It's a React webapp that either accepts a Github repository link or a manual description of a project. It then prompts OpenAI API to create a graph in the format required by custom edges and nodes from ReactFlow. The graph is then visualized and can be edited as well as interacted with to learn more about how to project connects. OpenAI Docker TailwindCSS TypeScript ReactFlow ReactRouter FASTapi Uvicorn Dotenv ElkJS

Github Actions CI/CD Tutorial

I created this tutorial to teach students about Github Actions and CI/CD Pipeline tools. This project auto-generates comments on issues created in this repository, as well as explains in detail how to develop and setup basic workflows. Feel free to check out the README to see the presentation in detail. Github Actions Github CI/CD React Javascript

Azure Blob/Container Management App

This application creates a simple way to interact with data on the cloud through an abstracted WebApp. A .NET8 application that allows users to add, delete, and view the contents of Blobs and Containers. Users can easily create both blobs and containers and then adjust the content of each. Azure .NET8 C# Blob Storage Blob Service Client

AWS Amplify File-Sharing Dashboard

An AWS Amplify React application that allows users to sign in using Amplify's authenication through Cognito User Pools, then add comments and files to a group dashboard. A user can upload files for all other users to see and download, as well as add comments. Files are stored in S3 and comments are stores via GraphQL into a DynamoDB table. Amplify S3 Cognito DynamoDB React GraphQL

Thrift Store E-Commerce Website

A Javascript and ReactJS application that uses MongoDB to store data and Mongoose to create models to alter data, and Express to create endpoints to access data. It uses JsonWebToken to ensure user authentication when attempting to use various data routes and it encrypts and decrypts data with CryptoJS. This application allows users to create accounts, access products, add them to their carts, and more. Javascript ReactJS MongoDB Mongoose Express JsonWebToken CryptoJS

Healthcare Form Autocomplete (currently maintain for hospital)

Selenium webscraper in Python that takes patient case data from appointments from an excel document with Pandas and automatically inputs and submits that data in the hospitals record system. It interacts with easy and complicated dropdowns, as well as selecting health codes based on various matching. Selenium Pandas Python PipEnv XML

SongStitch

React webapp that uses a FastAPI to server an API with Uvicorn. It uses the Spotify API to grab album art, stitch them together with Pillow and then return the image to frontend, where users can download their custom album-stitched background. Album amounts and resolution of image can be customized by the user. The application gives demos of what the image might appear like in their smartphone screen. Python Pillow Pandas Uvicorn Requests PDM NumpyFastAPI React

Legends of Pygame

A work-in-progress game built from the ground up in Python using the Pygame library. Incorporates graphics, collisions, classes for various entities, world maps, animations, maps that update with player position, and more. Python Pygame

Rust S-Notation Parser

A parser that parses an S-expression language for Polish notation and converts it into an AST using the structs defined in the lib.rs file. The language supports 4 artihmetic operations: +, -, *, ^ where arguments can be integers or other polish notation expressions. Parentheses are optional for binary operators, but are mandator in other k-ary instances. Rust Recursion

Multiple File Search and Execute

A Standard C program takes in command line arguments and presents different data to the user depending on the flags the user provides. All flags can be used in conjunction with one another to produced subsequently more limited results for the data output. The data can be limited based on file size, file type, file name, and the user can execute any command on the specfically selected data. Standard C Linux

AI Image Generator

Using API Gateway, a user can call this Lambda to use Bedrock to access Stability's Stable-Diffusion to generate an image of the prompt. This image is stored in S3 and a Presigned URL is generated and returned to the user. Users can also call the other route for various tasks, such as text summarization. API Gateway Bedrock Stable-Diffusion S3

AI Image Caption Generator

Python project that uses the Torch and Lavis Libraries to implement image captioning and visual question answering. The user uploads an image locally and then can prompt questions about the image. Python PyTorch Lavis

Rust Quadtree Area Calculator

Rust project that places rectanges into a plane and then recursively calculates the area by using a QuadTree data structure. The recursion splits each quadrant into 4 quadrants. It will mark one quadrant as completely filled when inputting rectangles. If the rectangles overlaps with multiple quadrants, it will only insert the intersections. Areas cannot be double counted because if a quadrant is already filled it does not add the area. Rust Recursion

Golang Translate Tool

One of three projects created using Go to learn more about the language more. This project utilizes Go Routines for concurrency, Channels to connect them, and Wait Groups to prevent race condition errors. This application is a CLI application that takes in flags in order to translage a phrase from one language to another. Go Concurrency Go Routines Channels Wait Groups

React Todo-List

React to-do list containerized with Docker. Purpose of this project was to learn more about containerization. Users can add new items to the list, check them as completed, as well as delete them from the list. React Docker Javascript

Bookstore Manager

A Java Swing GUI that a bookstore manager could use to keep track of the inventory of his bookstore, all of his customers, and which customers were renting which books. Java Java Swing

Alter CSV in SQL and Present in Python

Takes in CSV data in Python, passes that data to MySQLWorkbench alters the data in MySQL, and using Pandas, returns a table of the result as well as updating the CSV data. Python MySQL MySQL Workbench Pandas

PDF Data Transfer to Excel Table

Python project that reads pdf tables using Tabula and transfers that data into excel using Pandas library to increase ease of access to the data. The data is then stored in a local folder. Project was containerized using Docker. Python Tabula Pandas Docker

SQLAlchemy Postgres ORM

A Python project demonstrating the use of modern ORM (Object Relational Mapping) techniques with SQLAlchemy to manage a relational database. The project leverages the repository pattern for clean and maintainable data access logic and includes a CRUD interface for managing movie data in a PostgreSQL database. Python SQLAlchemy Postgres PDM

Personal Website

A personal website with a Javascript contact form that makes an api call to Web3Forms.com to send an email to mfkimbell@gmail.com. The website responds to size, and looks clean and professional on IOS. Styling was built with Bootstrap and various snippets of css I've found. It's hosted on Google Domains Javascript BootStrap Google Domains