질문하는 사람들(Qsapiens)은 서초구가 선정한 미래혁신형 북클럽입니다. 서초·강남에서 열리는 오프라인 독서모임 일정, 함께 읽을 책, 발제 질문 생성기, 모임 기록을 한곳에서 확인하세요.
Translation pending
SocialTypeScript · CSSGitHub @junginahaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Bookclub
Translation pending
Taken from the repository README
Loading the full README.
Read the full 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