💼 Professional

Celedog.id — Indonesia's Research Intelligence Platform

Building Indonesia's first consolidated business intelligence and research report platform from the ground up, as both project manager and lead full-stack developer.

March 29, 2026
Vue.jsSpring BootJavaTypeScriptDockerAlibaba CloudOpenSearchRedisProduct Management

Visit the platform

What it is

Celedog.id is a research and business intelligence platform for the Indonesian market. The idea is simple in principle: aggregate industry reports, company research, annual reports, investment strategies, government policy documents, stock analysis, and investment banking research into one searchable platform. A library that covers practically everything, for analysts, businesses, universities, and anyone else who needs reliable research.

There is no direct competitor in the Indonesian market for this. That was one of the first things we confirmed when we started taking the project seriously.

The platform is the Indonesian localisation of Celedog.com, an established Chinese research platform owned by our parent company Huahui Times International. The Chinese platform exists and works. Our job was to build an Indonesian version for the local market, adapted from Celedog.com's UI templates, but rebuilt from scratch under the hood.

How it actually started

Officially the project kicked off around October 2025. Unofficially, nothing of consequence happened for a while. Direction was unclear, progress was scattered, and there was no real structure.

That changed in late December, when our parent company's supervisor Mr. Xue gave the team a clear PRD, defined requirements, and established a proper meeting structure. From that point forward the project moved fast. Every week had a clear goal. Every Friday had a written report. Progress since January has been the kind that makes the October period feel like it happened to a different team.

What my role is

I am the project manager and lead full-stack developer on a three-person team: me, Lutfi on frontend, and Gumilang on the crawler and data pipeline.

In practice that means I run daily alignment meetings, write the weekly progress reports, write the monthly plans, manage the meeting minutes, and coordinate with the Chinese parent company via WeChat. And I also do the bulk of the backend development, the system architecture, the DevOps, the security, the payment integration, and the production deployment.

The dual role is unusual. It means that when something is blocked, I am the one deciding how to unblock it and then also the one doing the unblocking. There is almost no buffer between a decision and the execution of that decision, which is efficient but does not leave much margin for error.

The stack

The backend runs on Spring Boot with JWT authentication, Spring Security, JPA/Hibernate, Flyway for database migrations, and Redis for caching, JWT blacklisting, and session management. The frontend is Vue.js, with vue-i18n for full trilingual support across Indonesian, English, and Chinese.

Everything runs on Alibaba Cloud, which made sense given the parent company's Chinese infrastructure and the fact that we need the platform accessible in China. Files go to Alibaba OSS. Monitoring runs on Grafana, Prometheus, Loki, and Promtail. The whole thing is containerised with Docker and Docker Compose, with separate test and production environments.

In March we added OpenSearch for full-text search at scale, specifically to handle the load when the report catalogue reaches the millions. Payment started on Midtrans, then switched to Xendit once we needed to support international withdrawals to Hong Kong banks.

January: building the foundation

January was infrastructure month. The Alibaba Cloud server had not been provisioned yet, which blocked all real deployment work, so everything was built locally and tested against temporary storage.

The admin panel came first: full database schema, backend APIs, a 3-tier role-based access control system (Operator, Admin, Super Admin), and a Dictionary Management system that replaced hardcoded values across the platform with a database-driven approach. Then the Research Reports module: the report listing, filters, sorting, the PDF viewer with DRM controls, download access gating, and the publishing pipeline.

By the end of January the crawler had collected 9,834 files across 20 data sources including Bank Indonesia, OJK, the IDX, BPS, and several international sources. The platform existed, it worked, and it was waiting for a server.

February: going live

The Alibaba Cloud server finally came through in early February. Within two weeks the platform was deployed at celedog.id with an auto-deploy script cycling every two minutes off the production branch.

February was also where the platform started looking like a real product rather than a prototype. The homepage was connected fully to the backend. The mobile layout was rebuilt from scratch: collapsible filters, horizontal scrolling sections, a floating toolbar in the report viewer. The About page, footer, and social media presence (X, YouTube, Facebook, LinkedIn, WeChat) were all created. The admin panel was translated into all three languages.

The end of February was internal testing: a comprehensive testing document went out to stakeholders, and the team shifted into bug-fixing mode.

March: hardening for production

A proper production security audit in March Week 2 found more than I would have liked. JWT tokens were readable via XSS. A fake payment endpoint was exposed. There were race conditions on the benefit and subscription activation paths. Payment reconciliation had an OOM risk. Test data was still in production. Secrets had been committed to Git.

All of it got fixed. The auth system was overhauled to use httpOnly cookies and refresh token rotation. Spring Security was inverted to deny-by-default. File uploads got magic-byte validation via Apache Tika. CSP headers were hardened. Payment endpoints were locked down. Swagger went behind nginx basic auth.

The other major March change was PDF.js. The report viewer had been loading full PDFs upfront, which on a large report meant waiting 30 seconds before you could read anything. Implementing lazy loading with a text layer brought that down to 2 to 3 seconds. It was the kind of fix that is technically straightforward once you know what to do, but the production deployment had been broken in a non-obvious way for weeks before we tracked it down.

The China problem

One thing I did not expect when starting this project was how much time I would spend thinking about China.

The platform needs to be accessible from China, because a significant part of our target market is Chinese companies and investors operating in Indonesia. The app intermittently blacks out when accessed from China. We deployed a CDN for overseas traffic, but the China CDN solution is still unresolved. Google OAuth caused minute-long load times for Chinese users because the Google auth libraries were loading at runtime, blocked by the firewall. We stripped those out and added a timezone-detection popup warning Chinese users about the OAuth limitation. The problem is partly fixed and partly not.

It is a constraint that does not come up in most web projects. Every infrastructure and third-party service decision now has a secondary question attached: does this work from behind the firewall?

Where things stand

As of March 2026, the platform is live at celedog.id. The reports module is functionally complete. Payment works. Monitoring is running. The security audit has been addressed. The AI features (an AI reading assistant per report and a semantic AI search) are built at the UI level but officially deferred to the next phase.

April is the data sprint. The plan is to push the report catalogue across six categories of Indonesian content, targeting the official launch on May 1, 2026. Mr. Wang from the parent company is coordinating a data processing specialist hire to support the effort. The Chinese team is handling the international data sourcing while we cover the Indonesian government, securities, and institutional sources locally.

The scale target in the latest presentation from the parent CEO is 4 million company reports, 100,000 new reports per month, and 5 million data points indexed. That is not where we are today. But it is where the infrastructure is now being designed to go, and that shapes every technical decision from here on.

We are four months in from when the project actually started. The platform works. Putting it in front of real users in May is the next test.