尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證심리 설문
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗심리학 연구에 특화된 설문 플랫폼입니다. 연구자가 심리척도를 등록하고 역문항·하위요인을 설정해 설문을 생성·배포하면, 응답자의 응답을 자동 채점하고 관리자에게 기술통계와 원자료 내보내기를 제공합니다.
일반적인 설문 도구와 달리 척도를 재사용 단위로 관리하고, 버전·잠금으로 과거 응답의 재현 가능성을 보장합니다.
prisma/
schema.prisma # 도메인 모델 (16개 엔티티)
seed.ts # 관리자 + 샘플 척도/설문 seed
src/
app/
(auth) login, register, privacy
surveys/ # 응답자: 내 설문
s/[publicId]/ # 설문 안내/시작
respond/[id]/ # 응답 화면(자동저장) + 완료
result/[id]/ # 응답자 결과
admin/ # 관리자 콘솔(대시보드/척도/설문/응답/통계)
api/ # Route Handlers (인증/척도/설문/응답/통계/내보내기)
lib/
scoring.ts # 채점 순수 함수 (테스트됨)
statistics.ts # 기술통계 순수 함수 (테스트됨)
shuffle.ts # 문항 무작위화 (테스트됨)
scoreResponse.ts # DB 채점 파이프라인
surveyStats.ts # 설문 모니터링/통계 집계
export.ts # CSV/XLSX/코드북 생성
auth.ts, http.ts, validation.ts, audit.ts, lock.ts ...
tests/
unit/ # scoring, statistics, shuffle
integration/ # DB 기반 채점 파이프라인
e2e/ # Playwright 핵심 시나리오
.env.example 를 복사해 .env 를 만듭니다.
| 변수 | 설명 |
|---|---|
DATABASE_URL | 애플리케이션 런타임용 PostgreSQL 연결 문자열 (Supabase 는 pooler/6543 권장) |
DIRECT_URL | 마이그레이션용 직접 연결 (Supabase 는 5432) |
SESSION_SECRET | 세션 관련 비밀키 (긴 랜덤 문자열) |
NEXT_PUBLIC_APP_URL | 배포 도메인 (QR/배포 URL 생성) |
SEED_ADMIN_EMAIL / SEED_ADMIN_PASSWORD | 초기 관리자 계정 (seed) |
실제 비밀번호·비밀키는 저장소에 커밋하지 마세요.
# 1) 의존성 설치
npm install
# 2) 로컬 PostgreSQL (Docker)
docker compose up -d
# 3) 마이그레이션 + seed
npm run prisma:migrate # 스키마 반영
npm run db:seed # 관리자 + 샘플 척도/설문
# 4) 개발 서버
npm run dev # http://localhost:3000
npm run prisma:migrate # 개발: 마이그레이션 생성/적용
npm run prisma:deploy # 배포: 기존 마이그레이션 적용
npm run prisma:generate # Prisma Client 생성
npm run db:seed
npm test # 단위 + 통합 (Vitest, DB 필요)
npm run test:e2e # E2E (Playwright, dev 서버 + seed 필요)
npm run typecheck # 타입 검사
npm run lint # ESLint
seed 로 생성됩니다. 기본값은 .env 의 SEED_ADMIN_EMAIL / SEED_ADMIN_PASSWORD (예: [email protected] / Admin1234!). 배포 전 반드시 변경하세요.
convertedScore = maxScore + minScore - rawScore (일반 문항은 원점수와 동일)Participant 익명 코드 사용)canViewPii) 있는 관리자만survey_{surveyId}_{yyyyMMdd_HHmm}.{csv|xlsx}이 앱은 Supabase를 Postgres 호스트로만 사용합니다. @supabase/supabase-js·anon 키·Data API는 사용하지 않으며, DB 접근은 서버사이드 Prisma뿐입니다.
public 테이블에 Row-Level Security를 켜 두었고, anon/authenticated용 허용 POLICY는 없습니다(deny-by-default). Prisma 연결(테이블 오너)은 RLS를 우회합니다.RESEARCHER는 본인이 만든 Scale/Survey(및 그 응답)만 관리합니다. ADMIN은 전체 접근. 타 연구자의 PUBLISHED/LOCKED 척도 버전만 설문에 부착할 수 있습니다.SESSION_SECRET으로 세션 쿠키(psych_session)에 HMAC 서명을 적용합니다. 프로덕션에서는 반드시 긴 랜덤 값을 설정하세요.rls_disabled_in_public이 사라졌는지 확인하고, DB 비밀번호·시드 관리자 비밀번호를 기본값에서 회전하세요.DATABASE_URL(pooler), DIRECT_URL(direct) 확보DATABASE_URL, DIRECT_URL, SESSION_SECRET, NEXT_PUBLIC_APP_URL)prisma generate && next build (기본 npm run build 에 포함)npm run prisma:deploy && npm run db:seed대시보드 추이 그래프, 박스플롯, 결과지 PDF, 이메일 일괄 발송, SPSS/R 내보내기 프리셋, 척도 라이브러리, 논문 PDF 척도 추출(P2) 등.
문서 15장의 관리자·응답자·분석 시나리오가 실제 DB 흐름으로 동작하며, scripts/smoke.mjs 및 Vitest/Playwright 테스트로 검증됩니다.