Web Service · 2026
Freelance Developer Site with a Project CMS
A portfolio where one write-up publishes to both the Korean and English site
A homepage and a small management tool in one, so finished projects can be written up once, published in Korean and English, and inquiries can be handled in one place.
- Client
- Confidential client
- Category
- Web Service
- Project site
- Project site ↗

Overview
- A freelance developer's homepage and a tool for managing project write-ups, built as one site
- Visitor path: see what can be commissioned → read a case → send an inquiry
- Write-ups added and edited by the owner in a management area attached to the site
- Publishing one case also produces its list card, its own page, and the information search engines need
- Korean and English run together; a case without an English write-up stays off the English side

Challenge
- Cases kept in documents or an outside service need their formatting redone each time
- A separately maintained English page lets the two languages drift apart
- An outside form service leaves contact details and project descriptions outside the site
- No reason to keep received inquiries indefinitely
- A general-purpose tool that can build any page at all is too much for a single-author site
Solution
- Management features limited to project cases: writing, image uploads, categories, technologies and tags, inquiries
- Body fixed into overview, challenge, solution, implementation and result sections
- Only five elements available inside a section — paragraph, subheading, list, image, code → every case reads the same
- Korean and English fields placed side by side on one screen, so a translation is written next to the original

- Publishing builds the list and the page in both languages, with category filters
- Cases without an English title and summary are left out of the English list

System architecture
- Visitor flow: services on the home page → project list filtered by category → case page → inquiry
- Owner flow: sign in → write a case and upload images → review as a draft → publish → read inquiries
- Work in progress stays a draft and off the site; publishing adds it to both language lists

Implementation
- The address decides the language: no prefix for Korean,
/enfor English - Switching language on an untranslated page leads to the closest page that exists in that language
- Inquiries stored on the site, with a messenger alert on arrival
- Alerts carry no name, contact details or message text — only a link into the management area → personal data never leaves the site
- Inquiries deleted automatically one year after they arrive


- Images uploaded from the browser straight to storage, with size and format re-checked by the server on confirmation
- No sign-up screen; accounts created only by a command on the server, and locked after repeated failed sign-ins
- A separate command-line tool turns a finished project folder into a draft case; uploads arrive as drafts and are published after review
Result
- One write-up published to the Korean and English site at once, browsable by category
- Each finished project added directly from the management area
- Inquiries collected on the site, never sent outside, deleted once their retention period ends
- Running on a server kept in-house, with visit statistics read from the same server
Technology
- Next.js
- React
- TypeScript
- FastAPI
- Python
- PostgreSQL
- Docker
Screens





Have a problem that needs solving?
From software development to equipment integration and engineering, we can work out the approach that fits what your project needs.
Discuss a project