Skip to content

qienzgao/interView

Repository files navigation

interView

Overview

interView is a video interviewing platform where users can practice their interviewing skills and elicit feedback to continually improve themselves. interView seeks to make the interviewing process more successful by connecting users with people who are also interviewing and by providing a medium to continually work on improving users' interview performance.

With interView, users can create accounts and upload videos of themselves answering popular interview questions. Once the video is on interView, other users can view it and provide constructive feedback. Feedback is provided in twor forms: text and a rubric. Text feedback is broken into two categories - positive and negative. Users are told both what they did well and how they can improve. The rubric scores a user's specific interviewing skills so they can focus on what is required to see the most improvement.

Features Highlights

  • Upload video-form answers to variant behavioral questions.
  • Display videos on the home page regarding different behavioral questions.
  • Receive feedback for uploaded videos and give feedback on other users’ videos.
  • Edit/delete authorized feedback.
  • View/elicit specific scoring rubric on videos.

Technologies

javascript html5 css3 react.js express.js node.js mongodb aws s3 heroku

MERN Stack

  • Our data storage and recall is handled through MongoDB:
const VideoSchema = new Schema({
    user: {
        type: Schema.Types.ObjectId,
        ref: 'users'
    },
    file: {
        type: Object,
        required: true
    },
    views: {
        type: Number,
        default: 0
    },
    question: {
        type: String,
        required: true
    },
    experience: {
        type: String,
        required: true
    },
    industry: {
        type: String,
        required: true
    }
}, {
    timestamps: true
});
  • interView uses a light weight Express.js back end application framework
router.get('/feedbacks/:id', (req, res) => {
    Feedback.find({ video: req.params.id })
        .then(feedback => res.json(feedback))
        .catch(err =>
            res.status(404).json({ nofeedbackfound: 'No video found with that ID' })
        );
});
  • correct and dynamic information is presented to the user using a React/Redux frontend
render() {
  const { videos } = this.props;

  return (
    <div className='show-video-background'>
      <div className='mainbox'>
        <div className='playing-video-container'>
          <ShowVideoDisplay video={this.props.video} fetchVideo={this.props.fetchVideo} videoId={this.props.videoId}/>
          <ShowFeedbacksContainer videoId={this.props.videoId} history={this.props.history}/>
        </div>
        <div className='sidebar'>
          <h2>Average Scores</h2>
          <ShowRubricsContainer videoId={this.props.videoId} />
          <RubricFormContainer videoId={this.props.videoId} />
          <br className='checkout-other'/>
          <div className='other-videos-container'>
            <div className='other-thumbnails-container'>
              {
                videos.map((video, idx) => (
                  <VideoItem key={idx} video={video} image={pics[idx]} />
                ))
              }
            </div>
          </div>
        </div>
      </div>
    </div>
  );
}
  • Node.js is the runtime environment that makes it all work together
let proWidth = (this.props.avgrubrics.professionalismRating / 5) * 100 + '%';
        let confWidth = (this.props.avgrubrics.confidenceRating / 5) * 100 + '%';
        let contWidth = (this.props.avgrubrics.contentRating / 5) * 100 + '%';
        let voiWidth = (this.props.avgrubrics.voiceRating / 5) * 100 + '%';
        let average = (
            ((this.props.avgrubrics.professionalismRating)
                + (this.props.avgrubrics.confidenceRating)
                + (this.props.avgrubrics.contentRating)
                + (this.props.avgrubrics.voiceRating)) / 4
        ).toFixed(1); 

Design Previews

Mainpage

Signup

Homepage

Viewpage

Feedback

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •