Skip to content

Instantly share code, notes, and snippets.

@jinwook-k
jinwook-k / package.json
Created September 4, 2020 05:49
client/package.json
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"bootstrap": "^4.5.0",
{
"name": "mern-weather-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node server/server.js",
"server": "nodemon server/server.js",
"client": "cd client && npm run start",
"dev": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\""
@jinwook-k
jinwook-k / Container.jsx
Created August 30, 2020 08:11
client/src/Components...
import React, {Component} from "react";
import WeatherForm from "./WeatherForm";
import WeatherPanels from "./WeatherPanels";
class Container extends Component {
state = {
weatherData: ''
};
render() {
@jinwook-k
jinwook-k / App.jsx
Created August 30, 2020 00:06
client/src/App.jsx
import React, {Component} from 'react';
import './Stylesheets/App.scss';
import Container from "./Components/Container";
class App extends Component {
render() {
return (
<div className="App">
<Container/>
@jinwook-k
jinwook-k / App.scss
Last active August 30, 2020 23:04
client/src/Stylesheets/...
@import "Header";
@import "WeatherForm";
@import "Container";
@import "WeatherPanels";
@font-face {
font-family: MajorMonoDisplay;
src: url("../assets/Fonts/MajorMonoDisplay-Regular.ttf");
}
@jinwook-k
jinwook-k / index.js
Last active September 16, 2020 14:55
server/api/index.js
...
// POST Request - dynamically get the weather data based on request body
router.post("/weather", async (req, res) => {
...
});
// POST Request - get the weather data from the api, save it to mongo, then return the data back
router.post("/weatherMongo", async(req, res) => {
const {zipCode, tempMetric} = req.body;
@jinwook-k
jinwook-k / weather.js
Last active September 23, 2020 16:02
server/api/weather.js
const WEATHER = require("../models/Weather");
...
class Weather {
...
/**
* Saves the weather data using the zipcode as the unique identifier
* If it already exists, replace, if not, then add.
@jinwook-k
jinwook-k / Weather.js
Created August 1, 2020 23:48
server/models/Weather.js
const mongoose = require('mongoose');
const WeatherSchema = new mongoose.Schema({
zip: Number,
coord: {
lon: Number,
lat: Number
},
weather: [
{
@jinwook-k
jinwook-k / server.js
Last active September 21, 2020 03:16
server/server.js
const mongoose = require('mongoose');
// use body parser to get data from POST requests
...
// Use API routes from the api folder
...
// Connect to Mongo
mongoose.connect(process.env.DB, {
@jinwook-k
jinwook-k / index.js
Last active July 28, 2020 06:07
server/api/index.js
// Use express's router to route all our API endpoints
const express = require('express');
const router = express.Router();
// Use the weather class we made in ./weather.js to call our method that will get the weather data from the api
const Weather = require("./weather");
// GET Request - statically get the weather data from the weather api
router.get("/weather", async (req, res) => {
let weather = new Weather();