I was hired in jobsnepal.com in June 2018 to rewrite jobsnepal.com from scratch. Jobsnepal itself didn't have any IT team or we can say that it is purely a recruitment company. The sole reason of rewriting their entire application from scratch can listed as:
No responsive design: Jobsnepal.com didn't have a responsive design instead it has separate application for mobile devices. Mobile website was incomplete as they had been offering only job listing feature in mobile site. Company and Jobseeker could do nothing from their mobile, as they only view the job lists.
Security reason: Their website had been hacked couple of times in the past. As their could be several other security hole as well which could be exploit.
Application Errors: Their was several errors in their application, specially in account section. As application was quite big, so it's so difficult to change in one place, because there was always fear about breaking something
Fear to change: I always used to afraid to change in their source as because It was quite big application and changing a part of application could break other part of application.
Old Php 5.1: PHP was running in php 7, but company was running in one of the oldest php, which was dead for half decades ago. It was even difficult to find that php version.
Jobsnepal is the first job portal in our country, started in early 2000, serving more than 20 years old. They are renowned by hundreds of thousand job-seeker and company. As a single developer I had a pressure to complete project in time with fulfilling their expectation towards one of the renowned job portal. Our main goal was to design the website and interactive experience that accurately portrayed their reach and influence among hundreds of thousands of job-seeker and candidates.
Major things I have done
- Job portal is a complex system, it consists of at least three types of users: Company,
Jobseeker and Job portal Admin. I designed, architect and deploy the system from scratch
with modern tools and techniques available in the market.
- Database work: one of the intensive work that I have done is in database section. I have re-
designed the database from scratch (The old database design was too poor which didn't
have follow any database design principles. Past developers had modified the poor
database as their wish without thinking about performance and design.) I redesigned the
databases with the modern database principles and techniques such as normalization,
atomicity, relationship etc.
- Data Migration: We had almost 20 years of data back in old database. The new database has
different schema and now the problem was to fit the old data into new database. To solve
this problem I wrote a another python script project just to migrate the data into new
database. To be specific about the project: The project have used python packages such as
pandas and numpy to write the migration scripts.
- Responsiveness: To be honest, company have hired another developer to design the landing
page. Except that landing page, all of that designs are mine. I have used bootstrap at first
later I have used tailwind css as well.
- Testing: I have written test cases for most of the parts of application. It gives us confidence
to refactor our code even after the project size increases. I have written integration, and unit
- Optimization: I have done optimization in different aspects.
- Query Optimization: I am aware of n+1 problems in sql query. I tried to use minimum
number of models, and try to make query response under 500ms. Which was achieved.
- Cache: We cache our query as well as objects to reduce the database query.
- Media Sizes: We had a lots of images in home pages: we used image optimization tools
as well as we resizes the images into three different sizes and loaded images according
to the need to make page load fast. Image lazy load;
- Assets minimization and cache: we minimizes the css and js files with minify, we
removed unused css using purge css. we cache our static assets in aws s3.
Job Listing Page
Company Account Page