핵심 기술 스택: 프론트엔드와 백엔드의 이해 및 예제
AI에게 올바른 지시를 내리려면 우리가 무엇을 만들고 있는지 전체 구조(아키텍처)를 알아야 합니다. 현대 웹 서비스는 화면을 그리는 프론트엔드와 데이터를 처리하는 백엔드로 완전히 분리되어 JSON 형태의 데이터를 주고받습니다.
🎨 프론트엔드 (React + TS)
사용자의 브라우저(크롬, 엣지)에서 실행되며 눈에 보이는 화면(UI)을 담당합니다.
- npm (Node Package Manager): 자바스크립트 생태계의 거대한 앱스토어입니다.
npm install [패키지명]명령어로 전 세계 개발자들이 만든 기능을 1초 만에 가져옵니다. - React: 웹페이지를 레고 블록(컴포넌트)으로 쪼개어 조립하는 페이스북의 UI 라이브러리입니다.
- TypeScript: 자바스크립트에 '자료형' 규칙을 추가한 언어입니다. AI는 종종 존재하지 않는 변수를 부르는 '환각'을 일으키는데, TypeScript가 이를 실행 전에 잡아내는 방패 역할을 합니다.
React + TS 예제 (App.tsx)
import { useState, useEffect } from 'react';
interface User {
id: number;
name: string;
}
export default function UserProfile() {
const [users, setUsers] = useState<User[]>([]);
useEffect(() => {
fetch('http://localhost:8000/api/users')
.then(res => res.json())
.then(data => setUsers(data));
}, []);
return (
<div className="p-4 bg-slate-800 text-white">
{users.map(u => <p key={u.id}>{u.name}님 환영합니다.</p>)}
</div>
);
}
⚙️ 백엔드 (FastAPI + SQLite)
데이터를 데이터베이스(DB)에 저장하고 프론트엔드의 요청에 응답하는 서버입니다.
- FastAPI: 파이썬 기반의 최신 웹 프레임워크입니다. 특히 AI 모델(LLM)을 서버에 연동할 때, AI 생태계의 표준인 파이썬을 그대로 쓸 수 있어 압도적으로 유리합니다.
- SQLite: 복잡한 DB 서버 설치 없이, 프로젝트 폴더 안에
database.db라는 가벼운 파일 하나로 동작하는 관계형 데이터베이스입니다. 초기 프로젝트에서 최고의 가성비를 제공합니다.
FastAPI + SQLite 예제 (main.py)
from fastapi import FastAPI
import sqlite3
app = FastAPI()
@app.get("/api/users")
def get_users():
# 실제로는 SQLite 파일에서 데이터를 조회합니다.
return [
{"id": 1, "name": "AI 마스터"},
{"id": 2, "name": "Windows 유저"}
]
Windows 터미널의 지휘관: Gemini CLI와 AI Studio
Windows 환경에서 코딩을 시작하려면, 까만 화면의 터미널(PowerShell) 명령어만으로 AI를 제어하는 법을 알아야 합니다.
1. 필수 프로그램 설치 (Windows PowerShell 관리자 권한)
Windows 11에 내장된 패키지 관리자인 winget을 사용해 한 번에 설치합니다.
2. AI의 뇌 장착하기: Google AI Studio
터미널이나 에디터에서 AI를 호출하려면 'API 키'라는 일종의 신분증이 필요합니다.
- Google AI Studio에 접속하여 구글 계정으로 로그인합니다.
- 좌측 [Get API Key] 메뉴에서 Create API Key 버튼을 클릭합니다.
- 생성된
AIzaSyB...로 시작하는 긴 문자열을 복사하여 안전한 곳에 보관합니다. 이 키는 GitHub 등에 절대 유출되면 안 됩니다.
3. Gemini CLI 설치 및 실전 활용
에러 로그와 코드를 복사해서 챗GPT 웹사이트로 갈 필요가 없습니다. 내 프로젝트 폴더 안에서 즉시 AI에게 지시합니다.
차세대 에이전트 IDE: Google Antigravity 워크플로우
한 줄씩 코드를 추천해 주던 단순 자동완성(Copilot)의 시대는 끝났습니다. 구글의 Google Antigravity는 코드를 스스로 작성, 테스트, 수정하는 '에이전트 중심(Agent-first)' 개발 툴입니다. 이제 여러분은 코더가 아니라 여러 AI 에이전트(작업자)를 지휘하는 '오케스트라 지휘자'가 됩니다.
실전 시나리오: 결제 모듈 추가하기
기존 에디터라면 수십 개의 파일을 넘나들며 코드를 짜야 하지만, Antigravity에서는 다음과 같이 진행됩니다.
-
1. 에이전트 호출 및 자연어 지시 (Prompting)
에디터에서
Ctrl + L단축키로 사이드 패널을 열고,@기호로 특정 파일을 참조하여 프롬프트를 입력합니다."@frontend/src/App.tsx @backend/main.py 이 파일들을 참고해서, 백엔드에는 /api/pay 엔드포인트를 만들고, 프론트엔드에는 Tailwind로 꾸며진 결제 폼 컴포넌트를 연동해서 생성해줘." -
2. 계획 승인 (Implementation Plan & Task Lists)
에이전트가 코드를 막무가내로 덮어쓰지 않습니다. 우측 화면에 "1. models.py 생성, 2. PaymentForm.tsx 컴포넌트 추가..." 라는 작업 계획서(Task List)를 띄워줍니다. 개발자는 로직의 허점을 검토하고 문제가 없다면 [Approve (승인)] 버튼을 누릅니다.
-
3. 시각적 산출물 검토 (Artifacts)
승인이 떨어지면 에이전트가 백그라운드에서 코드를 작성합니다. 특히 프론트엔드 작업 시, 에이전트가 내장된 가상 브라우저(Headless Chrome)를 열어 자신이 만든 폼에 직접 텍스트를 입력해 보고 정상 작동하는 스크린샷이나 녹화 영상(Video)을 결과물로 제출합니다. 에러가 나면 에이전트 스스로 코드를 수정(Self-healing)합니다.
세련된 UI/UX 적용: Vibe 벤치마킹과 Google Stitch
개발자가 만든 투박한 디자인은 서비스의 신뢰도를 떨어뜨립니다. 포토샵이나 피그마(Figma)를 다루지 못해도, 프롬프트만으로 상용 서비스 수준의 아름다운 UI 코드를 뽑아내는 비법입니다.
1. 메이저 서비스 카피캣 (Vibe 추출 공식)
Toss(토스), Apple, Vercel 처럼 '디자인이 좋다'고 느껴지는 서비스의 감각(Vibe)을 내 프로젝트에 이식합니다.
🎨 Color Palette
크롬 확장 프로그램 'ColorZilla'로 타겟 서비스의 색상을 추출합니다. 다크 모드 배경은 완전한 검정보다는 깊은 남색(#0f172a)을 쓰고, 중요 요소에는 토스 블루(#3182F6) 같은 포인트 컬러 1가지만 사용하세요.
🔤 Typography
모던한 느낌을 주려면 폰트가 가장 중요합니다. 한글은 무조건 'Pretendard'를, 영문과 숫자는 'Inter'를 적용하세요. 기본 폰트만 바꿔도 5배는 비싸 보입니다.
📐 Layout Rule
최신 트렌드는 요소 간의 여백(Padding)을 넉넉하게 주고, 카드의 모서리(Border-radius)를 16px 이상으로 크게 둥글리는 것입니다. 은은한 투명 테두리도 효과적입니다.
2. Google Stitch 2.0으로 UI 코드 즉시 생성하기
Google Stitch는 프롬프트나 종이에 대충 그린 스케치를 완벽한 디자인의 React + Tailwind CSS 코드로 변환해 주는 UI 특화 에이전트입니다.
🔥 고품질 디자인을 뽑아내는 'Vibe 프롬프트' 작성법
Stitch 입력창에 "대시보드 만들어줘"라고 단순하게 치는 대신, 구체적인 디자인 룰을 묘사해 보세요.
"SaaS 서비스의 구독 요금제(Pricing) 카드를 3개 만들어줘.
[디자인 룰]
1. Vibe: Vercel이나 Toss 같은 극도의 미니멀리즘과 세련된 다크모드.
2. 컬러: 전체 배경은 Tailwind bg-slate-950, 카드 배경은 bg-slate-900, 테두리는 은은한 회색(border-slate-800).
3. 폰트: 'Inter'와 'Pretendard' 혼용. 텍스트 색상은 밝은 회색.
4. 포인트: 가장 인기 있는 중앙 카드는 테두리를 파란색(#3182F6)으로 빛나게 하고 상단에 '추천' 뱃지를 달아줘.
5. 상호작용: 마우스를 올리면 살짝 커지는 애니메이션(hover:scale-105)을 추가해줘.
결과물은 React + TypeScript + Tailwind CSS 단일 컴포넌트로 출력해."
생성된 디자인을 확인한 후 [Code Export] 탭을 눌러 코드를 복사하고, Antigravity 에디터에 붙여넣기만 하면 눈부신 프론트엔드가 완성됩니다.
세상 밖으로: 클라우드 서버 구축 및 배포 (Porting) 완벽 가이드
내 PC(localhost)에서만 작동하던 서비스를 전 세계 사람들이 스마트폰이나 PC로 접속할 수 있도록 인터넷 클라우드 서버에 올리는 과정입니다. 사이드 프로젝트에 최적화된 가장 경제적인 방법을 소개합니다.
배포 전 필수 작업: CORS (Cross-Origin Resource Sharing) 에러 방지
로컬에서는 프론트엔드와 백엔드가 모두 localhost에 있었지만, 배포를 하면 서로의 도메인 주소가 달라집니다. 브라우저는 이를 해킹 시도로 간주하여 통신을 차단(CORS Error)합니다. 백엔드(FastAPI) main.py에 아래 코드를 반드시 추가하여 프론트엔드의 접근을 허락해야 합니다.
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
# 배포될 프론트엔드 도메인과 로컬 개발용 주소를 모두 허용 목록에 넣습니다.
allow_origins=["https://내-프로젝트.vercel.app", "http://localhost:5173"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
🌐 1단계: 프론트엔드 배포 (Vercel) - 평생 무료 & 초간단
React 코드는 빌드 시 최종적으로 화면을 그리는 정적 파일(HTML/JS/CSS)이 되므로, 글로벌 CDN에 무료로 올릴 수 있습니다.
- 코드를 내 GitHub 저장소(Repository)에 업로드(Push)합니다.
- Vercel.com에 GitHub 계정으로 로그인합니다.
- [Add New Project]를 누르고 방금 올린 GitHub 저장소를 연결(Import)합니다.
- Deploy 버튼을 누르면 약 1분 뒤
https://my-awesome-app.vercel.app형태의 무료 도메인이 자동 생성됩니다.
🖥️ 2단계: 백엔드(FastAPI + SQLite) 클라우드 호스팅 옵션
파이썬 서버는 사용자의 요청을 실시간으로 연산하고 DB 파일을 저장해야 하므로 24시간 켜져 있는 호스팅이 필요합니다.
옵션 A: 가성비 최강 VPS 서버 (가장 추천)
가상의 빈 리눅스 컴퓨터를 통째로 빌리는 방식입니다. 디스크가 영구 유지되므로 SQLite 파일 보존에 완벽합니다.
- Oracle Cloud: 고성능 ARM 서버를 평생 무료로 줍니다.
- Hetzner / Vultr: 오라클 가입 실패 시, 월 $4~$5 수준으로 쾌적한 우분투(Ubuntu) 서버 임대가 가능합니다.
ssh root@서버_IP_주소
pip install fastapi uvicorn sqlite3
# 백그라운드(nohup)에서 서버 포트 열기
nohup uvicorn main:app --host 0.0.0.0 --port 80 &
옵션 B: PaaS 자동 배포 (Render.com)
리눅스 명령어를 몰라도, GitHub 저장소 연동만으로 파이썬 서버가 자동 실행되는 초보자용 서비스입니다.
- Render에서 Web Service 생성 후 GitHub 연동.
- Start Command에
uvicorn main:app --host 0.0.0.0 --port 10000입력.
http://localhost:8000/...)를 이 진짜 백엔드 주소로 변경한 뒤 GitHub에 다시 Push하여 Vercel에 재배포하세요. 완벽하게 통신하는 풀스택 서비스 런칭이 완료됩니다!