Git Product home page Git Product logo

interview-app's Introduction

Interview App

Build Status

Context

Practicing mock interviews helps the Candidate develop skills for answering technical question during the interview process while lowering testing anxiety. It also helps the Interviewer gain perspective on desired qualities in candidates.

Specifications

Specifications and requirements will be assigned based on the items in backlog within the Development project (see the projects tab of the interview-app repository).

Start development server

Run this in a terminal window (setting DISABLE_IDM mocks out the IDM server)

    DISABLE_IDM=true ./go start

Running tests

To run your test and reset the test database:

 ./go test

Reset your local development db

   ./go reset_db development

(Optional) Setup instructions for IDM for the brave

If this is the first time you're setting up the Interview-App repo:

  1. Get the IDM repo from your team lead, and have move it to the same folder level that your interview-app resides (do not put IDM into the interview-app repo). In your terminal, navigate to the interview-app directory and enter the following command:
  • ./go init

  1. Create a .env.development file in the IDM repo and follow steps 7 & 8 in the IDM README.

  2. Create a .env.development file in the Interview-App repo and add only the JWT_PUBLIC_KEY from the IDM repo. THIS IS AN EXAMPLE, this is not the real key (The key should all be one single line with /n as line breaks):

    • JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMEOWMEOWMEOWMEOWIjANBgkqhkiG9w0BAQ3FAAOCAQ8AMIIBCgKCAQEAvr1sxNbmbBwWlT101LWj\ngYp9csutmPKX6yi0DOojeg2RDaRwkr5UOd4pbr6/5Plgvx12hXxWGN54ZG4Aaz1y\nZmDs6DFyeWNtzcVdjhOuoG8PzF/kt613JJClkZ/k827bW7go4TGL3cRg9E8Rdcc7\nhKmWo2nPNSV6EiQreGzvlPCqbpVyqvKOrtDXVSn73HxGlrBLbZXq6YPNfrvgKOCm\nyMNsnfYS6nLTJ+YERNzZuZOX2steqsyFuN5cygvme5AMxjo3fi5tBN5IkFwYWFh1\nOGqEE3w+WOlN1spS/6d9EADOzCbRWx7rUaiRrdLDKhBldmoqdUhCjw8f8vAntEWh\nGwIDAQAB\n-----END PUBLIC KEY-----"

  3. Make sure your IDM repo is on the same level as your Interview-App repo (but not within the Inverview-App repo)

  4. In interview-app terminal:

  • ./go install_idm (this completes steps 9-16 within the IDM README file)

  1. If node environment error appears, please do the following:
    • Open a new terminal window and navigate to the IDM folder

    • In IDM terminal:

      • cat ~/.npmrc

    • Copy the token that follows //registry.npmjs.org/:_authToken=

    • In IDM terminal (open with your text editor of choice):

      • atom ~/.zshrc

      or, if you're using bash:

      • atom ~/.bashrc

    • At the bottom of the file, add:

      • export NPM_AUTH_TOKEN=--paste token--

      • export NODE_ENV=development

    • In IDM terminal:

      • source ~/.zshrc

      or, if you're using bash:

      • source ~/.bashrc

  2. Follow steps 17-19 in the IDM README file

Guide to contributing questions

  • Fork the repo
  • Add the questions to the file data/questions.json. Make sure the questions are tagged with the appropriate topics, and level.
  • Create a Pull Request from your forked repo against the master branch of this repo.

interview-app's People

Contributors

ai-santos avatar benjaminpettus avatar breyana avatar hjbowers avatar jlopker avatar leikkisa avatar lizzkats avatar lumodon avatar mkleincreative avatar punitrathore avatar trevorjamesh avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

interview-app's Issues

Links and buttons

Connect functionality to all links and buttons

When the new question form is populated and submitted, it creates a question within the database. The "Approved" column for all new questions is default to false, until the question has been approved within the approval page.

Author of questions - When new question is submitted, the author is recorded within the question database.

  • All input fields need to be assigned to db columns that they will effect.
  • Routes need to be connected to submit, edit, delete buttons or form, and submit button of finished interview (will send data to user table and interview table).
  • Link pages to the menu bar (approval page, profile page)

BUTTONS:
pages/landing:
"Start Interview" button: Needs to fetch appropriate questions

pages/game-options:
All option fields need to be hooked up to database

pages/approval:
When question is selected, form modal appears with populated data (GET)
Form submitted = PUT
Delete button = DELETE

Other Things:
pages/approval: filter should work

Incremental Difficulty Increase

Questions increase in difficulty either when all questions of that level have been correctly answered.
Level 1.0
Level 1.1
Level 1.2
Level 1.3
Level 2.0
Level 2.1
Level 2.2
Level 2.3
Level 3.0
etc.

Shell Scripts

Write bash scripts for setup in a Go file.
Include help section and various go init scripts.

Create Prompt Table

Create a table for prompts which connects IDs from the question table.

(Prompts are hints that the interviewer can give when the candidate is stuck)

Approver

Approver column in user table will be boolean and allow user to access approval page.

User Login

Build user login (based off of GitHub login account) so that both the interviewer and the candidate can have their stats recorded.

See previous Learner's Guild OSS projects for examples of files.

IDM setup:

  • Create .env.development file
  • Add within README the steps for authenticating yourself to IDM
  • Install npm module for "dotenv"
  • Create config/auth.js
  • Setup config folder
  • Add @learnersguild/idm-jwt-auth to package.json
  • Test with team mates who haven't set up IDM yet.

Create Prompt button

In game page, create prompt button which displays a prompt/hint for the interviewer to use.

React Router

Add react router as a dependency to the project
Add react router to front end routes

Intro Page ( '/' )

Intro page should have the following options for the user to select from:

  • Priority level
  • Username
  • Questions Difficulty Level (Beginner, Intermediate, Advanced, Jedi)
  • Topic (Requirements, Testing, Technical Design, Object Oriented Programming, Functional Programming, Problem Decomposition, Data Structures, Algorithms, Regular Expressions, Systems Programming, etc.)
  • *Game Modes (Speaking, Whiteboard, Coding, Debugging, Solo)

*These modes will be built out later down the line. For now we are focusing on Speaking Mode only.

CRUD Functionality

Build CRUD (Create, Read, Update, Delete) functionality for users.
Build CRUD (Create, Read, Update, Delete) functionality for questions.
Build testing for all CRUD functions.

For users, find by github handle
For questions, find by id
etc.

Hot Reloader

Configure webpack so it will have hot reloader.

Menu button

Create menu button in header (separate from stats bar)

Header Stats

On questions page, display header which includes the following stats:

  • username
  • game mode
  • difficulty level
  • experience
  • topic
  • profile link

New question form Functionality

When the new question form is populated and submitted, it creates a question within the database. The "Approved" column for all new questions is default to false, until the question has been approved within the approval page.

Author of questions - When new question is submitted, the author is recorded within the question database.

Create Approval Page

Approval page will display a list of pending question.
Approval page will have buttons for approve, delete, and edit.

When the approve button is clicked, it will be marked "true" in the approved column of the questions table.
When the delete button is clicked, the question is removed from the database.
When the edit button is clicked, the question becomes editable within the questions modal form.

WB: New Questions Table

Create a new questions table in database for Whiteboard questions (Mimics Speaking Questions)

Notes Viewable by Candidate

When interviewer submits Feedback, they become available to candidate and are recorded in the candidate's profile to be viewed later.

Feedback is a column located in the interview table.
When notes are submitted, the user can see the difficulty and topic of the interview they were given.

Create Go file

Create Go - init script for new contributors to easily setup their environment.

Write a script to initialize project
Write a script to setup database
Write a script to setup environment
Write a script to create testing scripts to create and drop database

After go file is complete, edit readme doc for goal.

*Get advice from pro-player for how to make go file if you're unsure.

Interviewer Notes

Create a space for interviewer to write notes during the mock interview, and submit afterwards. (These notes will become available for the candidate to see after session is complete. See issue #7)

Questions Page

When user submits options on intro page, they will be redirected to the path based on selected game mode.

Interviewer Prompts

Interviewer will have a list of process provoking prompts/hints located under the questions section which can be used to help candidates if they get stuck.

These may take a while to populate (they will be more specific according to the questions), but here are a few open ended ones:

  • How would this be used?
  • What is the smallest next step you can take?
  • Describe what you're trying to do.

Create Candidate Table

Create a candidate table with the following columns:

  • roles (interviewer vs candidate)
  • experience
  • level
  • average_time_per_question
  • notes

Create knex.js
create confi.js
create db.js
create migration scripts within package.jsonn
run migration
populate migration with knex.schema.createtable

Install appropriate npm modules required

"Finish and Submit" Button

When you finish all the questions in an interview, the "Finish Interview and Submit Notes" button will:

  • Return you to the landing page using React Router.
    -Submit the notes into the interview table as Feedback.

Create Questions Table

Create a speaking questions table with the following columns:

  • question
  • difficulty_level
  • topic
  • point_value
  • time_limit

Create knex.js
create confi.js
create db.js
create migration scripts within package.jsonn
run migration
populate migration with knex.schema.createtable

Install appropriate npm modules required

*Create a new questions table per game mode.
*Pro-players will (eventually) populate the questions table, or provide values for you to enter.

Beautify App

Work on front end design to make user interface more enjoyable and intuitive.

Add topic/level specific link to each cell of Matrix

For each topic and level in the matrix, there will be a link to the interview app intro page which autofills the topic and level categories.

Ideally, write a script that automates the process of pre-filling the topic and level categories so this does not have to be done manually.

Profile Page Information Shown

  • Profile page should include the following user information:

    • Name
    • Experience
    • Interviews completed
    • Interviews assisted
    • Number of questions completed
    • Join date
    • Date of last interview completed
    • Notes from previous interviews
    • Number of questions user has submitted

Setup Istanbul NYC

Go to Istanbul.js.org and setup Istanbul NYC for test coverage

*note: for Istanbul testing, include "nyc" before mocha test script.

Time Tracker

In question section, build a time tracker to track how long it takes to complete a question.

Create More Questions

Add more questions to the database. Ask learners and pro players to create questions.

Speaking Mode: Interviewer

Interviewer will ask questions, then mark "correct", "incorrect" or "pass".
"Correct":
Provides experience points to candidate

"Incorrect":

"Pass":
Skips question

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.