o3ํํ LLM WebDev ๋ฅ๋ ฅ ํ๊ฐ์ฉ ๋ฌธ์ ๋ง๋ค์ด๋ฌ๋ผํ๊ณ ๋ฃ์๋๋ฐ opus 4๋ ์คํจํ๊ณ ์๋ ์ฑ๊ณตํ๊ณ ๊ฝค ์๋ง๋ค์๋ ธ
๋ฌธ์ ์ ๋ฌธ:
Objective
Design, implement, and document a full-stack web applicationโโWorldWatchโโthat lets users explore real-time, AI-summarized news from around the globe. The project must demonstrate mastery across modern front-end, back-end, DevOps, and security practices while showcasing an LLMโs reasoning and code-generation skills.1
| Area | Requirement |
|---|---|
| Data Ingestion | โข Poll the freely available News API every 10 min for the 20 latest English-language articles. โข De-duplicate by canonical URL and persist raw JSON in a database. |
| AI Summaries | โข For each article, generate a 150-word abstractive summary and a 3-bullet โkey takeawaysโ list using your own OpenAI-compatible completion endpoint. โข Cache summaries; regenerate only if the original article text changes. |
| REST & GraphQL | โข Expose identical functionality through both a REST layer (/api/v1/โฆ) and a GraphQL endpoint (/graphql). |
| Web UI (PWA) | โข React 18 + TypeScript + Vite. โข Infinite scrolling, dark-mode toggle, and search-as-you-type filtering. โข Offline support (service worker + IndexedDB). |
| Real-Time Updates | โข Broadcast new or updated articles to all open clients via WebSockets; the UI must auto-insert them without a hard refresh. |
| Accessibility & i18n | โข Meet WCAG 2.2 AA contrast and keyboard-nav guidelines. โข Provide an i18n scaffold (English + one additional locale of your choice). |
| Auth | โข Implement Google OAuth 2.0; anonymous read-only users see truncated summaries, logged-in users see full content. |
| Admin Console | โข Password-protected /admin route to view ingestion logs, force refresh, and toggle feature flags stored in Redis. |
| Rate Limiting & Caching | โข Apply per-IP rate limiting (Sliding Window) to public APIs. โข Use HTTP conditional requests (ETag, Last-Modified) and CDN-friendly headers. |
| Testing | โข โฅ 80 % combined branch coverage across unit, integration, and E2E (Playwright or Cypress) suites. |
| CI/CD | โข GitHub Actions pipeline: lint, test, build Docker image, push to registry, deploy to staging on every main-branch push. |
| Deployment | โข K8s (Kind) manifests plus Helm chart; one-command local spin-up via make dev. |
| Observability | โข Structured JSON logging (w/ trace IDs), Prometheus metrics, and OpenTelemetry distributed traces spanning the ingestion job, API, and WebSocket gateway. |
| Security Hardening | โข OWASP Top 10 mitigations: CSP, CSRF via SameSite cookies, param binding, prepared statements, secrets in Vault, etc. |
| Documentation | โข README.md with architecture diagram, setup steps, and a 500-word โdesign trade-offsโ section. |
-
Language & Framework Freedom: You may choose any back-end stack (e.g., FastAPI, NestJS, Go Fiber) as long as TypeScript is used on the front end.
-
Database: PostgreSQL 15; use a migration tool (e.g., Prisma, Flyway).
-
Containerization: Everything must run in Docker; the project should also support docker compose up for quick local evaluation.
-
Compute Budget: The full system (ingestor + API + front end) must idle on โค 1 vCPU / 1 GB RAM.
-
Lines of Code: โค 5 000 excluding generated files and test fixtures.
ํ๊ธ ์์ฝ:
๋ชฉํ
์ฃผ์ ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ
โWorldWatchโ๋ผ๋ ํ์คํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณยท๊ตฌํยท๋ฌธ์ํํฉ๋๋ค. ์ด ์ฑ์ ์ ์ธ๊ณ ์ต์ ๋ด์ค(News API 10๋ถ ์ฃผ๊ธฐ ์์ง)๋ฅผ AI๋ก ์์ฝํ์ฌ ์ค์๊ฐยท์คํ๋ผ์ธ์์๋ ์ ๊ณตํด์ผ ํ๋ฉฐ, ๊ณผ์ ๋ LLM์ ์ค๊ณยท์ฝ๋ ์์ฑยทDevOpsยท๋ณด์ ๋ฅ๋ ฅ์ ์ข ํฉ์ ์ผ๋ก ์ธก์ ํฉ๋๋ค.-
๋ฐ์ดํฐ ์์ง & ์ ์ฅ
-
News API์์ ์ต๊ทผ ์๋ฌธ ๊ธฐ์ฌ 20๊ฑด์ 10๋ถ๋ง๋ค ํฌ๋กค๋ง โ URL ์ค๋ณต ์ ๊ฑฐ ํ PostgreSQL์ ์๋ณธ JSON ์ ์ฅ.
-
-
AI ์์ฝ
-
๊ธฐ์ฌ๋น 150์(๋จ์ด ๊ธฐ์ค) ์ถ์์ ์์ฝ + 3๊ฐ ํต์ฌ ํฌ์ธํธ ์์ฑ.
-
๊ธฐ์ฌ ๋ด์ฉ์ด ๋ฐ๋์ง ์์ผ๋ฉด ์บ์ ์ฌ์ฌ์ฉ.
-
-
API
-
๋์ผ ๊ธฐ๋ฅ์ REST(/api/v1/...)์ GraphQL(/graphql)๋ก ๋ชจ๋ ๋ ธ์ถ.
-
-
ํ๋ฐํธ์๋(PWA)
-
React 18 + TypeScript + Vite.
-
๋ฌดํ ์คํฌ๋กค, ๋คํฌ ๋ชจ๋, ์ค์๊ฐ ๊ฒ์, ์คํ๋ผ์ธ(IndexedDB + Service Worker) ์ง์.
-
-
์ค์๊ฐ ์ ๋ฐ์ดํธ
-
WebSocket์ผ๋ก ์ ๊ธฐ์ฌ ๋ธ๋ก๋์บ์คํธ โ ํด๋ผ์ด์ธํธ๋ ์ ์นด๋ ์ฆ์ ์ฝ์ .
-
-
์ ๊ทผ์ฑยท๋ค๊ตญ์ด
-
WCAG 2.2 AA ์ถฉ์กฑ, ํค๋ณด๋ ๋ด๋น๊ฒ์ด์ ๊ฐ๋ฅ.
-
i18n ์ค์บํด๋ฉ(์์ด + ์ถ๊ฐ 1๊ฐ ์ธ์ด).
-
-
์ธ์ฆ
-
Google OAuth 2.0. ๋น๋ก๊ทธ์ธ ์ฌ์ฉ์๋ ์์ฝ ์ผ๋ถ๋ง, ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ ์ ๋ฌธ ์ด๋.
-
-
๊ด๋ฆฌ ์ฝ์
-
/admin ๋ณดํธ ๋ผ์ฐํธ: ์์ง ๋ก๊ทธ, ๊ฐ์ ์๋ก๊ณ ์นจ, Redis ๊ธฐ๋ฐ ๊ธฐ๋ฅ ํ๋๊ทธ ํ ๊ธ.
-
-
์ฑ๋ฅยท๋ณด์
-
IP๋น ์ฌ๋ผ์ด๋ฉ ์๋์ฐ Rate-limit, ETagยทCDN ์บ์ฑ, CSPยทCSRFยทPrepared Statement ๋ฑ OWASP Top 10 ๋์.
-
-
ํ ์คํธ & CI/CD
-
๋จ์ยทํตํฉยทE2E ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง 80 % ์ด์.
-
GitHub Actions: ๋ฆฐํธยทํ ์คํธยทDocker ๋น๋ โ ๋ ์ง์คํธ๋ฆฌ ํธ์ โ ์คํ ์ด์ง ๋ฐฐํฌ.
-
-
๋ฐฐํฌยท์ด์
-
๋ชจ๋ ์ปดํฌ๋ํธ Dockerize, docker compose up ์ง์.
-
Kind(K8s) ๋งค๋ํ์คํธ + Helm ์ฐจํธ, make dev๋ก ๋ก์ปฌ ์ผ๋ฐ ๊ธฐ๋.
-
๋ก๊ทธ(๊ตฌ์กฐํ JSON + Trace ID), Prometheus ๋ฉํธ๋ฆญ, OpenTelemetry ๋ถ์ฐ ์ถ์ .
-
-
ํ๋ฐํธ๋ ๋ฐ๋์ TypeScript, ๋ฐฑ์๋๋ ์์ (FastAPI/NestJS/Go ๋ฑ).
-
PostgreSQL 15, ๋ง์ด๊ทธ๋ ์ด์ ํด ํ์.
-
์ ์ฒด ์์คํ ์ ํด ์ โค 1 vCPU / 1 GB RAM, ์ฝ๋ 5 000ํ ์ดํ(์์ฑ ํ์ผยทํ ์คํธ ํฝ์ค์ฒ ์ ์ธ).
-
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ฌ๋ฆ์ด๋ค...