TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Synapse is a cognitive-accessibility product: a Chrome extension reshapes web content around a person's reading profile, while a React dashboard and FastAPI API handle identity, profiles, billing, support, and operations.
.
|-- extension/ # Self-contained unpacked Chrome Manifest V3 bundle
| |-- manifest.json
| |-- background.js # Session refresh, API bridge, and extension storage
| |-- content.js # In-page reader UI and reformat interactions
| |-- popup.* # Profile, account, billing, and feedback controls
| |-- onboarding.* # First-run cognitive profile setup
| |-- icons/
| `-- purify.min.js # Bundled DOM sanitiser for extension output
|-- webpage/ # Vite + React dashboard and marketing site
| |-- src/lib/auth.ts # First-party browser session client
| |-- src/lib/api.ts # Authenticated backend client
| |-- src/lib/extensionBridge.ts
| `-- src/Observer.tsx # Operator-only observability view
|-- backend/ # FastAPI application and Alembic migrations
| |-- app/api/routes/ # Auth, profile, reformat, billing, support, observer
| |-- app/services/ # AI, email, auth, rate limiting, telemetry
| |-- alembic/versions/
| `-- tests/
|-- tests/ # Playwright dashboard-to-extension contract tests
|-- Dockerfile # Builds the web app and serves it with the API
`-- playwright.config.mjs
extension/ is deliberately an independent loadable directory. It contains every asset referenced by manifest.json; the web app and backend remain in their own folders. The dashboard's small extensionBridge.ts is an intentional cross-product contract: it can hand an authenticated session to an installed extension, but safely becomes a no-op when none is installed.
Chrome extension <--> FastAPI API <--> PostgreSQL
^ | |
| +--> Redis / Upstash
React dashboard ------------+--> Gemini / Claude / Paystack / Resend
The dashboard authenticates against the API and passes its session to the extension through Chrome's externally-connectable messaging. The extension refreshes its own token family and calls the API; it does not contain AI-provider credentials or a standalone sign-in flow. The API owns prompt construction, input limits, persistence, billing, email, and access control.
cd backend
Copy-Item .env.example .env
pip install -r requirements.txt
alembic upgrade head
python -m uvicorn app.main:app --reload
Set the values in backend/.env before starting. At minimum, configure DATABASE_URL, a strong APP_SECRET_KEY, Redis/Upstash credentials, Gemini keys, the Anthropic key, Paystack credentials, frontend/CORS origins, and the plan codes. GOOGLE_CLIENT_* values enable Google OAuth; RESEND_API_KEY enables support-email delivery; ADMIN_EMAILS grants access to /observer. The template documents optional annual pricing, provider cost estimates, and production migration configuration.
cd webpage
Copy-Item .env.example .env
npm install
npm run dev
The API URL needs no setting: npm run dev uses http://localhost:8000 and a production build (Vercel) uses https://api.usesynapse.cv (webpage/src/lib/config.ts); VITE_BACKEND_URL overrides both. Add matching Paystack plan codes and VITE_SUPPORT_EMAIL as needed. VITE_EXTENSION_ID is optional for normal web development, but required for dashboard-to-extension session handoff.
chrome://extensions and enable Developer mode.extension/ directory — not the repository root.webpage/.env as VITE_EXTENSION_ID, then restart Vite.The extension picks its URLs in extension/lib/config.js: an unpacked copy uses http://localhost:8000 and http://localhost:5173, a Chrome Web Store install uses https://api.usesynapse.cv and https://usesynapse.cv. A store install also refuses a session handoff for any other API.
To build the Chrome Web Store upload, run python scripts/package_extension.py. It writes dist/synapse-extension-<version>.zip and the same build unzipped in dist/synapse-extension/: the same files, with the localhost origins removed from externally_connectable and lib/config.js fixed to production. To test production before the store listing exists, load dist/synapse-extension/ with Load unpacked, then set its ID as VITE_EXTENSION_ID on Vercel. Bump version in extension/manifest.json before each new upload. The manifest already permits the local Vite origins used by the project and the production dashboard origins.
Backend tests:
cd backend
python -m pytest
Browser contract tests:
npm install
npx playwright test --config=playwright.config.mjs
The Playwright setup loads extension/, discovers its path-derived ID, temporarily puts that ID in webpage/.env, seeds a disposable SQLite database, and starts the backend on port 8000 plus Vite on port 3000. Both ports must be free. See tests/README.md for limitations and test-flow detail.
The root Dockerfile builds webpage/, installs the backend, runs alembic upgrade head, and serves the API plus compiled SPA on $PORT. Configure production URLs, Chrome extension origin restrictions (CHROME_EXTENSION_ID or ALLOWED_ORIGIN_REGEX), Paystack webhooks, and direct migration connectivity before deploying.