space‑l · client OS
Period — Present
Progress previously shared through separate documents and messages now lives in one place. I built the server and deployment pipeline.
Advertising performance and daily sales across 3 overseas markets on one screen
- Client login with an ID and password, staff login through Slack
- Local currency amounts shown with KRW reference amounts
- Schedule timeline and shared materials
- Internal CRM and inbound inquiries
Client data and internal data
- Problem
- Client views and internal CRM needed to share an app while keeping each client's data separate.
- Solution
- Next.js handles the interface while the Go API server handles authentication, DB, files and email. Client staff see only their own company's workspace. Files are isolated in per‑client storage with credentials that can reach only that storage.
Branches piling up per client
- Problem
- Writing each client's requirements straight into the code would add another branch with every new client.
- Solution
- Split the server into shared features and per‑client work modules. Data is organized in a hierarchy of client, brand, project or campaign, then task, and a rule blocks client‑specific hard‑coding. The server work is split into shared features and 11 work modules.
Screen changes that needed a developer
- Problem
- PMs had to ask developers to merge and deploy every screen change.
- Solution
- An internal deployment service checks branches every 2 minutes and deploys after validation. A PM's label triggers a merge only for PRs that pass checks. PMs can apply screen changes without developer help, and deployment tokens were removed from repositories.