Video Demo: https://youtu.be/VXLdmRY0V8c
Website Demo: https://cs50-simple-job-application.vercel.app/
It is my simple job application web app. Since I am a human resources before. I have an idea to transfer the application process from traditional to digital that my company have many applicants everyday and they use hard-copy to write application form. The purposes of the web app are to make a clear process of application flow, prevent ugly handwriting and automatic generate application form as PDF to print.
As the modern web design, I separate frontend and backend that frontend can be changed despite the frontend framework grow fast. For this web app, job applicants can finish the application form in frontend. The HR (or admin) can login to the website to see the applicants data. After job interview, the data can generate PDF hardcopy to complete the onboarding.
- Form submit
- Login as admin, to:
- View all applicants data.
- Generate CSV file for human resources further action.
- Generate PDF application form to print as hard-copy.
- NextJS
- Flask
- Sqlalchemy
- PDFkit
- Tailwind
- Bootstrap
Because of RESTful API, the frontend can be updated when the frontend technology is fast grown. Switch between React, Vue, Next JS, and other new frontend frameworks depend on your choice. Second, I consider the necessity of digital marketing that web app should not be over concerned in the function, the promotion and marketing are huge part in any website which means we must consider SEO. NextJS have the following advantages:
- React based that it is a modern framework.
- SEO focus that we can use ServerSideRendering and dynamic SEO component for each page to make a good practice for promotion.
For the login state, I used cookies rather than session to try different things outside the lecture knowledge.
Sqlite3. The project only use "applicant" and "admin" data
I set the index.html will redirect to "/jobapply". Each route are checked including the route can be accessed by admin and malicious POST request by changing the DevTools to get the csv and pdf from backend(double check the sql in backend when POST data).
- For the security, maybe use session better than cookies.
- For the security, the admin password should be hashed.
- The database should be able to upload image which is the applicants profile picture.
For Flask backend, please use "venv\Scripts\activate" first and optional use "$env:FLASK_ENV = "development" " to activate Flask environment. Then, use "flask run"
For NextJS frontend, please use "npm run dev" or "npm run start" to use this
Both frontend and backend must be used together.
Frontend default url: localhost:3000/
Backend default url: localhost:5000/