Resumes App

The Idea

A small project to build a database where to save some job searches and related things with a Django app in front, to access that data.
GitHub repo: resumes
A work in progress version of the app running here: Resumes (creds: user: demo / pass: demo2022).

The Project's Structure

There are several attributes that can describe a job search result.

First is the description of the job position which practically is it's main element. This would fit in a content attribute rendered with a TextField.

Next, the location. Initially I though to make this one a CharField but then, later, I found that it is useful to have a table for location and to use a ForeignKey from the Job Position table to the Location one. For the Location table I just used as attributes city, province/state, and country, all three being required.

Then the company which offers the job postion. This also looked as a good candidate for a separate table with a ForeignKey relationship for the Job Position table to it. As fields for this one I used name, of course, required, website just to be easy to click and go there, a files field if there would be something to save and a info TextField for anything else related to this company.

Another attribute would clearly be the type of job position (full-time, part-time, etc). This one also looked to me that it would be better in a separate table. Its only attribute would be job_type, a CharField.

The other attributes I found useful to add are: salary, date when found, date when applied, which resume was sent. Salary is a CharField as I found it to be enough for representing that info when available (numbers or ranges).

Two other important tables are one for resume itself and one for interview.

For the resume model I used these attributes:

  • title - CharField, required
  • description - Charfield, can be blank
  • date_created - can be null and blank
  • content - a TextField
  • files - if any doc needs to be saved here.

For the interview model, these would be the attributes:

  • title - CharField, required
  • job_position - a ForeignKey to JobPosition model
  • date_sch - for date scheduled
  • resume - a ForeignKey to the resume used for this interview
  • notes - for any useful info related to this interview

Like for some of my other projects, there is the base app which have elements generally related to the site itself. The base app for this project will have two models: Category and Tag. The Category model has three fields: name, slug, and parent. The Tag model only two: name and slug.

All in all the database will have these tables:

From the resumes app:

  • company with the model Company and the fields:
    • name
    • website
    • category
    • tags
    • files
    • info
    • author
  • jobposition with the model JobPosition and the fields:
    • title
    • company
    • location
    • job_type
    • salary
    • date_found
    • date_applied
    • resume_sent
    • category
    • tags
    • content
    • author
  • resume with the model Resume and the fields:
    • title
    • description
    • date_created
    • category
    • tags
    • content
    • files
    • author
  • location with the model Location and the fields:
    • city
    • prov_state
    • country
    • author
  • jobtype with the model JobType and the fields:
    • job_type
    • author
  • interview with the model Interview and the fields:
    • title
    • job_position
    • date_sch
    • resume
    • category
    • tags
    • notes
    • author

In base app:

  • category with the model Category and the fields: name, slug, author, parent
  • tag with the model Tag and the fields: name, slug, author