ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Learn everything from the latest IT news to general knowledge quizzes in just 10 minutes a day.
AI translation
IT 최신 뉴스부터 상식 퀴즈까지 오늘 하루 10분 알아보기
EducationTypeScript · PLpgSQLGitHub @0yoonahOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
하루 10분, IT 전문가로 성장하는 습관
Translation pending
Loading the full README. The saved excerpt is shown below.
TodayPick은 매일 IT 콘텐츠를 읽고 기록하며 학습 습관을 만드는 웹 애플리케이션입니다. 읽은 글을 다시 찾고, 하루 읽기 목표와 연속 학습일을 관리하고, 읽은 글을 인용해 글을 쓰고 공유할 수 있습니다.Read the full README ↗
하루 10분, IT 전문가로 성장하는 습관
TodayPick은 매일 IT 콘텐츠를 읽고 기록하며 학습 습관을 만드는 웹 애플리케이션입니다. 읽은 글을 다시 찾고, 하루 읽기 목표와 연속 학습일을 관리하고, 읽은 글을 인용해 글을 쓰고 공유할 수 있습니다.
CS 복습 탭에서 다시 풀기icn1)에서 실행 (vercel.json)src/
├── app/ # Next.js App Router
│ ├── api/ # API 라우트
│ │ ├── cs-reviews/ # CS 지식 채점 기록, 복습 목록
│ │ ├── daily-activities/ # 일일 활동, 읽기 목표
│ │ ├── feed-reads/ # 읽은 글 히스토리
│ │ ├── feeds/ # RSS 피드, 스크랩
│ │ ├── profile/ # 프로필, 관심 분야
│ │ ├── quizzes/ # 오늘의 퀴즈, 답안
│ │ ├── quotes/ # 명언
│ │ ├── statistics/ # 학습 통계, 주간 리포트
│ │ ├── writing-bookmarks/ # 게시글 북마크
│ │ └── writing-drafts/ # 글 작성, 공개 게시글
│ ├── cs/ # CS 지식
│ ├── feeds/ # 피드 페이지
│ ├── glossary/ # IT 용어사전 (목록·검색, [id] 상세)
│ ├── login/ # 로그인
│ ├── posts/[id]/ # 게시글 상세
│ ├── privacy/ # 개인정보처리방침
│ ├── profile/ # 프로필
│ ├── signup/ # 회원가입
│ ├── sources/ # 출처 안내와 삭제 요청 방법
│ ├── terms/ # 이용약관
│ └── write/ # 글쓰기
├── components/ # 화면 컴포넌트
│ ├── auth/ cs/ feed/ glossary/ policy/ profile/ quote/ write/ ui/
├── config/ # 상수, 관심 분야, RSS 소스 설정
├── data/ # 정적 데이터 (퀴즈, 명언, CS 문항, IT 용어, 피드 소스)
├── hooks/ # 커스텀 훅
├── services/ # 서버 로직 (RSS 수집, 일일 활동 등)
├── stores/ # Zustand 스토어
├── test/ # 테스트 공용 헬퍼 (Supabase fake, 요청·렌더 헬퍼)
├── types/ # 타입 정의
└── utils/ # 유틸리티 (날짜, 통계, 피드, 글쓰기, API 응답 등)
scripts/
└── check-feeds.ts # RSS 소스 상태 점검 (npm run check:feeds)
# 저장소 클론 및 의존성 설치
git clone <repository-url>
cd todaypick
nvm use # .nvmrc 기준 Node.js 24
npm install
# 환경 변수 설정
cp .env.example .env.local
# 개발 서버 실행
npm run dev
필요한 환경 변수는 .env.example의 두 개입니다.
| 변수 | 설명 |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase 프로젝트 URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anon key |
FEED_COLLECTOR_SECRET | RSS 예약 수집 API 호출용 비밀값. Supabase Vault의 feed_collector_secret과 같은 값 (docs/feed-collection.md) |
Supabase CLI로 로컬 프로젝트를 연결한 뒤 마이그레이션을 적용합니다.
npx supabase login
npx supabase link --project-ref <project-ref>
npx supabase migration list --linked # 로컬과 원격의 적용 상태 비교
npx supabase db push # 미적용 migration 반영
supabase/migrations는 테이블, 인덱스, 트리거, RLS 정책과 Storage 정책의 기준 소스입니다.
Dashboard에서 직접 스키마를 변경했다면 npx supabase db diff -f <migration-name>으로 변경 이력을 먼저 저장합니다.
원격 적용 확인과 릴리스 절차는 docs/release-operations.md를 따릅니다.
| 테이블 | 용도 |
|---|---|
users | 사용자 프로필, 관심 분야, 하루 읽기 목표, 가입 동의 기록 |
daily_activities | 날짜별 학습 활동과 읽기 목표 달성 상태 |
feed_reads | 읽은 글 히스토리(서울 날짜 기준, 재방문 횟수 포함) |
feed_items | 예약 수집한 RSS 글(카드 표시 범위만, 발행 후 1년 보관) |
scraped_feeds | 스크랩한 RSS 피드 |
scraped_quotes | 스크랩한 명언 |
quiz_results | 퀴즈 답안과 정답 여부 |
cs_reviews | CS 지식 채점 기록(점수, 언급한 키워드, 답변) |
writing_drafts | 작성한 글(공개·비공개) |
writing_bookmarks | 북마크한 공개 게시글 |
| 함수 | 용도 |
|---|---|
record_feed_read | 읽은 글 기록과 일일 목표 달성 상태 갱신 |
cleanup_feed_read_history | 30일·100개 보관 정책에 따른 기록 정리 (pg_cron) |
upsert_feed_items | 수집 API가 비밀값을 확인받고 RSS 글을 저장, 1년 지난 글 정리 (pg_cron collect-feeds가 3시간마다 수집 API 호출) |
get_public_writing_drafts | 공개 게시글 조회 |
handle_new_user | 가입 시 프로필 생성 |
delete_own_account | 로그인한 본인 계정 삭제 (기록은 cascade로 함께 삭제) |
npm run dev # 개발 서버 (Turbopack)
npm run build # 프로덕션 빌드
npm run start # 프로덕션 서버
npm run lint # ESLint
npm run type-check # tsc --noEmit
npm test # Vitest 단위 테스트
npm run check:feeds # RSS 소스 상태 점검
코드 변경 후에는 위 네 가지 검증(lint, type-check, test, build)을 모두 실행합니다.
GitHub Actions CI / verify가 같은 명령을 실행합니다.
check:feeds는 모든 RSS 소스를 실제로 요청해 실패, 리다이렉트, 365일 이상 미갱신, 허용 목록 밖 썸네일 호스트를 보여 줍니다.
외부 네트워크 상태에 따라 결과가 달라지므로 CI에서는 실행하지 않습니다. 소스를 추가하거나 정리할 때 직접 실행합니다.
| 경로 | 설명 |
|---|---|
/ | 오늘 읽어볼 콘텐츠, 오늘의 퀴즈, 오늘의 명언, 학습 체크리스트 |
/cs | CS 지식 문항과 분야 필터 |
/glossary | IT 용어사전 목록과 검색 |
/glossary/[id] | 용어 상세 |
/feeds | IT 뉴스·테크 블로그·게시글 탭과 관심 분야 필터 |
/posts/[id] | 공개 게시글 상세 |
/write | 글쓰기와 수정 |
/profile | 저장한 콘텐츠, 읽은 글, 내가 쓴 글, 퀴즈 기록, CS 복습, 명언, 학습 통계 |
/login, /signup | 인증 |
/sources | 외부 글 표시 범위, 수집 중인 출처, 삭제·수정 요청 방법 |
/privacy | 개인정보처리방침 |
/terms | 이용약관 |
max-width: 1080px과 동일한 좌우 시작선src/app/globals.css의 역할 기반 토큰 사용prefers-reduced-motion 존중