All projects
Nuxt · Express BFF · OIDC

104 45+ Job Platform

2021 – 2024Commercial · Vue/Nuxt · SSR · BFF · Authentication

A two-sided job-matching platform for over-45s at 104, Taiwan's largest job platform, built by a product team of about seven people. It was a new product, started from nothing: a content-heavy, server-rendered job site for job seekers, pages for employers, and an internal admin for 104's consultants. Because we were starting clean, the stack was an open question — I proposed Nuxt over the React we had been using, my manager signed off, and I opened the repository. The first commit is mine and it says `project init`. I stayed its main front-end owner until I left, across roughly 1,300 commits on the two sites.

Key features & challenges

  • Chose Nuxt for a greenfield product and made the case for it; my manager signed off. Opened the repo with the first commit and owned the front end for two years — around 925 commits on the public site and 399 on the internal admin, and the most frequent editor of `nuxt.config.js`.
  • Set up the Express layer between the browser and the core API, based on our sister product's server. The browser only calls same-origin `/50talent/_api/*`. The server forwards each request, attaches the bearer token and hides the backend domain. I wrote most of its API routes. A colleague wrote the referer check.
  • Added the 104 account-centre login routes on top of the team's existing OIDC module. Sessions lived in Redis.
  • Wrote most of the JSON-LD structured data for the server-rendered pages — 25 of the 45 commits in that module are mine — plus canonical and Open Graph tags on the pages I owned.
  • Kept search state in the URL query rather than the store, so a filtered result set is shareable and the back button behaves.
  • Mentored the junior front-end developers and reviewed their pull requests; one approval was our merge bar. I also added a lint step to the CodeBuild build, so code that failed lint stopped the build.

My contributions

  • Front-end owner of the public site: routing, SSR, most of the Express routes, and the account-centre login. I also worked on the internal admin.
  • The stack choice was mine to propose and my manager's to approve. It was a greenfield product, not a migration — nothing was ported.
  • The sitemap was maintained by colleagues; I have a single commit on it. The structured data is the part that was mine.