Skip to content
View keithhetrick's full-sized avatar

Block or report keithhetrick

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
keithhetrick/README.md

Hi there 👋 I’m Keith Hetrick

Typing SVG

I'm a husband, father, Grammy-nominated songwriter, and software developer!

I am a Full-Stack software developer. I specialize in JavaScript (React, Node, NoSQL) & am currently learning Next.js, TypeScript, C++, JUCE, React Native, Django, as well as other Cloud engineering technologies like AWS (like EC2, Amplify, Route 53, Image Builder, S3, Lambda), Vercel, Docker, Postgres, SSH, SSL, Bash, Linux & NeoVim.

I’m looking to collaborate on projects & portfolio building. Looking forward to connecting with you!


Typing SVG


⚙️ Languages and Tools

Programming Languages



📊 Statistics

stats_banner

Keith Hetrick's GitHub Stats

GitHub Streak

Most Used Languages

⭐️ Features

Table of Contents

  • 1. Pixel Space - FULL STACK - text-to-image generator & social platform
  • 2. musicNotes - FULL STACK - Employee Portal for the LA location of international Music School "Garnish"
  • 3. Databox - FULL STACK - file storage app, with full integration using AWS S3 buckets
  • 4. Cinna-Kanban - FULL STACK - Kanban board that can add, update, and delete tasks & users
  • 5. Chatty Cathy - FULL STACK - interacive chatbot utilzing OpenAI's ChatGPT AI technology

1. Pixel Space

This is a full stack application that uses the Dall-E API to generate images from text prompts. The application is built using React, Node, Express, and MongoDB. Images are stored in Cloudinary (a cloud-based image and video management service), and the generated image-urls are stored in a MongoDB database, for easy access & sharability. Swipeabity is implemented on the Image page using the React-Swipeable package, and the app is deployed on AWS EC2.

Pixel Space built with:

Pixel-Space-Home

Pixel-Space-Create

Pixel-Space-Create-Validation

Pixel-Space-Home-With-New-Post

Pixel-Space-Login

Pixel-Space-Register

Pixel-Space-View-Users

Pixel-Space-User

Pixel-Space-Edit-User

Pixel-Space-Edit-User-Delete-Check

Pixel-Space-Edit-User-Delete-Validation

Pixel-Space-Edit-User-Password-Validation

Pixel-Space-Home-Mobile Pixel-Space-Create-Mobile Pixel-Space-Post-Mobile Pixel-Space-Register-Mobile

Installation

  1. Clone the repo
git clone <repo_url>
  1. Install NPM packages on both the client and server
npm install
  1. Create a .env file in the server directory and add the following:
PORT=8000 || <your_port_number>
MONGODB_URL=<your_mongoDB_uri> => can be created via MongoDB Atlas
NODE_ENV=<development> || <production>
ACCESS_TOKEN_SECRET=<your_access_token_secret> => can be generated inside Node shell via the following command: require('crypto').randomBytes(64).toString('hex')
REFRESH_TOKEN_SECRET=<your_refresh_token_secret> => use the same command as above, and paste the new result into the .env file
CLOUDINARY_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
CLIENT_ID=your_google_client_id
CLIENT_SECRET=your_google_client_secret
  1. Run the app on both the client and server
npm run start => client
nodemon server => server

Usage

  1. Enter a text prompt in the input field
  2. Click the "Generate Image" button
  3. Click the "Save Image" button to save the image to your computer
  4. Click the "Share Image" button to share the image on social media

2. musicNotes

A simple portal for Garnish employees to keep track of their current tasks and projects. This is a full-stack application built with React, Redux, Node.js, Express, and MongoDB. It has a fully functional Auth/login& reg system manually built from the ground up. The application is currently hosted on AWS EC2 and due to permissions (from the Auth functionality), the full application is only accessible to Garnish employees - only the login page is publicly accessible.

musicNotes built with:

Screen Shot 2023-02-04 at 10 57 27 PM

Screen Shot 2023-02-04 at 10 58 24 PM

Screen Shot 2023-02-04 at 10 59 28 PMScreen Shot 2023-02-04 at 11 07 50 PM

Screen Shot 2023-02-04 at 11 04 46 PM

Screen Shot 2023-02-04 at 11 10 36 PMScreen Shot 2023-02-04 at 11 11 20 PM

Installation

  1. Clone the repo
git clone <repo_url>
  1. Install NPM packages on both the client and server directories
npm install
  1. Create a .env file in the server directory and add the following:
PORT=8000
DATABASE_URI=<your_mongoDB_uri> => can be created via MongoDB Atlas
NODE_ENV=<development> || <production>
ACCESS_TOKEN_SECRET=<your_access_token_secret> => can be generated inside Node shell via the following command: require('crypto').randomBytes(64).toString('hex')
REFRESH_TOKEN_SECRET=<your_refresh_token_secret> => use the same command as above, and paste the new result into the .env file
  1. Run the server
nodemon server.js
  1. Run the client
npm run start

Usage

  1. Login with your credentials
  2. Create a new project or task
  3. Assign a project or task to yourself or another employee
  4. View your current projects and tasks
  5. Managers - Update your current projects and tasks
  6. Managers - Delete your current projects and tasks
  7. Admin - Add a new employee, or update an existing employee's information
  8. Admin - Delete an employee

3. Databox

Full Stack Application w/ Login and Registration, full CRUD with validations and access control, S3 file storage, and API payment for membership subscription using Python/Django/React

Group Project Collaborators: Keith Hetrick, Joshua Becker

Databox built with:

Project currently in development. Databox is a cloud based file hosting and storage service.

databox_logo_lg

image

"# databox"

4. Cinna-Kanban

Kanban board that a user can add tasks to and update. A Kanban board is a project management tool designed to help visualize workflow for an individual and/or team.

Deployed to AWS (Amazon Web Services) EC2 instance.

Cinna-Kanban built With

Installation

  1. Clone the repo
    git clone
  2. Install NPM packages
    npm install
  3. Run the app
    npm start
  4. Open http://localhost:3000 to view it in the browser.

Usage

  1. Create a new task by clicking the "Add Task" button
  2. Update the task by clicking the "Update Task" button
  3. Delete the task by clicking the "Delete Task" button

Screen Shot 2022-09-25 at 1 59 45 PM

5. Chatty Cathy, an AI personal assistant

Meet Cathy, a Full-stack, fully-responsive personal AI assistant. Type any question to get real-time answers from Cathy herself. Ask and you shall receive!

Chatty Cathy built with:

Deployed to AWS for 24-hr access

Screen Shot 2022-12-26 at 4 42 07 PM

Screen Shot 2022-12-26 at 4 46 11 PM Screen Shot 2022-12-26 at 4 44 41 PM

🤖 AI & Automation

Table of Contents

  • 1. Wocka-Flocka Bot - automated & interactive Discord Bot
  • 2. AWS/S3 Bucket Creator - full CRUD app that interacts directly with S3 buckets from the terminal
  • 4. Web Scrapers Collection - a series of web scraper apps in Node.js

1. Wocka-Flocka Bot

Interactive bot that can tell you jokes, quotes, stories, the weather, even define words in the Merriam-Webster Dictionary! It can also play games with you such as Rock, Paper, Scissors, Guess the Number, as well as fully-integrated AI-powered conversations using OpenAI GPT-3 technology!

Wocka-Flock Bot built with:

Deployed to AWS EC2 Instance for 24-hr functionality

Wocka-Flocka uses Discord as its "front-end" that enables users to engage with it.

ChatGPT integration allows Wocka-Flocka users to have real AI-powered conversations with the bot using OpenAI GPT-3 technology.

Screen Shot 2023-01-06 at 4 16 05 PM

Automated "Quote of the Day" feature using Node-Cron

Dynamic "Holiday Countdown" algorithm tells you how many days until any specific holiday

Screen Shot 2023-01-06 at 4 11 04 PM

Plethora of embedded game apps that can be played with Wocka-Flocka such as:

Rock, Paper, Scissors
Guess the Number
Flip a coin
Roll the dice
8-Ball

Screen Shot 2023-01-06 at 4 02 06 PM

Embedded "Joke" app that can tell you jokes

Embedded "Story" app that can tell you stories

Embedded "Quote" app that can tell you quotes

Embedded "Developer" app that can tell you Developer-related information

Screen Shot 2023-01-06 at 3 57 44 PM

Screen Shot 2023-01-06 at 4 03 11 PM

Embedded Web-scraped "News" & "Random Sentence Generator" apps that can tell you the latest news & generate random sentences

Screen Shot 2023-01-06 at 4 20 48 PM

"Dictionary" app that can define any word inside the Merriam-Webster Dictionary using a unique & specially-made Dictionary algorithm

Screen Shot 2023-01-06 at 4 08 30 PM

Embedded "Weather" app that uses Socket-IO technology to give real-time climate data based on user location

Can give a collection of algorithm, data structure, & programmer-related information on command such as:

Screen Shot 2023-01-06 at 3 55 40 PM

Screen Shot 2023-01-06 at 4 03 34 PM

2. AWS/S3 Bucket CRUD Functionality in Node

Full CRUD with S3 Bucket, AWS, and Node.js. Uses a random bucket name generator to create a unique bucket name for each user to avoid bucket name collisions. The bucket name is saved in a text file in the root directory in susbtitution of a database...can be easily modified to use a database.

AWS/S3 Bucket CRUD Functionality built with:

Automated File Read functionality that sends a daily email of the current buckets on AWS
Includes a random bucket name generator to create a unique bucket name for each user

Installation

In order to run this app, you will need to create a .env file in the root directory with the following variables:

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

These variables are your AWS access key and secret access key. You can find these in your AWS console.

Usage

npm install
node index.js

Before running app, make sure to comment out the desired function(s) in the index.js. The app will run any function(s) that is not commented out.

3. Collection of Web Scrapers in Node.js

A collection of web scraping projects using Node.js & their corresponding technologies

Web Scrapers Collection built with:

Web Scrapers

Formula One Scraper (Node.js, Cheerio, Node-Fetch, PDFKit)

  • Scrapes the Formula One website for the latest news, results,standings, converts the scraped data into a PDF file, and saves it to a local folder.

Book Scraper (Node.js, Cheerio, Axios, Json2Csv, CsvToJson)

  • Scrapes the website for the latest books, converts the scraped data into a CSV file & saves it to a local folder.

Hacker News Scraper (Node.js, Cheerio, Got-Scraping, Crawlee, Docker)

  • Version 1: Scrapes the website for the latest news.
  • Version 2: The CheerioCrawler version using Crawlee is similar, but since Crawlee "simulates" the actions of a real user, the browser settings are defaulted to "headless: false", so the designated browser opens & the whole program runs as automated. Also, any & all Datasets are stored in a storage folder in the root directory, & containerized using Docker.

Product Scraper (Node.js, Cheerio, Playwright, Crawlee, Docker)

  • Version 1: Scrapes a website for a specific product & takes a screenshot of the webpage. Code is currently set for mintmobile.com.
  • Version 2: The PlaywrightCrawler version using Crawlee is similar, but since Crawlee "simulates" the actions of a real user, the browser settings are defaulted to "headless: false", so the designated browser opens & the whole program runs as automated. Also, any & all Datasets are stored in a storage folder in the root directory, & containerized using Docker.

Amazon Scraper (Node.js, Cheerio, Puppeteer, Playwright)

  • Version 1: Scrapes Amazon for a specific product & takes a screenshot of the webpage.
  • Version 2: The Playwright version is similar, but since Playwright "simulates" the actions of a real user, the browser settings are defaulted to "headless: false", so the designated browser opens & the whole program runs as automated.

Yelp Scraper (Node.js, Cheerio, Unirest)

  • Scrapes Yelp for the latest restaurants, their corresponding information & saves it in a local folder.

Google Search Scraper (Node.js, Cheerio, Unirest)

  • Scrapes Google for the latest search results.

Google Jobs Scraper (Node.js, Cheerio, Unirest, PDFKit)

  • Running as a background app via PM2 (Process Management), Job scrapers scrapes Google for the latest jobs in an specific area, converts the scraped data into a PDF file, saves to a local folder, & uploaded/sent as an email via custom-made Email Sender App.

Google Images Scraper (Node.js, Cheerio, Unirest)

  • Scrapes Google for the latest images in an area, and downloads them to a local folder.

Website Image Scraper (Node.js, Puppeteer)

  • Scrapes a website for all of its images, and downloads them to a local folder.

Youtube Trending Scraper (Node.js, Express, yt-trending-scraper, EJS)

  • Scrapes YouTube for the latest trending videos by country & category.

Multiple Website Scraper (Node.js, Puppeteer, Node-Cron)

  • Scrapes multiple websites for images, texts, can perform operations such as button clicking, form submission, as well as saves the scraped data to a local folder. Can also be automated using Node-Cron.

Pinned Loading

  1. Pixel-Space Pixel-Space Public

    A full-stack text-to-image AI art generator social app

    JavaScript 1 1

  2. Brainium Brainium Public

    Brainium is a full-stack, AI-powered SAAS blog generator that uses GPT-3 to generate SEO-optimized blog posts instantly.

    JavaScript 31 6

  3. open-ai-chatty-cathy open-ai-chatty-cathy Public

    Full-stack app built with Vite & Node, and uses the OpenAI API to render real-time responses for users

    JavaScript

  4. databox databox Public

    Forked from joshuabecker91/databox

    A Full-stack AWS S3/cloud-based storage app

    JavaScript

  5. musicNotes musicNotes Public

    A Full-stack app for Garnish employees to keep track of their current tasks and projects.

    JavaScript

  6. Algo-Practice Algo-Practice Public

    A collection of algorithms & corresponding solutions

    JavaScript