An application to represent job placement cell. Backend built with the repository-API pattern. Simple frontend build with html, css, js and bootstrap for the interaction.
- Backend Features
- Frontend Features
- Prerequisites
- Installation
- Project Structure
- API Endpoints
- Technologies Used
- Contributing
- License
-
User (for employees only)
- Sign up
- Sign in
- Sign out
-
Company
- Add
- Get by id
- Get all
- Update
- Delete
-
Students
- Add
- Get by id
- Get all
- Update
- Delete
-
Interviews
- Schedule interview
- Allocate student to an interview
-
Result
- Add
- Get by id
- Get all
- Update
- Delete
-
Home/landing tab
- In the landing page you can see the welcome message.
- It includes Register and Login buttons.
- Includes students, interviews and jobs nav links.
- Without signin, user cannot visit these links.
-
Students tab
- Shows the list of students.
- The list item can expand to show the student details if exists any.
- There are buttons to add a new student to the list and download all students data as CSV file.
-
Interviews tab
- Shows the list of interviews available.
- The list item can expand to show the interview details and students details allocated to it.
- There are buttons to schedule a new interview to the list and allocate students to it. NOTE: If there are no interview options in the form options, you can add one from the Jobs tab.
-
Jobs tab
- Shows list of jobs available and the required details.
- Each job item contains a button that will add the job details to the DB. Once the job is added to the db, you can see the job name and designation in the schedule interview form options.
- Node.js (>=14.x)
- npm (>=6.x)
-
Clone the repository:
git clone https://github.com/kirankumar-Matham96/Placement-Cell-App.git
-
Install the dependencies:
npm install
-
Set up environment variables:
- Create a
.env
file in the root directory and add the following:PORT=3000 DB_URL=<db_url> JWT_SECRET=<secret>
- Start the application:
- if dev:
npm run dev
- if production
npm run start
-
Open your browser and navigate to
http://localhost:3000
-
Open index.html from the public folder using live server to interact with UI.
- If the file opened without live server, it will not work and throws cors error.
- Register
- Login
- Add Company from the Jobs tab (if not options will not be populated in the other tabs)
- Add student details in students tab (if not options will not be populated in the other tabs)
- Schedule an interview from the interviews tab
- Allocate the student to an interview
- See the list of students and details in Students tab
- See the list of interviews in Interviews yab
POST AWAY - II/
├── src/
│ ├── config/
│ │ └── db.config.js
│ ├── features/
│ │ ├── companies/
│ │ | ├── company.controller.js
│ │ | ├── company.repository.js
│ │ | ├── company.routes.js
│ │ | └── company.schema.js
│ │ ├── interviews/
│ │ | ├── interview.controller.js
│ │ | ├── interview.repository.js
│ │ | ├── interview.routes.js
│ │ | └── interview.schema.js
│ │ ├── results/
│ │ | ├── result.controller.js
│ │ | ├── result.repository.js
│ │ | ├── result.routes.js
│ │ | └── result.schema.js
│ │ ├── student/
│ │ | ├── student.controller.js
│ │ | ├── student.repository.js
│ │ | ├── student.routes.js
│ │ | └── student.schema.js
│ │ └── users/
│ │ ├── user.controller.js
│ │ ├── user.repository.js
│ │ ├── user.routes.js
│ │ └── user.schema.js
| └── middlewares/
│ ├── auth.middleware.js
│ ├── downloadHandler.middleware.js
│ ├── errorHandling.middleware.js
│ └── unknownPathHandler.middleware.js
├── .env
├── .gitignore
├── package-lock.json
├── package.json
├── README.md
└── server.js
https://www.postman.com/kirankumar96/workspace/kirankumar-matham-public-workspace/collection/15920123-5a539425-fc55-4e6b-9311-abf9b084da0b?action=share&creator=15920123
POST /api/placement-cell/users/signup
: Register a new userPOST /api/placement-cell/users/signin
: Login a userGET /api/placement-cell/users/signout
: Logout a user
POST /api/placement-cell/students/add
: Add a studentGET /api/placement-cell/students/
: Get all studentsGET /api/placement-cell/students/<student_id>
: Get a student by idPUT /api/placement-cell/students/<student_id>
: Update a student by idDELETE /api/placement-cell/students/<student_id>
: Delete a student by id
POST /api/placement-cell/companies/add
: Add a companyGET /api/placement-cell/companies/
: Get all companiesGET /api/placement-cell/companies/<company_id>
: Get a company by idPUT /api/placement-cell/companies/<company_id>
: Update a company by idDELETE /api/placement-cell/companies/<company_id>
: Delete a company by id
POST /api/placement-cell/interviews/add
: Schedule an interviewGET /api/placement-cell/interviews/
: Get all interviewsGET /api/placement-cell/interviews/<interview_id>
: Get an interview by idPUT /api/placement-cell/interviews/<interview_id>
: Update an interview by idDELETE /api/placement-cell/interviews/<interview_id>
: Delete an interview by id
POST /api/placement-cell/results/add
: Add a resultGET /api/placement-cell/results/
: Get all resultsGET /api/placement-cell/results/<result_id>
: Get a result by idPUT /api/placement-cell/results/<result_id>
: Update a result by idDELETE /api/placement-cell/results/<result_id>
: Delete a result by id
- Node.js
- Express
- MongoDB (DataBase)
- mongoose
- bcrypt
- dotenv
- jsonwebtoken
- cookie-parser
- cors
- export-to-csv
- REST Full API
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature
) - Open a pull request
This project is licensed under the MIT License. See the LICENSE file for details.