HepsiJET
I was on a sprint team at HepsiJET, a logistics company, and wrote code for two of its projects. One was JetSuite, built with Java 11 and Spring Boot. The other was the Courier Management System, built with Express.js and React.
- Role
- Software Developer
- Company
- HepsiJET, Sancaktepe, Istanbul (hybrid)
- Period
- 10/2024 – 09/2025
- Used
- Java 8 · Java 11 · Spring Boot · Express.js · React · PostgreSQL · RabbitMQ · GitLab CI
Team and sprints
We took our work from Jira and closed almost every sprint.
We worked in sprints in an Agile setup. We had a team lead and took our tasks from Jira. In sprint planning our product manager gave each of us as much work as we could take on, up to 13 story points. We closed almost every sprint. When my own sprint tasks were done, I moved on to items in the backlog. I really enjoyed working that way.
I was on three projects and actively worked on two of them, JetSuite and the Courier Management System. I delivered my sprint work with about 95% test coverage.
JetSuite
Webhooks that send shipment information to customers.
On JetSuite I worked with Java 11 and Spring Boot. This was the project where we built the webhook integrations that sent shipment information to customers and to the companies involved.
The flow started in the main system, TMS. A shipment created there was put on RabbitMQ and then landed in JetSuite, where we handled its webhooks. We tracked shipment status in PostgreSQL and read the logs in Octant.
Courier Management System
Backend, frontend and database in one ticket.
The Courier Management System was written entirely in JavaScript, with Express.js on the backend and React on the frontend. Its Turkish name is Taşımacı Yönetim Sistemi (TYS). I worked full stack here.
If a ticket needed backend, frontend and database changes, I did all of it in that one ticket and shipped it in one go.
Environments and releases
How a task reached production.
There were four environments (dev, test, pre-production and production), and each one had its own PostgreSQL database. This is how a task got to production:
- 01
I took the task from Jira, built it and moved it to QA when it was done.
- 02
A tester checked it and moved it to Ready to Deploy.
- 03
Tasks were released either together as a package or one at a time.
- 04
CI ran automatically on GitLab. Once a build passed CI, the deployment (CD) was started by hand from GitLab.
- 05
Deployments happened on Wednesday nights at midnight with about ten people. I didn't run them myself, but I was there for them.