Giter VIP home page Giter VIP logo

zipline_take_home's Introduction

Zipline Application Team Coding Challenge

We've created this challenge to resemble day-to-day work at Zipline. It should take a couple hours.

Documentation

Please document your submission at the end (separate section is provided at the bottom). In your documentation, please provide the following:

  • The approach you've taken with your solution, calling out any decisions / tradeoffs you made or interesting areas of code
  • The next steps you would take to improve upon your solution
  • The total time you spent on the exercise
  • Please structure your commits so that they're easily readable to others.

Consider your documentation as if you were opening a PR.

Submitting your solution

Please fork this repository for your changes and submit a PR, or or email us a zip folder with your code (excluding node_modules).

The problem

The goal of the exercise is to extend our email service. At present, it's extremely bare-bones with only 2 pages: emails#index and emails#new.

Feature requests/Exercise

Please implement the following in any order:

  • Ability to read an individual email
  • Ability to assign/send an email to specific addresses
  • Ability to save an email as a draft, and edit before they're "sent"
  • Convert the app from page reloads to a modern design
  • Update an email's read status in real-time

We've purposefully left the details open to your own interpretation, so feel free to get creative with your solution. If you have other enhancements and creative ideas you want to showcase but they'll take you over a reasonable amount of time, please use the "Your README" section at the end to describe your ideas rather than implementing them.

Please keep in the mind the "sending" of the email is out-of-scope -- you can safely assume that a third-party service or job handles that and doesn't need to be implemented for this exercise.

Out of scope

  • Authentication
  • Scheduling/delivery of emails
  • Sophisticated error handling
  • Deploying the app in a production-like environment

Setup

Prerequesites:

  • Ruby ``2.7.4`
  • Rails 7
  • Node.js 14+
  • Yarn (run npm i -g yarn)

This project mimics the main Zipline mono-repo, but you don't need to use everything we do -- you may use alternative libraries if you prefer.

  1. Clone the repo and run ./bin/setup
  2. Run yarn to install the frontend dependencies
  3. Start the app with ./bin/dev
  4. Visit http://localhost:3000 in your browser
  5. In another terminal, run bundle exec guard to automatically run tests on file changes

Your README

-- Add your documentation here --

zipline_take_home's People

Contributors

bholtbholt avatar

Watchers

 avatar  avatar  avatar

Forkers

bholtbholt

zipline_take_home's Issues

Dependency upgrades

@yuki24 After wiping my computer yesterday, I cloned the repo and tried to get it running from an empty environment. There's a couple things I missed:

Prerequisites

Should be:

  • Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • Postgresql brew install postgresql
  • Postgresql server running: brew services start postgresql
  • Foreman gem install foreman
  • Ruby version manager, like Rbenv brew install rbenv
  • Ruby 2.7.4
  • Node 14+
  • Yarn npm install -g yarn (I had to run sudo chown -R $USER ~/.npm and sudo chown -R $USER /usr/local/lib/node_modules to allow global install)

My computer had most of these things installed and running, so that's why they got missed. I think some can be added to the ./bin/setup script. Looks like best practices for installing Node in 2021 is to use the package manager, not homebrew.

Compilation

The asset manifest links to a non-existent directory. This prevents the assets from finishing compilation, stopping the server from running.

Since there are no images in the project, the line can be removed. Alternatively, add an empty directory to git, which didn't get committed when I published the repo.

๐Ÿš€

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.