Code Monkey home page Code Monkey logo

lunch's Introduction

Lunch

An app for groups to decide on nearby lunch options. Check out a live version, or read the blog post about it!

Setup

/etc/hosts

Add this line to /etc/hosts:

127.0.0.1 local.lunch.pink

If you will be testing subdomains, you should add an additional line for each subdomain, e.g.:

127.0.0.1 labzero.local.lunch.pink
127.0.0.1 someotherteam.local.lunch.pink

If you want to run integration tests, you will also need to add:

127.0.0.1 integration-test.local.lunch.pink

Environment variables

Make two copies of .env.sample, named .env and .env.prod.

Google project

For GOOGLE_* env variables:

  • Create a Google Developer app in the console.
  • Enable the Google+ API, Contacts API, Google Maps JavaScript API, Google Places API Web Service, and Google Maps Geocoding API.
  • Go to the Credentials section and create an OAuth client ID.
  • For local development:
    • Enter http://local.lunch.pink:3000 as an authorized JavaScript origin
    • Enter http://local.lunch.pink:3000/login/google/callback as an authorized redirect URI
  • Add your deployment target(s) as additional origins/redirect URIs.
  • Go back to the Credentials section and create two API keys - one for the client, and one for the server.
    • For the client, optionally limit requests to certain referrers.

Database

Set up a PostgreSQL database and enter the credentials into .env. If you want to use another database dialect, change it in database.js.

To seed your database with a Superuser, fill out the SUPERUSER_* env variables accordingly, then run

npx sequelize db:seed:all

After setting up and starting the app, you will be able to log in with this user and create a team. If you did not supply a SUPERUSER_PASSWORD, you will need to log in via OAuth, using the email address you supplied for SUPERUSER_EMAIL.

Commands

After setting up your environment:

First, install Yarn. Then:

yarn
npx sequelize db:migrate

Development server

Running

npm start

Production server

Building

npm run build

Running

node build/server.js

Deploying

You can modify tools/deploy.js as needed to work with your deployment strategy.

Testing

Unit tests

npm test

To run an individual file:

npm run test-file /path/to/file

Testing with coverage

npm run coverage

Integration tests

Make sure your .env file is filled out. Set up a separate test database using the same user as your development environment. Enter the following into .env.test:

DB_NAME=your_test_db_name
SUPERUSER_NAME=test
SUPERUSER_PASSWORD=test
[email protected]

Then run:

npm run integration

Individual files can be run using:

npm run integration-file /path/to/file

Linting

npm run lint

More info

This project was created using React Starter Kit. Many technology choices originate from its repository, but this project adds on Sequelize, RESTful APIs instead of GraphQL, and Redux.

lunch's People

Contributors

ademuk avatar bdj61383 avatar bsitruk avatar burmecia avatar chentaixu avatar edikocruz avatar frenzzy avatar goatslacker avatar granda avatar greenkeeperio-bot avatar jazmon avatar jeffreyatw avatar jorrit avatar koistya avatar langpavel avatar matrus2 avatar mmarkelov avatar nodkz avatar nyscherm avatar okendoken avatar richb-hanover avatar rsanchezpp avatar rusjoan avatar salttis avatar sdiaz avatar stupidism avatar svoynow avatar tobiasmuehl avatar zhiyelee avatar zwhitchcox avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.