track internships from pitt-csc repo

Overview

internship-tracker

Directory Structure (city: service)

  • sf/ → Golang REST API
  • montreal/ → AWS Lambda
  • tokyo/ → React/Typescript Web App
  • istanbul → Database Read Script (JS)

Setup

Go API ./sf

  • Make sure to have Go installed: Golang Website (Version 1.16+)
  • Navigate to sf directory: cd sf
  • Put .env file in here (be sure to be in /sf) (.env file posted in slack)
  • Run go install github.com/cosmtrek/air@latest to install air (Go dev. server)
  • Run go mod tidy
  • Run air to spin up development server
    • Note: if this doesn't work, there are 2 options:
    • Look up error on Stack Overflow to try to fix so that dev server can run
    • Just run go run main.go, which will execute and run our Go server, but doesn't have hot reload. If you're not working on the API, this should be sufficient since hot reload won't be very important
  • Server should be running at https://localhost:8080/

Frontend ./tokyo

  • Navigate to tokyo directory: cd tokyo
  • Run npm install to install dependencies
  • Get the following extensions:
    • TailwindCSS Intellisense
    • PostCSS Language Support
    • (TypeScript support too maybe?)
  • Run npm run dev to boot dev server
  • App should be running at https://localhost:3000

DB Scripts ./istanbul

  • Navigate to /istanbul cd istanbul
  • Copy .env file from /sf and paste into /istanbul
  • Run npm install
  • Run node main.js -h to see the query options

Lambda ./montreal

  • lambda_handler is the entry point for the lambda (event and context don't matter for our purposes)
  • Copy the .env file into the montreal directory from slack
  • To test
    • run cd montreal to enter the directory
    • add lambda_handler() to the bottom of the file
    • run python3 lambda_function.py
  • To add dependencies
    • run cd montreal to enter the directory
    • run pip install <dependency>
      • ex. pip install requests
    • run pip install --target ./package <dependency>
    • run cd package
    • run zip -r ../my-deployment-package.zip .
    • When the code is pushed and auto-deployed, the zip file will be used by AWS
  • When pushed to main, our github action will take care of auto deploying the new code to AWS
    • It has its own credentials and everything, so there should be no need to visit AWS
    • If you need to check something on AWS or have questions about the lambda, contact me
Comments
  • add router, add styling structure, add navbar and footer styles, cleanup

    add router, add styling structure, add navbar and footer styles, cleanup

    • Learned how to use react router
    • Added styles, fonts and content to header and footer
    • Added prettier tailwind plugin
    • Structure right now is the following (where the header and footer are on all pages) / /listings /unsubscribe 404 page

    Next up is the signup form (easy and might have done by tonight) and the listings pages (styling is going to be hardest part).

    opened by joepetrillo 2
  • add safety measures to lambda

    add safety measures to lambda

    Lambda should no longer error out and cause retry. It should also now update the database before sending emails and finish sending all emails even when some are invalid.

    opened by nabilbaugher 1
  • SEV 1: Can't send to certain domains

    SEV 1: Can't send to certain domains

    Mailgun gives this error when sending to some domains: "Sender address rejected: Domain not found"

    Seems like it could have something to do with DMARC or something. This impacts less than 20% of users.

    bug 
    opened by nabilbaugher 1
  • Seperate intern postings and new grad postings in emails

    Seperate intern postings and new grad postings in emails

    It is possible that a user selects to be updated for both internships and new grad roles (intended behavior).

    However, it is not clear what each post listed in our emails pertains to. We should just separate them in the email with some sort of heading or indicator next to the location.

    Not urgent.

    enhancement 
    opened by joepetrillo 1
  • Ban IPs requesting too often

    Ban IPs requesting too often

    Rate Limiter will help short term. Need a way to ban IPs that are consistently spamming.

    Ideas:

    • Upon X number of 429 responses (essentially response saying "you're spamming"), we add to a Redis Banlist, and block any IP in Redist banlist upon future requests
      • Redis is in memory, so this isn't quite persistent, though it will "persist" long enough to satisfy our use case
    opened by jackbisceglia 2
  • Roll out confirmation email functionality

    Roll out confirmation email functionality

    Workflow

    • User Signs up
    • Backend stores user data in Redis Cache (or some other temp storage solution), along with an arbitrary UUID
    • Fire off an email to the user with a link for confirmation (UUID appended in link)
    • When verification is successful, fire request to backend with UUID
    • We verify that UUID matches, and pull data out of Redis cache and enter into database

    This is largely doable. Areas of concern

    • Figuring out Redis with Go
    • New email service to send out validation emails. I currently really like our separation of powers with respect to architecture and would like to stay away from adding email services into the Go API and going all monolith on things.
    • UUID cycle needs to thought about more
    enhancement 
    opened by jackbisceglia 0
  • Migrate from Mailgun to AWS SES

    Migrate from Mailgun to AWS SES

    AWS Simple Email Service gives 62,000 free emails per month forever if the requests are coming from a Lambda or EC2 application. After that, it's only $0.10 per 1,000 emails. Mailgun, although it's on the student pack, still only gives 20,000 free emails per month which we will theoretically surpass once we start having over 600 sign-ups. We therefore want to make this migration before trying to get the link put on the pittcsc/coderquad repos.

    enhancement 
    opened by nabilbaugher 1
  • UI Page to display job listings

    UI Page to display job listings

    Should pretty much be a nicer version of the GitHub README's.

    The 2 that we are using for Intern and New Grad respectively are:

    • https://github.com/pittcsc/Summer2023-Internships
    • https://github.com/coderQuad/New-Grad-Positions-2023

    API Endpoint to get all job postings is a GET to: localhost:8080/postings/

    • Returns the job postings in the following shape:
    {
        "NewGradPosts": [{...}, {...}],
        "InternPosts": [{...}, {...}],
    }
    

    Just one page with 2 tabs to display the jobs in table form. 1 tab for intern posts, and the other for newgrad Route preferably: https://domain/joblistings, or something like that

    enhancement 
    opened by jackbisceglia 4
Owner
Jack Bisceglia
Computer Science Student at UMass Amherst - 2023
Jack Bisceglia
This is email scheduler made using MERN. This repo contains server code, client repo is linked in readme.

Email Scheduler Client This is an email scheduler server (client in different repository). It is made using node.js/express.js. Overview User can sign

Sai Charan 2 Dec 3, 2022
Track Apple software update changes with Github Actions

What is this? This repo is scraping known Apple software update URLs and keeps the results in recursively sorted (and therefore diffable) JSON files.

Hannes Juutilainen 22 Dec 8, 2022
Chrome extension to save and keep track of problems from different platforms(codeforces, codechef, atcoder, leetcode etc.)

Keep Problems A Browser extension which helps to save and keep track of problems from different platforms(codeforces, codechef, atcoder, leetcode etc.

Nirav Jain 4 Aug 13, 2022
A simple dashboard to keep track of all your active devices/servers

Slashboard Pulsar A lightweight node js app designed to work with the Slashboard desktop client Built using Node.js Installation Clone this repository

Philippe Négrel-Jerzy 25 Dec 21, 2022
This is a full-stack exercise tracker web application built using the MERN (MongoDB, ExpressJS, ReactJS, NodeJS) stack. You can easily track your exercises with this Full-Stack Web Application.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

WMouton 2 Dec 25, 2021
Marquee is a VS Code extension designed to naturally integrate with your development flow, so that you will no longer lose track of your thoughts while you're coding

Marquee Stay organized with minimal context switching, all inside your Visual Studio Code. Marquee is a VS Code extension designed to naturally integr

stateful 60 Dec 13, 2022
@nodesecure/ci brings together a set of tools to identify dependencies vulnerabilities and track most common malicious code and patterns

NodeSecure CI Action @nodesecure/ci brings together a set of tools to identify dependencies vulnerabilities and track most common malicious code and p

null 7 Jul 29, 2022
Bitcoin terminal tracker is a terminal app which allow you to track bitcoin price from your terminal

BTC Terminal Tracker Bitcoin terminal tracker is a terminal app which allow you to track bitcoin price from your terminal. In this version (V1.2) I ch

Sina yeganeh 9 Jul 27, 2022
Use this app to track and prioritize the topics you need to study during your job search

Interview Skills Grid Use this app to track and prioritize the topics you need to study during your job search. Try it for yourself! --> Interview Ski

R Boyle Software 6 Apr 13, 2022
A health-focused app for users to be able to track workouts and nutritional data with a social media component to inspire friendly competition among the users.

A health-focused app for users to be able to track workouts and nutritional data with a social media component to inspire friendly competition among the users.

Jon Jackson 3 Aug 26, 2022
Hardhat plugin to track gas on the transaction level

hardhat-gas-trackooor Hardhat plugin to track gas on the transaction level. Example report Installation npm install hardhat-gas-trackooor --save-dev A

null 16 Jan 3, 2023
Borscht - A Russian service monitor to track the uptime of domains and services

borscht ?? Borscht is a simple uptime and status monitor of Russian sites and services You can view the public status page here ?? About ?? This proje

Grant Birkinbine 10 Jul 8, 2022
💰 Frontend for a Google Sheet I use to track my poker sessions.

Poker Tracker A frontend for a Google Sheet that I use to track my poker sessions. To better understand how React works under the hood, I built my own

Maros Hluska 2 Apr 30, 2022
CLI Progress Bar implemented in NodeJS to track Time, ETA and Steps for any long running jobs in any loops in JS, NodeJS code

NodeJS-ProgressBar CLI Progress Bar for NodeJS and JavaScript to track Time, ETA and Steps for any long running jobs in any loops in JS, NodeJS code D

Atanu Sarkar 5 Nov 14, 2022
Utility to track the boundaries of html-elements in SolidJS

solid-boundaries Helps you to track the size and position of html-elements in solid-js. What does it do? See it in action here, or see it on CodeSandb

Erik Verweij 16 Jan 6, 2023
Allows the public to easily report and track the geolocation of anyone or anything they spot outside, using a mobile app or web frontend.

LIVE DEMO: https://armytracker.com/ (tracking the invading Russian army in Ukraine) Attention: - If you'd like to help the project either as a program

Michal Certicky 9 Mar 27, 2022
A Leaderboard to keep track of your personal records or family's game

Leaderboard A Leaderboard to keep track of your personal records or family's game scores Built With HTML CSS Javascript Live Demo Live demo Mobile Tab

Victor Peralta 11 Mar 22, 2022
This is simple To-Do App for managing the daily tasks and to keep track on tasks during the day.

Event Page Todo List. This is simple To-Do App for managing the daily tasks and to keep track on tasks during the day. Built With HTML CSS JavaScript

Miftah Amin 16 Mar 9, 2022
Keep a track of all the tasks you need to do and Check off ones you have completed - Created using HTML, SCSS, JavaScript and Webpack.

To Do List Keep a track of tasks you need to do. An Application where you can keep a track of the tasks you need to do and checkout the ones that have

Awais Amjed 19 Jul 28, 2022