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.
Sign up to write, format, import, and share rich-text documents by email
Translation pending
AI summary · README
ProductivityTypeScript · CSSGitHub @Liam-MoriartyOnlineOwner 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
Liam-Moriarty/Ajaia.ai
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A lightweight, Google Docs-inspired document editor built for Ajaia's Full Stack Product Engineer take-home assessment. Users sign up, create and format rich-text documents, import .txt/.md/.docx files as new documents, and share documents with other users by email.
See docs/PDD.md (product design) and docs/TDD.md (technical design) for the full design rationale, and docs/architecture-note.md / docs/ai-workflow-note.md for the condensed writeups required by the assessment.Read the full README ↗A lightweight, Google Docs-inspired document editor built for Ajaia's Full Stack Product Engineer take-home assessment. Users sign up, create and format rich-text documents, import .txt/.md/.docx files as new documents, and share documents with other users by email.
See docs/PDD.md (product design) and docs/TDD.md (technical design) for the full design rationale, and docs/architecture-note.md / docs/ai-workflow-note.md for the condensed writeups required by the assessment.
https://ajaia-ai-web.vercel.app/
No test account is required — sign-up works with any email/password (see "Local setup" below for disabling email confirmation), or a reviewer can create two accounts to exercise the sharing flow.
apps/web), Tiptap for rich text, React Router for navigation.apps/web).Prerequisites: Node 18+, pnpm 8 (corepack enable will pick up the pinned version).
pnpm install
Create apps/web/.env (see apps/web/.env.example) with your Supabase project's credentials:
VITE_SUPABASE_URL=https://<your-project>.supabase.co
VITE_SUPABASE_ANON_KEY=<your-anon-key>
The schema (profiles, documents, document_shares tables + RLS policies) lives in supabase/migrations/0001_init.sql. Apply it to your Supabase project via the SQL editor in the Supabase dashboard, or supabase db push if you have the CLI linked.
In the Supabase dashboard, under Authentication → Providers → Email, turn Confirm email off. Supabase's built-in email sender has a low rate limit (a few emails/hour), and sign-up will otherwise fail with "email rate limit exceeded" after a couple of test accounts. With confirmation off, signUp() logs the user in immediately with no email sent.
Run the app:
pnpm --filter web dev
pnpm --filter web test # unit tests (Vitest)
pnpm --filter web typecheck
pnpm --filter web lint
The automated tests cover apps/web/src/lib/parseImport.ts — the .txt/.md → Tiptap-JSON conversion, which is the highest-risk hand-written logic in the app (DOCX extraction delegates to mammoth and isn't separately unit tested) — plus apps/web/src/lib/formatUpdatedAt.ts's relative-timestamp formatting.
Only .txt, .md, and .docx files can be imported as new documents (.docx via mammoth, parsed client-side). Any other file type (e.g. .doc, .pdf, .rtf, .odt, images) is rejected before upload with an explicit error message, both in the file picker's accept filter and in a validation check on the selected file. The original uploaded file is not retained — only its parsed content is saved as a new document.
apps/web/src/lib/parseImport.ts), with a matching pre-check in the UI (apps/web/src/pages/DocumentListPage.tsx) that surfaces a specific error message before any upload happens. Parsing failures (corrupt/unreadable files) are caught and shown as a user-facing error rather than failing silently.required fields and a minimum password length; Supabase auth errors (e.g. wrong password, existing account) are caught and rendered inline on the form.Share a document with another registered user by entering their email in the editor's "Share" dialog. Shared documents appear under "Shared with me" on the document list, visibly distinct from "My documents". There are no permission tiers — anyone a document is shared with can view and edit it.
Real-time multi-cursor collaboration, view-only vs. edit permission tiers, comments/suggestion mode, version history, and PDF export are all explicitly deprioritized — see docs/TDD.md for the full list and reasoning.