Giter Club home page Giter Club logo

exygy-assessment's Introduction

Exygy Code Assessment

Overview

Thank you for taking the time to complete Exygy's take-home code assessment! If you have any questions about the assessment or directions at any time, please don't hesitate to reach out. This repo is a highly pared-down version of an Exygy product, Bloom. Bloom is a web application that helps people learn about, apply for, and gain access to affordable housing. Its two core pieces of functionality are providing information about individual listings and the ability to submit digital applications for those listings.

  • backend/core contains backend services (e.g. listings) - information is stored in a postgres database and served over HTTPS to the frontend

  • sites/public contains the frontend React/Typescript application

  • ui-components contains our component library

UI-Components

This package is the home of the Bloom affordable housing system component library. The components are styled using Tailwind. This repo only contains a selection of them. Feel free to use any of our components as you work on the assessment.

Storybook

The UI components package includes Storybook for easy browsing of the component tree, and can be used to help understand what's available, but should not be required for anything in the assessment.

To spin up Storybook locally, from within ui-components run:

yarn start

Unit Tests

To run the ui-components test suite which is built with Jest and RTL, from within ui-components run:

yarn test

We have removed all but one of the tests to provide for you an example of how to set them up.

Getting Started for Developers

Installing Dependencies

yarn install

Setting up your local environment variables

Configuration of each app and service is read from environment variables. There is a .env.template file in each app & service directory that must be copied to .env (or equivalent). You will need to create this local env file from the templates in backend/core and sites/public.

Backend

The backend is a NestJS application that provides a core set of backend services via REST API endpoints. Information is stored in a Postgres database, accessed via TypeORM. OpenAPI (fka Swagger) documentation is automatically generated by the server at http://localhost:3100/docs/ in local development environments. You will not need to know details specific to any of these tools to complete the assessment.

If not already installed on your machine, you will need to install Node, Postgresql, and Redis. We are currently using Node version 12.22.1. The following commands are for macOS / Linux, but you can find equivalent instructions for Windows machines online.

Installing Node

You can install Node using Homebrew with the following command: brew install [email protected].

If you have multiple versions of Node installed, you can use nvm (node version manager) to manage them. Ensure you're on the right version with node -v.

Installing Postgresql

You can install Postgres using Homebrew with the following command: brew install postgresql. You can start it with brew services start postgresql.

Installing Redis

You can install Redis using Homebrew with the following command: brew install redis.

To start Redis: redis-server.

To launch Redis as a background service and restart at login: brew services start redis.

To test if Redis is working: redis-cli ping

Setting up a Database

The main database used in this project is bloom. The following command from within backend/core should get your database set up.

yarn && yarn db:reseed

The above will create the bloom DB for you, migrate it to the latest schema, and seed it with data. (If running the reseed command requires that you input a password for Postgres, set the following environment variables: PGUSER to postgres and PGPASSWORD to the default password you inputted for the postgres user during Postgres installation.)

If you see psql: error: FATAL: database "<user>" does not exist you may need to run createdb <user> first.

If you make edits to the database and want to get it back to its default state, you can run the above reseed command again at any time.

Working Locally

Once you've completed the above set-up steps, to start up the application, run the following from root:

yarn dev

This runs 2 processes:

  • 3000 for the application
  • 3100 for backend/core

You can view the assessment instructions from within the application.

exygy-assessment's People

Contributors

emilyjablonski avatar seanmalbert avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  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.