interView is a video-based interview practice platform. Users can upload responses to common interview questions, review other responses, and exchange structured feedback.
- Creates user accounts and authenticates sessions with JSON Web Tokens.
- Uploads video responses with an interview question, industry, and experience level.
- Organizes responses around common interview questions.
- Streams uploaded videos from Amazon S3.
- Collects written feedback about what went well and what could be improved.
- Scores responses from 1–5 for professionalism, confidence, content, and voice.
| Area | Tools |
|---|---|
| Frontend | React 17, Redux, React Router, Axios, Material UI |
| Backend | Node.js, Express, Passport, JSON Web Tokens, Multer |
| Data | MongoDB, Mongoose |
| File storage | Amazon S3 |
| Development | Create React App, Nodemon, Concurrently |
interView/
├── app.js Express application entry point
├── config/ Database and Passport configuration
├── models/ User, video, rubric, and feedback models
├── routes/api/ REST API routes
├── validations/ Server-side request validation
├── frontend/ React and Redux client
└── s3.js S3 upload and streaming helpers
The React client communicates with the Express API. MongoDB stores users, video metadata, rubrics, and written feedback; S3 stores the uploaded video files.
- Node.js and npm
- A MongoDB database
- An Amazon S3 bucket and credentials with access to that bucket
npm install
npm run frontend-installCreate config/keys_dev.js:
require("dotenv").config();
module.exports = {
mongoURI: process.env.MONGO_URI,
secretOrKey: process.env.SECRET_OR_KEY,
};Create a .env file in the repository root:
MONGO_URI=your_mongodb_connection_string
SECRET_OR_KEY=your_jwt_secret
AWS_BUCKET_NAME=your_s3_bucket
AWS_BUCKET_REGION=your_s3_region
AWS_ACCESS_KEY=your_aws_access_key
AWS_SECRET_KEY=your_aws_secret_keyBoth files are ignored by Git. Do not commit real credentials.
npm run devThe Express API runs on http://localhost:5500. The React development server
starts separately and proxies API requests to Express.
| Resource | Purpose |
|---|---|
/api/users |
Registration, login, and the authenticated user |
/api/videos |
Video metadata, uploads, listings, and S3 streaming |
/api/feedbacks |
Written feedback creation, editing, and deletion |
/api/rubrics |
Rubric scoring, editing, listing, and deletion |
