From Personal Project to Open Source: Releasing Japan Listed Companies Site
Tags: programming, webdev, opensource, beginners
Published: 2023-08-07 11:57:18

This is my first article in English!

## Conclusion
I have released a web service I was developing individually as OSS. I will write about the background and technical environment of this release.

---

All the source code is available on GitHub.
I would be delighted if you could star or contribute it!

https://github.com/yuki0920/company-ranking

## Released Service: Japan Listed Companies
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/010o3hjc732d3yzxecoh.png)

Recently, I released a web service as open source.
Of course, English as well as Japanese is available!
It's a service called "Japan Listed Company", allowing you to view Japanese listed companies by industry in order of "salary" or "sales."

- URL: https://www.company-ranking.net/en
- GitHub: https://github.com/yuki0920/company-ranking

I have experienced job-hunting twice, and there are several things you want to know when choosing a company, such as:

- "How much is the salary?"
- "What are the sales and profits like?"

Such information is rarely listed on job pages, and you can only find out by looking at the company's financial statements.

But researching financial information for each company is a hassle, isn't it?

So, I created a service that I wanted to use as a user. I have been developing it with a focus on making it easy to see and use.

## Technical Environment
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awnqrjv8zbu14pie3awu.png)


- Worker: Ruby, Ruby on Rails
- Web API: Go, chi
- Frontend: TypeScript, React, Next.js
- Infra: Heroku (Server, DB, Scheduler)
- Hosting: Vercel

I recently revamped the technology stack to the above configuration.
I'm using Heroku for infrastructure, a friend of individual development.

### About Worker
Heroku Scheduler activates the Worker, and Rails' regular jobs are executed. These jobs have several types, mainly responsible for retrieving company information, financial information, and saving it to the DB.

### About Web API
I have adopted Go for the Web API.
I define the schema with Open API and generate server code using [oapi-codegen](https://github.com/deepmap/oapi-codegen).

Initially, this Web API was written in Rails, like the Worker, but I replaced it with Go for personal reasons. I often use Go for the backend at work and don't have a chance to touch Rails. So I wanted to implement the Web API in Go, where I have some knowledge, and replaced it with Go.

### About Frontend
I have adopted Next.js for the Frontend.
I'm using App Router instead of the conventional Page Router.

Initially, I used Nuxt.js (2.x) with Composition API for the Frontend. However, considering the high hurdles for updating to Nuxt.js 3.x and the ecosystem not catching up with Vue3, I replaced it with Next.js.

## Why I Released It as OSS
Why did I release a service I was developing individually as OSS?
It's because I couldn't see a way to monetize it.

Initially, I aimed to monetize through AdSense or job advertisements by generating PV. However, the current PV is only about 500 per month at most. I tried changing Keywords or Descriptions to improve SEO, but I didn't see significant improvement.

I also considered selling the website, but unless it was already generating revenue, the price would hardly be set, and the market price seemed to be around 100,000 yen.

If I couldn't monetize it, I thought I might as well make it part of my technology portfolio, so I decided to release it as OSS.

By releasing it, I also hope to receive feedback from all of you and use it to improve the service.

## Lastly

Thank you for reading to the end.

Please take a look!

- GitHub: https://github.com/yuki0920/company-ranking
- URL: https://www.company-ranking.net/en