pttbbs
PTT BBS의 소스 코드
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기회원가입 없이 비밀번호로 내 글만 수정·삭제하는 미니 방명록 (Next.js + Neon + Vercel) · 유정아 202404256
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
회원가입이나 로그인 없이 이름과 메시지를 남기고, 글을 쓸 때 정한 비밀번호로만 내 글을 수정·삭제할 수 있는 미니 방명록입니다. • 개발자: 유정아 (학번 202404256) • 배포 주소: https://guestbook-202404256.vercel.app • 이름 1~20자, 메시지 1~500자 (앞뒤 공백은 지운 뒤 확인) • 비밀번호 4~50자 (공백까지 그대로 비교) • 빈 값이나 길이 초과는 입력칸 아래에 안내가 표시되고, 입력한 내용은 그대로 남습니다. • 비밀번호는 평문으로 저장하지 않고 Node 내장 scrypt로 만든 해시만 저장합니다. • 비밀번호 확인은 항상 서버에서 하며, 글 목록에는 비밀번호 해시가 포함되지 않습니다. • 프레임워크: Next.js 16 (App Router, Server Actions) + TypeScript • 데이터베이스: Neon Postgres (@neondatabase/serverless, ORM 없이 SQL 직접 작성) • 스타일: Tailwind CSS • 테스트: Vitest + PGlite (메모리에서 동작하는 Postgres) • 배포: VercelREADME 전문 보기 ↗
회원가입이나 로그인 없이 이름과 메시지를 남기고, 글을 쓸 때 정한 비밀번호로만 내 글을 수정·삭제할 수 있는 미니 방명록입니다.
| 기능 | 설명 |
|---|---|
| 작성 | 누구나 이름, 메시지, 비밀번호를 입력해 글을 남길 수 있습니다. |
| 조회 | 누구나 전체 글 목록을 볼 수 있습니다. 최신 작성순으로 정렬되며 이름, 메시지, 작성 시각(한국 시간)이 표시됩니다. |
| 수정 | 글의 "수정"을 누르고 비밀번호를 입력하면 메시지를 고칠 수 있습니다. 수정된 글에는 "수정됨"이 표시됩니다. |
| 삭제 | 글의 "삭제"를 누르고 비밀번호를 입력하면 글이 지워집니다. |
| 비밀번호 확인 | 수정·삭제 때 비밀번호가 틀리면 요청이 거부되고, 그 글 아래에 "비밀번호가 일치하지 않습니다"가 표시됩니다. |
scrypt로 만든 해시만 저장합니다.@neondatabase/serverless, ORM 없이 SQL 직접 작성)| 단계 | 스킬 | 결과물 |
|---|---|---|
| 1 | /grill-with-docs | 용어집 CONTEXT.md, 결정 기록 docs/adr/ |
| 2 | /to-spec | 스펙 Issue #1 |
| 3 | /to-tickets | 티켓 #2 글 작성과 목록, #3 수정, #4 삭제 |
| 4 | /implement | 테스트를 먼저 쓰고 구현 (통합 테스트 17개) |
| 5 | /code-review | 코드 규칙(Standards)과 스펙 부합(Spec) 두 관점으로 리뷰하고, 지적 사항을 반영 |
의존성을 설치합니다.
npm install
프로젝트 루트에 .env.local을 만들고 Neon 연결 문자열을 넣습니다.
DATABASE_URL=postgresql://...
개발 서버를 실행하고 http://localhost:3000 에 접속합니다. 테이블은 첫 접속 때 자동으로 만들어집니다.
npm run dev
npm test # 통합 테스트 (DB 연결 없이 PGlite로 실행)
npm run typecheck # 타입 검사
npm run lint # 린트