尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Bookclub
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗책으로 시작된 질문은 사람을 연결합니다.
미래혁신형 북클럽 플랫폼 · 서초구 선정 프로젝트
질문하는 사람들은 질문 중심의 북클럽 플랫폼입니다.
단순한 독서모임을 넘어, 질문이 사람과 사람을 연결하는 공간입니다.
| 영역 | 기술 |
|---|---|
| 프레임워크 | Next.js 15 (App Router) |
| 언어 | TypeScript |
| 스타일링 | Tailwind CSS v3 |
| UI 컴포넌트 | shadcn/ui |
| 백엔드/인증 | Supabase |
| AI | Anthropic Claude API |
| 배포 | Vercel |
src/
├── app/ # Next.js App Router
│ ├── (auth)/ # 인증 페이지 그룹 (레이아웃 공유 없음)
│ │ ├── login/
│ │ └── signup/
│ ├── api/ai/ # AI 발제 생성 API
│ ├── archive/ # 후기 아카이브
│ ├── mypage/ # 마이페이지
│ ├── questions/
│ │ ├── [id]/ # 질문 상세
│ │ └── create/ # 발제 만들기
│ ├── globals.css
│ ├── layout.tsx # 루트 레이아웃
│ └── page.tsx # 홈
├── components/
│ ├── auth/ # 인증 폼
│ ├── common/ # Header, Footer
│ ├── home/ # 홈 섹션들
│ ├── questions/ # 질문 관련
│ ├── reviews/ # 후기 관련
│ └── ui/ # shadcn UI 기본 컴포넌트
├── data/
│ └── mockData.ts # 개발용 목업 데이터
├── lib/
│ ├── supabase/ # Supabase 클라이언트
│ ├── anthropic.ts # Anthropic AI 클라이언트
│ └── utils.ts # 유틸리티 함수
└── types/
└── index.ts # 전역 타입 정의
npm install
cp .env.local.example .env.local
.env.local 파일을 열어 실제 값을 입력하세요:
# Supabase 프로젝트 설정
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Anthropic API 키
ANTHROPIC_API_KEY=sk-ant-...
# 앱 URL
NEXT_PUBLIC_APP_URL=http://localhost:3000
npm run dev
http://localhost:3000에서 확인하세요.
-- 사용자 프로필
create table profiles (
id uuid references auth.users on delete cascade primary key,
email text not null,
name text not null,
avatar_url text,
bio text,
joined_at timestamptz default now(),
session_count int default 0
);
-- 발제 질문
create table questions (
id uuid primary key default gen_random_uuid(),
title text not null,
description text not null,
category text not null,
tags text[] default '{}',
author_id uuid references profiles(id) on delete cascade,
created_at timestamptz default now(),
session_count int default 0,
participant_total int default 0,
is_featured boolean default false
);
-- 모임 세션
create table sessions (
id uuid primary key default gen_random_uuid(),
question_id uuid references questions(id) on delete cascade,
host_id uuid references profiles(id) on delete cascade,
location text not null,
address text,
date date not null,
start_time time not null,
end_time time not null,
max_participants int default 8,
current_participants int default 0,
status text default 'upcoming' check (status in ('upcoming', 'live', 'closed')),
created_at timestamptz default now()
);
-- 후기
create table reviews (
id uuid primary key default gen_random_uuid(),
session_id uuid references sessions(id) on delete cascade,
author_id uuid references profiles(id) on delete cascade,
type text default 'text' check (type in ('text', 'photo', 'video')),
content text not null,
photo_url text,
video_url text,
quote text,
transformation text,
created_at timestamptz default now(),
likes int default 0
);
-- RLS 정책 활성화
alter table profiles enable row level security;
alter table questions enable row level security;
alter table sessions enable row level security;
alter table reviews enable row level security;
-- RLS 정책 예시
create policy "공개 프로필 조회" on profiles for select using (true);
create policy "공개 질문 조회" on questions for select using (true);
create policy "공개 세션 조회" on sessions for select using (true);
create policy "공개 후기 조회" on reviews for select using (true);
create policy "본인 프로필 수정" on profiles for update using (auth.uid() = id);
create policy "인증 사용자 질문 생성" on questions for insert with check (auth.uid() = author_id);
create policy "인증 사용자 세션 생성" on sessions for insert with check (auth.uid() = host_id);
create policy "인증 사용자 후기 생성" on reviews for insert with check (auth.uid() = author_id);
npx vercel
Vercel 대시보드 → Settings → Environment Variables에서 .env.local과 동일한 변수들을 추가합니다.
npx vercel --prod
또는 GitHub 레포지토리를 Vercel에 연결하면 main 브랜치 push 시 자동 배포됩니다.
| 경로 | 설명 |
|---|---|
/ | 홈 — Hero, 오늘의 질문, 참여 가능 모임, 후기, 인기 질문 |
/questions/create | 발제 만들기 — 직접 작성 / AI 자동 생성 |
/questions/[id] | 질문 상세 — 토론 질문, 예정 모임, 후기 |
/archive | 후기 아카이브 — 필터링, 사진/영상/텍스트 |
/login | 로그인 |
/signup | 회원가입 |
/mypage | 마이페이지 — 참여 이력, 후기, 통계 |
/api/ai | AI 발제 생성 API (POST) |
MIT