ultra-vdr

byMorne Olivier

You are a team of collaborating AI agents (architect, tech lead, backend, frontend, DevOps, QA, product) building a Virtual Data Room (VDR) web application for a real estate and carbon removal project called ACCRA & TGR. 1. Project goal Build a production-grade, secure, browser-based VDR where investors can explore, filter, and download documents from our Data Room V3 Part 1 & Part 2, organised by section (1–10), topic (market, technical, ESG, carbon, risk), and status (final, draft, pending input). The VDR must be easy for non-technical LP/IC users to navigate and easy for admins to update as new documents and bullet points are added. Assume I will later paste in structured bullet-point data and document metadata extracted from our current Data Room V3 (Part 1 & 2) – design the system so this can be imported as JSON/CSV without changing code. 2. Core user roles Design for at least three roles: Admin (Project team – Morne/B2BC) Create/edit sections and subsections (e.g. “7. Market validation & comparables”, “9. ESG & carbon”). Upload documents (PDF, XLSX, PPTX, DOCX), tag them, and set visibility. Manage investor accounts and access rights. Edit bullet-point summaries per section (used as the “executive overview” in the UI). Investor / LP / IC member Log in securely (email + password to start; leave hooks for SSO later). Navigate by section (1–10), theme (market, technical, ESG, carbon, risk, financial model), or document type. Read short bullet-point summaries per section. Filter documents (by section, theme, status, date). Preview PDFs in-browser and download files. Read-only internal viewer Same as Investor, but with access to “internal notes” fields where we store commentary and TODOs. 3. Information architecture Model the VDR around the structure we already use in Data Room V3: Section 1–3: Executive summary, project overview, sponsors. Section 4–6: Financial model, returns, capital structure. Section 7: Market validation & comparables (Ghana retail, Airport City, Kotoka, ESG tenant demand). Section 8: Technical & construction (GFA, QS, phasing, utilities, TGR plant design). Section 9: ESG & carbon (ESG positioning, tenant premiums, carbon pathway, biochar pricing, dMRV, tokenisation, offtakes). Section 10: Risk, regulatory safeguards & contingency (risk register, risk narrative, stress cases, sensitivities). For each section and subsection, the system should support: A rich-text overview summary (where I’ll paste the curated bullets we’re building now). A list of linked documents with metadata: Title Section/subsection Theme tags (market, technical, ESG, carbon, risk, financials, legal) Status (Final, Draft, Archived, Pending external input) Version and date Confidentiality level (General, Restricted, Internal only) 4. Functional requirements Please: Design the system architecture Use a simple but scalable stack (e.g. TypeScript, React or Next.js frontend, Node/Express or similar backend, Postgres database). Model entities for: User, Role, Section, Subsection, Document, Tag, AccessRule, ActivityLog. Provide a clean API layer (REST or GraphQL) to: List sections and subsections with summaries. CRUD operations for documents and metadata. Manage users and roles. Log document views/downloads (for later analytics). Build the core UI Investor-facing layout: Left sidebar: Sections 1–10 with expandable subsections. Main pane: Section overview (bullet points I will paste in). Table/grid of documents with sorting and filters. Top bar: Search across titles, tags, and sections. Admin area: Simple “Kanban-style” status board for documents (TODO / In progress / Final / Archived). Forms for creating/editing sections, summaries, and document metadata. Authentication and access control Implement basic auth (email + password) now. Role-based access: Admin / Investor / Internal viewer. Enforce visibility rules for confidential documents. Data import / future integration Create a JSON schema (and example file) for bulk-importing: Sections and subsections. Bullet-point summaries. Document metadata (not the binary files). Design the code so that later we can: Sync document metadata from Google Drive or another storage. Plug in an S3-compatible object store for file binaries. Non-functional requirements Keep it clean and responsive for desktop and tablet. Basic audit logging: who viewed/downloaded which document and when. Reasonable security defaults (no public unauthenticated access to documents). 5. Deliverables From your multi-agent workflow, I expect: A short system design document (Markdown) describing: Overall architecture. Data model (ERD-style description). API endpoints. Auth and access-control approach. Working code for: Backend server with APIs and DB migrations. Frontend app with the investor view and admin dashboard. A README explaining how to run the project locally and how to: Create the first admin user. Seed sections and some sample documents using a JSON file. Treat this as the first production version of the ACCRA & TGR VDR that I can later extend with: Analytics (heatmaps of investor interest by section). Optional AI search/chat over the documents. Integration with our tokenised carbon data streams. Ask clarifying questions only if absolutely necessary; otherwise, propose sensible defaults and build.

KanbanLoginDocumentsUsersSidebarResultsDocument
Kanban

Comments (0)

No comments yet. Be the first!

Project Tasks47

#1

Establish Design Token System

To Do

As a Frontend Developer, I want a centralized design token file (colors, typography, spacing, shadows, border-radius) extracted from all 15 mock-design JSX pages so that every component shares a consistent visual language. Create tailwind.config.js extensions or a CSS custom-properties sheet covering primary/secondary/accent palette, neutral grays, status colors (draft, review, approved, archived), and confidentiality-level badge colors.

AI 80%
Human 20%
High Priority
1 day
UI/UX Designer
#19

Sections & Subsections CRUD API

To Do

As a Backend Developer, I want REST endpoints (POST /sections, GET /sections, GET /sections/:id, PATCH /sections/:id, DELETE /sections/:id, POST /sections/:id/subsections, PATCH /subsections/:id, DELETE /subsections/:id) with PostgreSQL persistence, ordering support, and Admin-only write guards so that the section tree is fully manageable.

AI 75%
Human 25%
High Priority
2 days
Backend Developer
#29

File Storage Abstraction Layer

To Do

As a Backend Developer, I want a StorageService interface with methods (upload, download, delete, generateSignedUrl) backed by a local filesystem implementation today and a configuration flag to swap to S3 later so that file handling is decoupled from the storage provider.

AI 75%
Human 25%
High Priority
1.5 days
Backend Developer
#30

Database Schema & Migrations

To Do

As a Data Engineer, I want complete PostgreSQL migration files for all tables: sections, subsections, documents, document_versions, document_notes, users, roles, activity_log, tags, document_tags so that the schema is version-controlled and reproducible across environments.

AI 70%
Human 30%
High Priority
1.5 days
Data Engineer
#2

Build Shared Component Library

To Do

As a Frontend Developer, I want a shared component library (Button, Badge, Card, Modal, Dropdown, Avatar, Tooltip, Spinner, EmptyState, Tag) aligned to the design tokens established in t1 so that all 15 page implementations pull from a single source of truth. Include a component index file and basic Storybook-style prop documentation in comments.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
2 days
Frontend Developer
#20

Sections List & Tree Endpoint

To Do

As a Backend Developer, I want a GET /sections/tree endpoint that returns the full nested section/subsection hierarchy with document counts per node, cached with a 60-second TTL, so that the Home and Sidebar pages load quickly with a single request.

Depends on:#19
Waiting for dependencies
AI 75%
Human 25%
High Priority
1 day
Backend Developer
#31

API Authorization Middleware

To Do

As a Backend Developer, I want an Express middleware chain (authenticate → attachUser → requireRole(...roles)) that validates JWT tokens, attaches the user object, and enforces role-based access per route so that all API endpoints are consistently protected without ad-hoc checks in route handlers.

Depends on:#30
Waiting for dependencies
AI 75%
Human 25%
High Priority
1 day
Backend Developer
#3

Implement Landing Page

To Do

As a visitor, I want to see the ACCRA & TGR landing page that matches the Landing (v1) JSX design so that I understand the product value proposition and can navigate to Login. Wire CTA buttons to /login route. Apply design tokens from t1 and shared components from t2.

Depends on:#2
Waiting for dependencies
AI 90%
Human 10%
High Priority
1 day
Frontend Developer
#4

Implement Login Page

To Do

As a user, I want to see the updated Login (v2) JSX design with email/password fields, validation states, and error banners so that the auth entry point matches the approved design. Connect to the existing auth API. Apply design tokens and shared components.

Depends on:#2
Waiting for dependencies
AI 90%
Human 10%
High Priority
1 day
Frontend Developer
#5

Implement Sidebar Navigation

To Do

As an authenticated user, I want the Sidebar (v2) JSX design rendered as a persistent left-nav component with collapsible section/subsection tree, role-aware menu items, active-state indicators, and a collapse toggle so that I can navigate the VDR efficiently. Sidebar must accept a sections data prop and emit navigation events.

Depends on:#2
Waiting for dependencies
AI 88%
Human 12%
High Priority
2 days
Frontend Developer
#21

Document Management CRUD API

To Do

As a Backend Developer, I want REST endpoints for documents (POST /documents with multipart upload, GET /documents with filter/sort/pagination query params, GET /documents/:id, PATCH /documents/:id metadata, DELETE /documents/:id, POST /documents/:id/versions) storing file metadata in PostgreSQL and files in the local abstracted storage layer so that document management is fully operational.

Depends on:#29#31#30#19
Waiting for dependencies
AI 75%
Human 25%
High Priority
3 days
Backend Developer
#23

User Management & Roles API

To Do

As a Backend Developer, I want REST endpoints (GET /users, POST /users/invite, PATCH /users/:id/role, PATCH /users/:id/status) that allow Admins to invite users by email, assign roles (Admin, InternalViewer, Investor), and activate/deactivate accounts, persisted in PostgreSQL, so that access control is manageable.

Depends on:#31#30
Waiting for dependencies
AI 75%
Human 25%
High Priority
2 days
Backend Developer
#41

Tag Management System

To Do

As a Backend Developer, I want CRUD endpoints for tags (GET /tags, POST /tags, DELETE /tags/:id) and document-tag association endpoints (POST /documents/:id/tags, DELETE /documents/:id/tags/:tagId) so that theme tags can be maintained independently and applied to documents.

Depends on:#31#30
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
1 day
Backend Developer
#45

Global State & API Client Setup

To Do

As a Frontend Developer, I want a configured React Query client with default retry/stale-time settings, an Axios instance with JWT interceptor (auto-attach token, auto-refresh or logout on 401), and a Zustand or Context store for auth state so that all API calls across the app share consistent behavior.

Depends on:#2
Waiting for dependencies
AI 80%
Human 20%
High Priority
1 day
Frontend Developer
#6

Implement Home Browse Page

To Do

As an Investor or Internal Viewer, I want the Home (v1) JSX page to display a card grid of top-level sections with thumbnail, title, document count, and last-updated date so that I can quickly orient myself and navigate into a section. Use mock data initially; wire to API after t20 is complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#7

Implement Dashboard Overview Page

To Do

As an Admin, I want the Dashboard (v1) JSX page showing KPI cards (total documents, active users, recent uploads, pending reviews), a recent-activity feed, and quick-action buttons so that I have an operational overview. Use mock data initially; wire to API after t24 is complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
High Priority
1.5 days
Frontend Developer
#8

Implement Sections Management Page

To Do

As an Admin, I want the Sections (v1) JSX page with a tree view listing all sections and subsections, inline create/rename/delete controls, drag-to-reorder, and a detail panel so that I can manage the VDR information architecture. Use mock data initially; wire to API after t19 is complete.

Depends on:#5
Waiting for dependencies
AI 85%
Human 15%
High Priority
2 days
Frontend Developer
#9

Implement Section Detail Page

To Do

As an Investor or Internal Viewer, I want the Section (v1) JSX page showing a section overview (description, document count, sub-sections list, recently added documents) so that I understand what is available before drilling into documents. Wire to API after t20 and t21 are complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
Medium Priority
1 day
Frontend Developer
#10

Implement Documents List Page

To Do

As any authenticated user, I want the Documents (v2) JSX page with a filterable/sortable table of documents (title, section, tags, status, version, date, confidentiality) and bulk-action toolbar so that I can manage or browse the document library. Investors see only non-confidential docs. Wire to API after t21 is complete.

Depends on:#5
Waiting for dependencies
AI 90%
Human 10%
High Priority
2 days
Frontend Developer
#11

Implement Document Detail Page

To Do

As an authenticated user, I want the Document (v2) JSX page with an in-browser PDF/DOCX/PPTX/XLSX preview panel, metadata sidebar, version history list, download button, and an Internal Notes section (visible to Admin and Internal Viewer only) so that I can review and annotate documents. Wire to API after t21 and t22 are complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
High Priority
2 days
Frontend Developer
#12

Implement Kanban Status Board

To Do

As an Admin, I want the Kanban (v2) JSX page with drag-and-drop columns (Draft, Under Review, Approved, Archived) where each card shows document title, section, assignee avatar, and tag chips so that I can manage document review workflows visually. Wire to API after t21 is complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
High Priority
2 days
Frontend Developer
#13

Implement Users Management Page

To Do

As an Admin, I want the Users (v2) JSX page with a table of users (name, email, role, last login, status), an invite modal, a role-change dropdown, and deactivate/reactivate actions so that I can manage access control. Wire to API after t23 is complete.

Depends on:#5
Waiting for dependencies
AI 90%
Human 10%
High Priority
1.5 days
Frontend Developer
#14

Implement Bulk Import Page

To Do

As an Admin, I want the Import (v1) JSX page with a JSON file drop-zone, schema validation preview table, error/warning row highlights, and a confirm-import button so that I can bulk-load sections and documents via structured JSON. Wire to API after t25 is complete.

Depends on:#5
Waiting for dependencies
AI 85%
Human 15%
Medium Priority
1.5 days
Frontend Developer
#15

Implement Activity Log Page

To Do

As an Admin, I want the ActivityLog (v1) JSX page showing a chronological audit trail (user, action, resource, timestamp) with filters by user, action type, and date range so that I can review all VDR activity. Wire to API after t26 is complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
Medium Priority
1 day
Frontend Developer
#16

Implement Search Input Page

To Do

As an authenticated user, I want the Search (v1) JSX page with a full-text search bar, type-ahead suggestions, filter chips (section, tag, file type, date range, confidentiality), and a loading state so that I can discover documents quickly. Wire to API after t27 is complete.

Depends on:#5
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#22

Document Notes & Download API

To Do

As a Backend Developer, I want endpoints POST /documents/:id/notes, GET /documents/:id/notes (Admin/InternalViewer only), and GET /documents/:id/download (with signed URL generation and activity log entry) so that internal annotations and secure downloads are supported.

Depends on:#21
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
1.5 days
Backend Developer
#24

Dashboard KPI Aggregates API

To Do

As a Backend Developer, I want a GET /dashboard/stats endpoint returning total documents, active users, uploads in last 7 days, documents by status, and recent activity slice so that the Dashboard overview page has a single performant data source.

Depends on:#23#21
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
1 day
Backend Developer
#25

Bulk JSON Import API

To Do

As a Backend Developer, I want a POST /import endpoint that accepts a JSON payload conforming to a documented schema (sections, subsections, documents with metadata), validates the payload, runs the import inside a database transaction, and returns a detailed result report (created, skipped, errored rows) so that bulk data loading is safe and auditable.

Depends on:#21#19
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
2 days
Backend Developer
#26

Activity Log API

To Do

As a Backend Developer, I want a GET /activity endpoint with filters (userId, action, resourceType, startDate, endDate, page, limit) and an internal logActivity(userId, action, resourceType, resourceId, metadata) service function called by all write operations so that a full audit trail is queryable by Admins.

Depends on:#23#21
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
1.5 days
Backend Developer
#42

Tag UI in Document Forms

To Do

As a Frontend Developer, I want a reusable TagInput component (type-ahead, create-on-enter, color-coded chips) integrated into the document upload modal, the Document detail edit panel, and the Documents filter bar so that tags can be managed inline throughout the app.

Depends on:#2#41
Waiting for dependencies
AI 85%
Human 15%
Medium Priority
1 day
Frontend Developer
#43

Confidentiality Level Enforcement

To Do

As a Backend Developer, I want confidentiality level (public, internal, confidential, restricted) checked on every GET /documents and GET /documents/:id request so that Investors never receive confidential or restricted documents and Internal Viewers cannot access restricted documents, returning 403 for direct URL access attempts.

Depends on:#21#31
Waiting for dependencies
AI 75%
Human 25%
High Priority
1 day
Backend Developer
#17

Implement Search Results Page

To Do

As an authenticated user, I want the Results (v2) JSX page displaying ranked search results with document title, section breadcrumb, matched-text snippet, file-type icon, and confidentiality badge so that I can evaluate relevance before opening a document. Wire to API after t27 is complete.

Depends on:#16
Waiting for dependencies
AI 90%
Human 10%
High Priority
1 day
Frontend Developer
#27

Full-Text Search API

To Do

As a Backend Developer, I want a GET /search?q=&section=&tags=&fileType=&dateFrom=&dateTo=&confidentiality= endpoint using PostgreSQL full-text search (tsvector) on document title, description, and tag fields, with role-based result filtering (Investors excluded from confidential), returning ranked results with snippet extraction so that search is fast and secure.

Depends on:#43#21
Waiting for dependencies
AI 75%
Human 25%
High Priority
2 days
Backend Developer
#28

Kanban Status Update API

To Do

As a Backend Developer, I want a PATCH /documents/:id/status endpoint accepting a status value (draft, under_review, approved, archived), validating allowed transitions, persisting the change, recording an activity log entry, and returning the updated document so that Kanban drag-and-drop operations are persisted.

Depends on:#26#21
Waiting for dependencies
AI 75%
Human 25%
Medium Priority
1 day
Backend Developer
#32

Integrate Sections API Frontend

To Do

As a Frontend Developer, I want the Sections page, Sidebar, Home, and Section detail components wired to the live sections API via React Query hooks, replacing all mock data, so that section CRUD operations and navigation reflect real data.

Depends on:#9#6#20#31#19#5#8
Waiting for dependencies
AI 82%
Human 18%
High Priority
1.5 days
Frontend Developer
#33

Integrate Documents API Frontend

To Do

As a Frontend Developer, I want the Documents list, Document detail, and Section detail pages wired to the live documents API with upload progress indicators, optimistic UI updates, and error handling so that document management is fully end-to-end functional.

Depends on:#29#9#11#10#21#31#22
Waiting for dependencies
AI 82%
Human 18%
High Priority
2 days
Frontend Developer
#35

Integrate Users API Frontend

To Do

As a Frontend Developer, I want the Users page wired to the user management API so that invite, role-change, and deactivate actions call real endpoints, refresh the table on success, and display inline validation errors.

Depends on:#31#23#13
Waiting for dependencies
AI 83%
Human 17%
High Priority
1 day
Frontend Developer
#36

Integrate Import API Frontend

To Do

As a Frontend Developer, I want the Import page wired to the bulk import API so that after JSON validation the confirm action posts to the API, shows a progress state, and renders the per-row result report returned by the server.

Depends on:#14#25#31
Waiting for dependencies
AI 83%
Human 17%
Medium Priority
1 day
Frontend Developer
#37

Integrate Activity Log Frontend

To Do

As a Frontend Developer, I want the ActivityLog page wired to the activity API with working filter controls (user, action type, date range) and paginated infinite-scroll or pagination component so that Admins can audit all VDR activity from real data.

Depends on:#15#26#31
Waiting for dependencies
AI 83%
Human 17%
Medium Priority
1 day
Frontend Developer
#39

Integrate Dashboard Stats Frontend

To Do

As a Frontend Developer, I want the Dashboard page wired to the /dashboard/stats API and the activity log API so that all KPI cards and the recent-activity feed reflect live data with auto-refresh every 60 seconds.

Depends on:#31#24#7#26
Waiting for dependencies
AI 83%
Human 17%
Medium Priority
1 day
Frontend Developer
#40

Document Preview Renderer

To Do

As a Frontend Developer, I want an in-browser document preview component that renders PDF files via react-pdf, DOCX/PPTX/XLSX via an iframe or mammoth.js/SheetJS, with a page navigator, zoom controls, and a fallback download-only state for unsupported types so that users can review documents without downloading.

Depends on:#29#11
Waiting for dependencies
AI 80%
Human 20%
High Priority
2 days
Frontend Developer
#18

Build Role-Based Route Guards

To Do

As a Frontend Developer, I want a React Router v6 route-guard layer that reads the authenticated user's role (Admin, Internal Viewer, Investor) and redirects unauthorised access attempts to a 403 page so that role-specific pages are protected client-side. Cover all routes introduced in t3–t17.

Depends on:#13#12#3#14#16#5#15#8#11#7#9#10#17#4#6
Waiting for dependencies
AI 80%
Human 20%
High Priority
1 day
Frontend Developer
#34

Integrate Kanban API Frontend

To Do

As a Frontend Developer, I want the Kanban board wired to the live documents API and status update endpoint so that drag-and-drop column moves persist immediately, with optimistic updates and rollback on error.

Depends on:#28#12#31
Waiting for dependencies
AI 83%
Human 17%
High Priority
1 day
Frontend Developer
#38

Integrate Search API Frontend

To Do

As a Frontend Developer, I want the Search and Results pages wired to the search API so that query submission, filter application, and result rendering are driven by live data with debounced input, loading skeletons, and empty-state handling.

Depends on:#16#17#27#31
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#44

Email Invite Notification Service

To Do

As a Backend Developer, I want a notification service that sends transactional emails (using nodemailer with SMTP config via environment variables) for user invitations (with a one-time setup link) and document approval status changes so that users are informed of key events.

Depends on:#28#23
Waiting for dependencies
AI 72%
Human 28%
Low Priority
1.5 days
Backend Developer
#46

End-to-End Admin User Flow

To Do

As a Tech Lead, I want all Admin user-flow screens (Dashboard → Sections → Documents → Kanban → Users → Import → ActivityLog) smoke-tested end-to-end in a staging environment to verify no broken API calls, missing route guards, or UI regressions exist before the investor demo.

Depends on:#39#32#33#37#18#34#36#35
Waiting for dependencies
AI 60%
Human 40%
High Priority
1 day
Tech Lead
#47

End-to-End Viewer/Investor Flow

To Do

As a Tech Lead, I want the Investor and Internal Viewer flows (Login → Home → Sidebar → Section → Documents → Document Preview → Search → Results) smoke-tested end-to-end in staging, verifying confidentiality enforcement, internal-notes visibility, and download logging, so that the product is demo-ready.

Depends on:#40#33#38#43#18#32
Waiting for dependencies
AI 60%
Human 40%
High Priority
1 day
Tech Lead
Landing: View Login
Login: Sign In
Dashboard: View Overview
Sections: Create Section
Sections: Edit Summary
Documents: Upload File
Documents: Enter Metadata
Kanban: Set Status
Users: Create User
Users: Assign Role
Import: Bulk Import JSON
ActivityLog: View Audit Log