TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
The internet wasn't built for your brain. Synapse learns how you actually process information and reformats every page you read, in real time.
ProductivityPython · JavaScriptGitHub @lgndcraft2OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.