Skip to content

Instantly share code, notes, and snippets.

@bengrunfeld
bengrunfeld / FormikForm.tsx
Last active September 8, 2020 14:59
Combine Formik with TypeScript and React-Select
const schema = Yup.object({
dogBreed: Yup.string().required("Required")
})
const options = [
{ value: "terrier", label: "Terrier" },
{ value: "hound", label: "Hound" },
{ value: "corgie", label: "Corgie" },
];
@bengrunfeld
bengrunfeld / DropDown.tsx
Created September 8, 2020 07:08
Formik & TypeScript using React-Select, also with native select component
import { useField, FieldProps } from "formik";
import Select, { Option, ReactSelectProps } from "react-select";
import { ErrorMessage, SelectField, FieldLabel } from "./DropDown.styles";
interface PropsType {
[x: string]: any;
name: string;
}
const DropDown: React.FC<ReactSelectProps & FieldProps> = ({
@bengrunfeld
bengrunfeld / package.json
Created September 3, 2020 08:02
Package.json for ESLint, TypeScript, and Prettier, with config for Husky and Lint-Staged
{
"name": "your-app",
"version": "0.1.0",
"private": true,
"license": "UNLICENSED",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint '*/**/*.{js,ts,tsx}' --fix",
@bengrunfeld
bengrunfeld / tsconfig.json
Created September 3, 2020 07:59
TypeScript Config File for Use with Prettier & ESLint
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
@bengrunfeld
bengrunfeld / .eslintrc.js
Created September 3, 2020 07:56
My ESLint Config file for TypeScript and Prettier
module.exports = {
parser: "@typescript-eslint/parser", // Specifies the ESLint parser
parserOptions: {
ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
sourceType: "module", // Allows for the use of imports
ecmaFeatures: {
jsx: true, // Allows for the parsing of JSX
},
},
env: {
@bengrunfeld
bengrunfeld / docker-compose.yml
Created August 16, 2020 16:31
Docker Compose file for Hot Reloading with a Next.JS & MongoDB app
version: "3"
services:
web:
build:
context: .
dockerfile: Dockerfile
container_name: web
restart: always
volumes:
@bengrunfeld
bengrunfeld / Dockerfile
Last active August 16, 2020 16:23
Dockerfile for live reload
FROM node:12.18.3
WORKDIR /usr/src/app
COPY package*.json ./
ENV MONGO_URL "mongodb://mongo:27017"
ENV DB_NAME points
ENV COL_NAME dataPoints
@bengrunfeld
bengrunfeld / readAllRecords.js
Created August 12, 2020 07:26
Use Node.JS to read all records from a MongoDB Collection
const readAllRecords = db => {
const p = new Promise((resolve, reject) => {
db.collection(process.env.COL_NAME)
.find({})
.toArray((error, results) => {
if (error) {
reject({ origin: "readAllRecords", error });
return;
}
@bengrunfeld
bengrunfeld / createMongoDbConnection.js
Created August 12, 2020 07:17
Open a connection to MongoDB
import { MongoClient } from "mongodb";
const openDbConnection = url => {
const p = new Promise((resolve, reject) => {
MongoClient.connect(
url,
{ useUnifiedTopology: true, useNewUrlParser: true },
async (error, client) => {
if (error) {
reject(error);
@bengrunfeld
bengrunfeld / docker-compose.yml
Created August 12, 2020 07:13
Docker compose yaml file
version: "2"
services:
web:
build:
context: .
dockerfile: Dockerfile
container_name: web
restart: always
ports: