vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
WhatsApp·Instagram·Messenger 내보내기로 누가 언제 무엇을 많이 대화했는지 브라우저에서 확인
Drop in a WhatsApp, Instagram or Messenger export and see who texts more, when you talk, and what you say most. Nothing leaves your browser.
데이터TypeScript · CSSGitHub @Somansh1온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
ChatLens analyses a chat export from WhatsApp, Instagram or Messenger and shows who talks more, when you talk, how fast you reply, how long your streaks run and a few playful scores. All of the work happens in your browser. The site is static, has no backend, and your chat file is never uploaded anywhere.
Live demo: https://chatlens.somansh.in
Sample analysis without uploading anything: https://chatlens.somansh.in/?demoREADME 전문 보기 ↗ChatLens analyses a chat export from WhatsApp, Instagram or Messenger and shows who talks more, when you talk, how fast you reply, how long your streaks run and a few playful scores. All of the work happens in your browser. The site is static, has no backend, and your chat file is never uploaded anywhere.
Live demo: https://chatlens.somansh.in Sample analysis without uploading anything: https://chatlens.somansh.in/?demo
connect-src 'none', so the browser refuses the page's own network calls (fetch, XHR, WebSocket and beacon). It also sets form-action 'none' and default-src 'self'. The policy is in next.config.mjs. It is applied to production builds only, because the dev server needs a WebSocket for hot reload.You do not have to take this on trust:
Content-Security-Policy response header, or run curl -I https://chatlens.somansh.in.| Platform | File | Notes |
|---|---|---|
.txt export | Android style (15/10/25, 14:17 - Name: text) and iPhone style ([10/15/25, 2:17:39 PM] Name: text). Multi-line messages are joined; system notices and "media omitted" lines are skipped. | |
.json | Accepted by the parser. | |
message_*.json | Upload every message_*.json file from the chat folder; they are merged. | |
| Messenger | message_*.json | Same as Instagram. |
| Discord | Listed in the UI as coming soon. Not usable yet. |
At least 10 messages are needed to produce an analysis.
.txt file.messages/inbox/.messages/inbox/.Menu names change from time to time; the in-app hint for each platform is the shortest version. For Instagram and Messenger, upload all message_*.json files in the chat folder, since long chats are split across several files.
Requires Node.js 20 or newer.
npm install
npm run dev # development server on http://localhost:3000
npm run build # production build
npm run start # serve the production build
npm run typecheck # tsc --noEmit
npm run check # parser self-check
npm run check runs lib/process-chat.check.ts, which feeds sample Android and iPhone WhatsApp exports through the parser and asserts on the result. The production build also fails on type errors.
lib/process-chat.ts): each platform has a parser that turns the file into a flat list of { sender, content, timestamp }. WhatsApp text is matched line by line with a regular expression that accepts both export styles and several date separators. Instagram and Messenger JSON is read from the messages array; call records are pulled out separately.Next.js 16, React 19, Tailwind CSS v4, lucide-react icons. Charts are drawn by hand in SVG and CSS, so there is no charting library.
No licence has been chosen yet, so by default all rights are reserved.