Skip to content

Design 1.0

Aiden Escamilla edited this page Mar 13, 2024 · 9 revisions

Product Development

1. Project Initiation

  • i. Project Overview

    • Purpose and Goals: The purpose of this project is to create a centralized application to track the progress of multiple job applications efficiently. The primary goals are to streamline the job application process, provide quick and easy input of application details, and enhance tracking capabilities for job statuses and interview data. The app aims to be a user-friendly tool that simplifies and organizes the job search process for the user (myself).
  • ii. Project Scope

    • Features and Functionalities:

      1. Quick Application Input: Enable users to input job application details swiftly and easily.
      2. Efficient Tracking: Facilitate the input of tracking information such as job status and interview data for each application.
      3. Priority Recognition: Implement a visual system that allows users to recognize the priority of each application at a glance.
    • Boundaries and Limitations:

      1. Requires User Input for Tracking: Tracking information, such as job status and interview data, relies on user input to maintain accuracy and relevance.
      2. Database Size Limitations (TBD): Postgres will be the primary database language. The maximum size and storage capacity of the database will be determined during the development process (TBD).
      3. Written in Ruby on Rails: The application will be developed using the Ruby on Rails framework.

2. Planning Phase

Class models

Model relation diagram

Notes:

  • Every JobApplication will have a1 and only 1 JobDescription
  • Every JobApplication will have at least 1 SupportingDoc "resume"
  • Employer must have 1 JobApplication. Otherwise they shouldn't be in the database
  • Functions to come in future releases of Design
classDiagram

Employer "1" <|-- "1..*" PointOfContact
Employer "1" <|-- "1..*" JobApplication

class Employer{
 -uuid id
 +String name
 +String phone_number
 +String email
 +String linked_in_url
 +hash address
}

JobApplication "1" <|-- "0..1" PointOfContact
JobApplication "1" <|-- "1" JobDescription
JobApplication "1" <|-- "0..n" Interview
JobApplication "1" <|-- "1..n" SupportingDocument
JobApplication "1" <|-- "0..1" JobOffer

JobApplication : -uuid id
JobApplication : -uuid employer_id
JobApplication : +String title
JobApplication : +Enum status

class JobDescription{
 -uuid id
 -uuid job_application_id
 +String description
 +String requirements
 +String job_classification
 +int min_salary
 +int max_salary
 +dummy_function2()
}
class Interview{
 -uuid id
 -uuid job_application_id
 +Enum status
 +DateTime scheduled_for
 +String location
 +String excited_for_notes
 +String company_info_notes
 +String questions_notes
}
class PointOfContact{
 -uuid id
 -uuid job_application_id
 -uuid employer_id
 +String name
 +String email
 +String phone_number
 +String linked_in_url

}
class SupportingDocument{
 -uuid id
 -uuid job_application_id
 +String type
 +File document

}
class JobOffer{
 -uuid id
 -uuid job_application_id
 +int salary
 +DateTime start_date
 +DateTime decision_deadline
}
Loading