Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

AppliTrack

Track and manage your job applications and interviews all in one place.

OAK Valley Otters


Tiffany Andersen
Andrew Kassis
Christian Vargas
Laurand Osmeni

CST 336 Lara


Fall 2022
DESCRIPTION
Landing your first SWE job is difficult and often involves sending out many
applications. It can be hard to keep track of where you’ve applied and which positions
you’ve received responses from. Tracking this information in a spreadsheet can be
unwieldy, and the job search process can be improved with a web application which
minimizes manual data entry. Applitrack tracks jobs the user has applied for.
Trackable data points include job title, company, stage (applied, interviewing,
accepted, etc.), location and potential for remote status, dates applied for/updated,
application platform, etc.

GOALS
The goal of the app is to be a centralized place to track job applications across
multiple platforms. The user should be able to track jobs and create notes in one place.
The strategy behind this application is to keep applicants accountable and motivated
during a job search.

TASK DISTRIBUTION
Project Coordinators: Andrew, Christian
Static mockup / UI Design: Andrew, Laurand
Database Design: Tiffany
Styling and Formatting: Andrew, Tiffany, Christian, Laurand
Frontend programming: Andrew, Christian
Backend programming: Andrew, Tiffany, Christian, Laurand
Quality Assurance: Laurand, Andrew, Tiffany, Christian
Research authentication/login: Laurand, Christian
CHANGES FROM ORIGINAL DESIGN
The original design for AppliTrack included a larger database schema with
several more tables. In an effort to streamline the application and remain within
scope, the design was simplified and the number of database tables was reduced. For
example, the original design included a 'role' table, in which information pertaining to
a specific position would be stored. The 'company' table would have a one-to-many
relationship with the 'role' table. This would allow several data points of an
application to be auto-populated if another user had already entered the specific role.
The early design also tracked more fields, including compensation ranges,
contact/referral data, and whether or not a cover letter had been included. A separate
‘date’ table was originally implemented to monitor application progression from
‘applied’ to ‘accepted’ or ‘rejected’ with intermediate fields such as ‘online assessment’
and ‘first/second interview’.
The reduced number of database tables and the user-friendly interface of the
final design make it simple for users to track and manage their job applications, and
create an efficient method of data storage and retrieval.
Many additional functionality ideas were proposed and discussed throughout
the design, creation, and testing of this application. While the final product remains a
simplification of the original design, many of these ideas would be better suited for a
project of larger scope, and could very well be implemented in future iterations.
FETCH CALLS
The Clearbit Logo API which is just an image (i.e. no fetch call because they don't
provide a JSON response). The use of Clearbit can be found in editCompany.ejs line 29
in addition to the addCompanyRecord and editCompany functions in index.js since it's
used as the default company logo if one is not provided.

We *really* wanted to use an existing API to provide more company details to the
company information page, but it is surprisingly difficult to find a free and public web
API with anything remotely useful or appropriate for an application of this type. Since
we still needed one more fetch call to meet the assignment spec, we opted for random
cat gifs instead. The use of the CATAAS API can be found in catGif.js
DATABASE SCHEMA

-- Adminer 4.8.0 MySQL 8.0.28 dump

SET NAMES utf8;


SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

SET NAMES utf8mb4;

DROP TABLE IF EXISTS `app`;


CREATE TABLE `app` (
`app_id` int unsigned NOT NULL AUTO_INCREMENT,
`user_id` int unsigned NOT NULL,
`company_id` int unsigned DEFAULT NULL,
`title` varchar(100) NOT NULL,
`status` enum('Accepted','Considering offer','Interviewing','Applied','Declined
offer','Rejected') NOT NULL DEFAULT 'Applied',
`url` varchar(2048) DEFAULT NULL,
`location` varchar(250) DEFAULT NULL,
`notes` varchar(250) DEFAULT NULL,
`added` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`app_id`),
UNIQUE KEY `app_id_UNIQUE` (`app_id`),
KEY `fk_app_user_idx` (`user_id`),
KEY `fk_app_company1_idx` (`company_id`),
CONSTRAINT `fk_app_company1` FOREIGN KEY (`company_id`) REFERENCES `company`
(`company_id`) ON DELETE SET NULL,
CONSTRAINT `fk_app_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON
DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `app` (`app_id`, `user_id`, `company_id`, `title`, `status`, `url`,


`location`, `notes`, `added`, `updated`) VALUES
(9, 1, 1, 'Software Engineer, Summer 2023 Intern', 'Applied',
'https://jobs.disneycareers.com/job/burbank/walt-disney-animation-studios-cg-animati
on-intern-summer-2023/391/39591236848', 'Burbank, CA', 'It\'s the happiest
place on Earth!', '2022-12-12 00:44:20', '2022-12-12 20:34:06'),
(10, 1, 2, 'Backend Python Developer', 'Applied',
'https://www.google.com/search?q=reddit+software+engineer+job&oq=reddit+software+eng
ineer+job&aqs=chrome..69i57j0i512l2j0i22i30l3j0i15i22i30j0i22i30l3.6129j0j4&sourceid
=chrome&ie=UTF-8&ibp=htl;jobs&sa=X&ved=2ahUKEwigmOfZjPb7AhXEjLAFHYrSBZ4Qkd0GegQIGBAB
#fpstate=tldetail&htivrt=jobs&htiq=reddit+software+engineer+job&htidocid=Ybk-juIYZz0
AAAAAAAAAAA%3D%3D', 'Los Angeles, CA', '8+ years experience', '2022-12-12
00:44:20', '2022-12-13 07:46:16'),
(11, 1, 3, 'Embedded Systems Engineer', 'Applied', '', 'Remote',
'', '2022-12-12 00:44:20', '2022-12-12 20:22:49'),
(12, 1, 4, 'QA Engineer', 'Rejected', '', 'Remote', '',
'2022-12-12 00:44:20', '2022-12-12 00:44:20'),
(13, 19, 3, 'Software Engineer, Summer 2023 Intern', 'Interviewing',
'https://www.metacareers.com/','Menlo Park, CA', 'AI Graphics Department',
'2022-12-12 00:44:27', '2022-12-13 05:11:32'),
(14, 19, 2, 'Software Engineer, Safety Signals', 'Applied',
'https://www.careermatch.com/posting/bug_39328270176/?context=merch&utm_campaign=goo
gle_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic', 'Chicago, IL',
'Considering other offers', '2022-12-12 00:44:27', '2022-12-14
01:11:15'),
(15, 19, 3, 'Embedded Systems Engineer', 'Rejected', '', 'Remote',
'', '2022-12-12 00:44:27', '2022-12-12 00:44:27'),
(16, 19, 4, 'QA Engineer', 'Rejected', '', 'Remote', '',
'2022-12-12 00:44:27', '2022-12-13 05:19:36'),
(17, 19, 1, 'Software Embedded Systems, Intern', 'Considering offer',
'https://jobs.disneycareers.com/technology', 'Burbank, CA or Remote', 'Intern
position for Disney\'s Imagineering Research and Development', '2022-12-12
01:58:16', '2022-12-13 23:11:15'),
(18, 19, 6, 'Software Engineering Internship, Diagnostics (Spring 2023)',
'Interviewing',
'https://www.tesla.com/careers/search/job/software-engineering-internship-diagnostic
s-spring-2023--162550', 'Palo Alto, CA', 'Diagnostics and Service Engineering ',
'2022-12-12 02:26:33', '2022-12-13 05:13:31'),
(19, 1, NULL, 'testing', 'Applied', 'http://www.google.com', 'Remote',
'some notes here', '2022-12-12 02:31:58', '2022-12-12 23:39:20'),
(20, 3, 1, 'Software Engineer, Summer 2023 Intern', 'Applied',
'https://jobs.disneycareers.com/job/burbank/walt-disney-animation-studios-cg-animati
on-intern-summer-2023/391/39591236848', 'Burbank, CA', 'It\'s the happiest
place on Earth!', '2022-12-12 04:10:44', '2022-12-13 17:47:43'),
(21, 3, 2, 'Backend Python Developer', 'Considering offer', '',
'Remote', '', '2022-12-12 04:10:44', '2022-12-14 01:44:52'),
(22, 3, 3, 'Embedded Systems Engineer', 'Interviewing', '', 'Remote',
'', '2022-12-12 04:10:44', '2022-12-13 23:00:54'),
(23, 3, 4, 'QA Engineer', 'Rejected', '', 'Remote', '',
'2022-12-12 04:10:44', '2022-12-12 04:10:44'),
(24, 1, NULL, 'Software Engineer level 0', 'Applied',
'http://www.samsung.com', 'Irvine, CA', 'testing logo', '2022-12-12
23:20:06', '2022-12-12 23:30:53'),
(25, 1, NULL, 'test ', 'Applied', '', '', '', '2022-12-12
23:31:27', '2022-12-12 23:33:31'),
(26, 1, NULL, 'Software Engineer', 'Applied', '', '', '',
'2022-12-12 23:48:07', '2022-12-12 23:48:07'),
(27, 1, 20, 'Software Engineer', 'Applied', '', '', '',
'2022-12-12 23:50:57', '2022-12-12 23:50:57'),
(28, 4, 1, 'Software Engineer, Summer 2023 Intern', 'Interviewing',
'https://jobs.disneycareers.com/job/burbank/walt-disney-animation-studios-cg-animati
on-intern-summer-2023/391/39591236848', 'Burbank, CA', 'It\'s the happiest
place on Earth!', '2022-12-13 04:11:43', '2022-12-13 04:11:43'),
(29, 4, 2, 'Backend Python Developer', 'Applied', '', 'Remote',
'', '2022-12-13 04:11:43', '2022-12-13 04:11:43'),
(30, 4, 3, 'Embedded Systems Engineer', 'Rejected', '', 'Remote',
'', '2022-12-13 04:11:43', '2022-12-13 04:11:43'),
(31, 4, 4, 'QA Engineer', 'Rejected', '', 'Remote', '',
'2022-12-13 04:11:43', '2022-12-13 04:11:43'),
(32, 19, 14, 'Software Engineer', 'Applied',
'https://www.hulu.com/welcome?orig_referrer=https%3A%2F%2Fwww.google.com%2F',
'Seattle, WA', 'Hulu\'s iOS and tvOS platforms', '2022-12-13 04:36:34',
'2022-12-13 05:11:47'),
(33, 19, 8, 'Hardware Engineering Intern, BS, Summer 2023', 'Accepted',
'https://careers.google.com/jobs/results/73408742109913798-hardware-engineering-inte
rn-bs-summer-2023/?category=DATA_CENTER_OPERATIONS&category=DEVELOPER_RELATIONS&cate
gory=HARDWARE_ENGINEERING&category=INFORMATION_TECHNOLOGY&category=MANUFACTURING_SUP
PLY_CHAIN&category=NETWORK_ENGINEERING&category=PRODUCT_MANAGEMENT&category=PROGRAM_
MANAGEMENT&category=SOFTWARE_ENGINEERING&category=TECHNICAL_INFRASTRUCTURE_ENGINEERI
NG&category=TECHNICAL_SOLUTIONS&category=TECHNICAL_WRITING&category=USER_EXPERIENCE&
employment_type=INTERN&jex=ENTRY_LEVEL', 'Various Locations, Remote Eligible',
'Work closely on core Consumer Hardware products.', '2022-12-13 04:39:54',
'2022-12-13 23:13:47'),
(35, 19, 6, 'System Software Engineering Internship (Summer 2023)',
'Applied',
'https://www.tesla.com/careers/search/job/system-software-engineering-internship-sum
mer-2023-159040', 'Palo Alto, CA', 'Tesla Energy - Solar & Storage Department',
'2022-12-13 05:56:18', '2022-12-13 17:33:33'),
(36, 1, 21, 'Software QA', 'Applied', 'http://www.samsung.com',
'remote', '', '2022-12-13 06:06:23', '2022-12-13 07:43:25'),
(37, 1, 22, 'Software Engineer', 'Applied', '', '', '',
'2022-12-13 06:47:15', '2022-12-13 07:43:58'),
(40, 19, 23, 'Software Engineering Intern (Summer 2023)', 'Applied',
'https://jobs.dropbox.com/listing/4380645', ' Remote - US; Remote - Canada',
'Opportunities available in their Product Engineering and Site Reliability
Engineering (SRE) teams.', '2022-12-13 22:39:42', '2022-12-13 22:39:42');

DROP TABLE IF EXISTS `company`;


CREATE TABLE `company` (
`company_id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`logo` varchar(2048) DEFAULT NULL,
`careers_url` varchar(2048) DEFAULT NULL,
PRIMARY KEY (`company_id`),
UNIQUE KEY `company_id_UNIQUE` (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `company` (`company_id`, `name`, `logo`, `careers_url`) VALUES


(1, 'Disney+', '/img/logos/disneyplus.png',
'https://jobs.disneycareers.com/'),
(2, 'Reddit', '/img/logos/reddit.png', 'https://boards.greenhouse.io/reddit'),
(3, 'Meta', '/img/logos/meta.png', 'https://www.metacareers.com/jobs/'),
(4, 'The Coca-Cola Company', '/img/logos/coca-cola.png',
'https://www.coca-colacompany.com/careers'),
(5, 'Microsoft', '/img/logos/microsoft.png',
'https://careers.microsoft.com/us/en/'),
(6, 'Tesla', '/img/logos/tesla.png',
'https://www.tesla.com/careers/search/job/system-software-engineering-internship-sum
mer-2023-159040'),
(8, 'Google', '/img/logos/google.png', 'https://careers.google.com/'),
(14, 'Hulu', 'https://logo.clearbit.com/hulu.com?width=110px&
max-height=60px', 'https://jobs.jobvite.com/hulu/jobs/'),
(20, 'Disney Plus', '/img/uploads/1670960687305.png',
'https://jobs.disneycareers.com/'),
(21, 'samsung', 'https://logo.clearbit.com/samsung.com',
'https://www.samsung.com/us/careers/'),
(22, 'brother', 'https://logo.clearbit.com/brother.com',
'https://careers.brother-usa.com/'),
(23, 'Dropbox', 'https://logo.clearbit.com/dropbox.com',
'https://jobs.dropbox.com/all-jobs');

DROP TABLE IF EXISTS `user`;


CREATE TABLE `user` (
`user_id` int unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(254) NOT NULL,
`password` varchar(72) NOT NULL,
`first_name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_id_UNIQUE` (`user_id`),
UNIQUE KEY `email_UNIQUE` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `user` (`user_id`, `email`, `password`, `first_name`, `last_name`)


VALUES
(1, 'a@gmail.com',
'$2b$10$Epa.be4Ia5HiP8RUasEFi.YZ.ME78/3LojsE/KcNuRebb2aRWziua', 'tiff',
'a'),
(3, 'znyx@gmail.com',
'$2b$10$XjNlmYZeYictQ2cByhQ5y.ohGUeCeUKmxL7t50pQUtPxaQ5/5iaGy', 'Zagreus',
'Nyx'),
(4, 'laurandosmeni@gmail.com',
'$2b$10$2Rg99VDpCy0FG0f5YPI.MeNcIgml2Q3EVmKjJTHbcLhVOzSriqZ6a', 'Laurand',
'Osmeni'),
(19, 'johndoe@gmail.com',
'$2b$10$Ze2.7CDKC5p3QkbwGlXZB.XX/y8VumYZdAzjiUA0zSRYPNXXd9wH6', 'John',
'Doe');

-- 2022-12-14 03:16:38
SCREENSHOTS OF FINISHED PRODUCT

LOGIN

REGISTRATION
VIEW APPLICATIONS

EXPANDED USER PROFILE MENU


VIEW COMPANY

EDIT COMPANY
EDIT APPLICATIONS

ADD APPLICATIONS
CONCLUSION
AppliTrack meets the minimum viable product originally set. The main view
shows the user’s list of applications sorted by status and recency, in order to keep more
important applications near the top. For example, applications marked as
"Considering offer" or "Interviewing" will appear near the top, while applications
marked as "Declined offer" or "Rejected" sink to the bottom.
Additionally, there are views for submitting new applications, editing existing
applications, and viewing or editing company information. When editing company
information, logos can be sourced via URL, file upload, or an external logo API. The
site’s database contains three tables to store users, their applications, and company
data, and uses authentication and sessions to store data privately for each user.

LONG-TERM FEATURE IDEAS

● Integration with job platform APIs e.g. LinkedIn, ZipRecruiter, Careerjet,


etc. to populate job postings and mark as “applied for”
● Employer personas? Could show some public data such as what types of
roles users are applying for, potential for headhunting / hiring pool
● Automatically import job details from URL (ideally API calls, but may
require implementing scraping logic for some platforms)
● Dashboard for personalized and/or global data metrics
● Which roles have less competition?
● Which companies have users had the most/least success with?
● How quickly do specific companies typically respond?
● How much does a cover letter or referral affect your success rate?

POSSIBLE MONETIZATION STRATEGIES:

● Data metrics once a large enough user base has been established
● Advertising job postings
● Commission on hires / referrals

You might also like