Silos/README.md
AnuragJangid18 809235e962 feat: implement comments and activity panel in workspace
- Added CommentsPanel component for managing comments on documents.
- Integrated comment creation, deletion, and resolution functionalities.
- Implemented activity tracking for document interactions.
- Enhanced SketchPage with editing and saving capabilities.
- Introduced template management API endpoints for creating, sharing, and deleting templates.
- Added runtime validation report for frontend and backend.
- Created GettingStartedPanel for user onboarding with template options.
- Implemented Playwright E2E tests for accessibility and export functionality.
2026-10-22 21:18:10 +05:30

8.2 KiB

Silos

A collaborative workspace platform — your knowledge, your team, one place.

Tech Stack

  • Frontend: React + TypeScript + Tailwind CSS
  • Backend: FastAPI + SQLAlchemy
  • Database: PostgreSQL (users, auth) + MongoDB (whiteboards, sketches)

Quick Start

1. Start databases

docker compose up -d

2. Backend

cd backend
copy .env.example .env
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000

3. Frontend

cd frontend
npm install
npm run dev

Project Structure

Silos/
├── frontend/     # React + Tailwind
├── backend/      # FastAPI
└── docker-compose.yml

Feature Progress

Phase-wise Confluence-inspired platform roadmap

The platform is being delivered in focused phases so each collaboration and content-management capability is usable before the next layer is added.

Phase 1 — Page hierarchy and lifecycle foundation (complete)

  • Added parent_page_id to document creation, updates, responses, and frontend document records.
  • Added parent validation so a page cannot parent itself, attach to an inaccessible page, or attach directly to a space as a page parent.
  • Added child-page creation from the current page.
  • Added hierarchical sidebar navigation with expand/collapse behavior.
  • Added a three-dot page actions menu with child-page creation, duplication, archive, permanent delete, and close actions.
  • Archived pages are excluded from normal dashboard and space navigation.
  • Existing space membership, sharing, and explicit Edit → Update → Publish behavior remain intact.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 2 — Templates and page creation flows (complete)

  • Added reusable Silo page templates for blank pages, meeting notes, project plans, and how-to guides.
  • Added page-template creation to the global Create menu.
  • Updated the Templates flyout to use the same shared page-template definitions.
  • New pages created inside a space preserve the space relationship.
  • New pages created from a page context preserve the parent-child relationship.
  • Added a Confluence-inspired inline + action beside each Silo page in the sidebar. It creates a child page under that page and opens it immediately.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 3 — Sidebar page management and richer creation flows (complete)

  • Replicated the Confluence-inspired sidebar hierarchy treatment with disclosure arrows for parent pages and bullet markers for leaf/child pages.
  • Added inline child-page + controls beside page names.
  • Added per-page three-dot menus with Edit, Rename, Star, Copy link, Make a copy, Move, Archive, and Delete actions.
  • Added inline page renaming with Enter/save behavior.
  • Added a Move page dialog with top-level placement and parent-page selection.
  • Prevented moving a page below itself or one of its descendants.
  • Added shared styling for the sidebar page-action menu.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 4 — Collaboration foundation (complete)

  • Added persisted comments for accessible documents.
  • Added threaded-comment parent validation at the API boundary.
  • Added author-only comment deletion.
  • Added a page-level Comments panel with loading, empty, error, create, and delete states.
  • Reused existing document sharing and editor/viewer permissions for comment access.
  • Added a comments entry point beside the page Edit/Update/Publish controls.
  • Added MongoDB indexes for document comment retrieval.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 5 — User-authored templates and categories (complete)

  • Added owner-scoped persisted templates in MongoDB.
  • Added template categories, descriptions, emoji labels, and starter content.
  • Added template CRUD endpoints under /api/v1/templates.
  • Added template indexes and authenticated ownership checks.
  • Added a Templates flyout flow for creating, filtering, using, and deleting user templates.
  • Custom templates create new Silo pages while preserving their starter content and draft state.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 6 — Template sharing and placement selection (complete)

  • Added owner-controlled template sharing by email or username.
  • Shared templates are included in the authenticated template library.
  • Added a template sharing dialog with explicit dismissal.
  • Added placement selection for pages created from custom templates: top-level, selected space, or selected parent page.
  • Preserved the existing hierarchy and document-access validation path for placement targets.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app

Phase 7 — Collaboration expansion (complete)

  • Added @username mention parsing against registered users.
  • Added persisted mention notifications with unread/read state.
  • Added a workspace notification bell and notification dropdown.
  • Added persisted page activity entries for comment creation and comment resolution/reopening.
  • Added an Activity view alongside the Comments panel.
  • Added nested threaded replies using the existing parent_id model.
  • Added resolve/reopen controls with access-checked API mutations.
  • Preserved the existing WebSocket collaboration presence and live content channel, including peer updates when users join or leave.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app
  • FastAPI application import and route registration

Phase 8 — History, publishing, and operational polish (complete)

  • Added persisted document version snapshots before content/title updates.
  • Added version history listing and access-controlled restore.
  • Added HTML and plain-text page export endpoints and page controls.
  • Added keyboard save (Ctrl/Cmd+S) and Escape dismissal for history.
  • Added accessible names, live editor status, history labels, and notification controls.
  • Preserved the existing MongoDB text index and access-aware search behavior.
  • Added three Playwright browser regression specs covering history, export, and keyboard/accessibility journeys.
  • Added npm run test:e2e and runtime-validation-report.md.

Validation completed:

  • cd frontend && npm run build
  • python -m compileall backend\app
  • FastAPI application import and route registration
  • cd frontend && npm run test:e2e (3 tests skipped without test credentials)

Dashboard onboarding

  • Returning users see recent documents ordered by their last visited activity.
  • New users see a getting-started panel instead of blank Recent and Activity sections.
  • New users can browse templates, create a page, create a whiteboard, or create a space.

Pages and whiteboards

  • Pages and whiteboards open in read-only mode after login or re-login.
  • Users must select Edit before changing content or titles.
  • Update explicitly saves the current draft and returns the document to read-only mode.
  • Publish saves the page or whiteboard and marks it as published.
  • Page editing includes active Bold, Italic, Underline, and strikethrough states; paragraph/heading/quote/code styles; ordered and unordered lists; left/center/right alignment; an expanded text and highlight colour palette; grouped searchable emoji picker; styled tables; tabs; info panels; mentions; links; image/video URL insertion; and image file upload.
  • Formatting selections are preserved when a toolbar control or popover is clicked. Link, media, colour, emoji, insert, and slash-command windows close when the user clicks elsewhere or presses Escape.
  • Whiteboards retain their existing drawing, selection, table, text, sticky-note, pan, zoom, undo, and redo tools while preventing mutations until Edit is selected.

The frontend build is verified with:

cd frontend
npm run build