Skip to main content

Collaboration Overview

Fataplus enables seamless collaboration between internal teams, external agency partners, and clients through a sophisticated permission system and communication tools.

Partner Agencies

Share projects with trusted partner organizations

Role-Based Access

Granular permissions for team members and clients

Project Communication

Threaded messaging with file attachments

Document Sharing

Controlled access to project deliverables

Team Structure

Role Hierarchy

Fataplus implements a three-tier role system for flexible team organization.
Client Stakeholders
interface ClientRole {
  role: 'client';
  permissions: {
    canViewProjects: true;
    canEditProjects: false;
    canViewDocuments: true;      // Client-facing only
    canUploadDocuments: false;
    canSendMessage: true;
    canManageUsers: false;
  };
}
Capabilities:
  • βœ… View assigned project details
  • βœ… Download client-facing documents (PRDs, proposals, deliverables)
  • βœ… Send messages to project manager
  • βœ… Upload requested files (when prompted)
  • βœ… View project timeline and status
  • ❌ Edit project specifications
  • ❌ View internal team discussions
  • ❌ Access other clients’ projects
Use Cases:
  • Client decision-makers reviewing progress
  • Stakeholders providing feedback
  • End-client representatives

Agency Partner Collaboration

Partner Organization Model

Fataplus facilitates collaboration with external agency partners like ApollonLab.
Partner Agency Registration
interface PartnerAgency {
  id: string;
  name: string;              // "ApollonLab"
  domain: string;            // "apollonlab.com"
  contactEmail: string;      // "[email protected]"
  status: 'active' | 'inactive';
  projects: string[];        // Array of shared project IDs
  createdAt: Date;
}
Partner Onboarding Process:
  1. Admin creates partner agency record
  2. Partner receives invitation email
  3. Partner admin sets up their account
  4. Partner team members can be added
  5. Projects are selectively shared
Partner agencies operate in their own isolated workspace but have controlled access to shared projects.
Selective Project Access
interface ProjectShare {
  projectId: string;
  partnerId: string;
  accessLevel: 'view' | 'edit' | 'manage';
  sharedBy: number;          // Admin user ID
  sharedAt: Date;
  expiresAt?: Date;          // Optional expiration
}
Access Levels:
LevelView ProjectEdit DocsUpdate StatusAssign Tasks
Viewβœ…βŒβŒβŒ
Editβœ…βœ…βŒβŒ
Manageβœ…βœ…βœ…βœ…
Sharing Workflow:
// Admin shares project with partner
await shareProjectWithPartner({
  projectId: 'FP-2025-X7K9M3P1A',
  partnerId: 'apollonlab',
  accessLevel: 'edit',
  expiresAt: new Date('2026-12-31')
});
Dedicated Partner PortalPartner agencies access shared projects through:
https://partners.fata.plus
Features:
  • Dashboard showing all shared projects
  • Project-specific workspaces
  • Shared document libraries
  • Inter-agency messaging
  • Collaborative task boards
  • Shared timeline view
Data Isolation:
  • Partners only see explicitly shared projects
  • No access to Fataplus’s other client work
  • Separate authentication realm
  • Audit logging of all partner actions

Real-World Partner Use Case: ApollonLab

Fataplus collaborates with ApollonLab on specialized projects.
1

Project Assignment

Fataplus receives a complex agritech project requiring specialized development expertise.Admin shares project with ApollonLab:
shareProject({
  projectId: 'FP-2025-AGRITECH',
  partner: 'apollonlab',
  role: 'technical-lead'
});
2

Collaborative Planning

Teams from both agencies collaborate on technical specifications:
  • Fataplus: UX/UI design and product strategy
  • ApollonLab: Backend architecture and development
  • Shared: Technical requirements document
  • Communication: Threaded project messages
3

Parallel Workstreams

Each agency works on their domain:Fataplus uploads:
  • Design mockups (Figma files)
  • User research findings
  • UX flow diagrams
ApollonLab uploads:
  • API documentation
  • Database schemas
  • Development progress reports
4

Client Updates

Project manager (either agency) updates client:
  • Combined status reports
  • Integrated timeline
  • Unified deliverables
  • Single point of contact maintained
5

Joint Delivery

Final deliverable combines both agencies’ work:
  • Complete product documentation
  • Integrated codebase
  • Shared deployment
  • Co-branded proposal (optional)

Communication System

Project-Based Messaging

Built-in messaging for project-specific conversations.
interface Message {
  id: number;
  projectId: string;         // Message tied to specific project
  senderId: number;          // User who sent message
  senderName: string;        // Display name
  senderRole: 'client' | 'project-manager' | 'admin';
  content: string;           // Message text
  fileAttachments: string[]; // URLs to attached files
  isInternal: boolean;       // Hide from client if true
  createdAt: Date;
  readBy: number[];          // User IDs who read message
}
Client-Facing Messages
{
  isInternal: false,
  content: "Design mockups are ready for your review",
  fileAttachments: ["mockup-v1.pdf"]
}
Internal Team Messages
{
  isInternal: true,
  content: "Need to discuss budget overrun with client next week",
  fileAttachments: []
}
Client can see: All isInternal: false messages Team can see: All messages (including internal)

File Attachments

Share files directly within conversations.
// Send message with attachment
POST /api/projects/:id/messages
{
  "content": "Here's the revised proposal",
  "fileAttachments": [
    "https://storage.fata.plus/FP-2025-X7K9M3P1A/messages/proposal-v2.pdf"
  ],
  "isInternal": false
}
Supported File Types:
  • Documents: PDF, DOCX, XLSX, PPTX
  • Images: PNG, JPG, GIF, SVG
  • Design: FIG (Figma), SKETCH, XD
  • Archives: ZIP, RAR, 7Z
  • Code: Most text formats
File Size Limits:
  • Individual file: 25 MB
  • Total per message: 100 MB

Document Collaboration

Version Control

Track document revisions over time.
interface DocumentVersion {
  id: number;
  documentId: number;
  version: string;           // "1.0", "1.1", "2.0"
  uploadedBy: number;        // User ID
  uploadedAt: Date;
  fileUrl: string;
  changeNotes?: string;      // Description of changes
  isLatest: boolean;
}
Version History Example:
Document: Technical Requirements Document
β”œβ”€β”€ v1.0 - Initial draft (Mar 1, 2025) by PM
β”œβ”€β”€ v1.1 - Added API specs (Mar 5, 2025) by Dev Lead
β”œβ”€β”€ v1.2 - Client feedback incorporated (Mar 8, 2025) by PM
└── v2.0 - Final approved version (Mar 10, 2025) by PM ⭐ Latest

Access Control Lists (ACL)

Granular document permissions.
interface DocumentACL {
  documentId: number;
  accessLevel: 'public' | 'client' | 'team' | 'admin';
  specificUsers?: number[];  // Override for specific users
  specificRoles?: string[];  // Override for specific roles
}
Access Levels:
LevelClientProject ManagerAdminPartner Agency
Publicβœ…βœ…βœ…βœ…
Clientβœ…βœ…βœ…βŒ
TeamβŒβœ…βœ…Depends on share
AdminβŒβŒβœ…βŒ
Example Configuration:
// Client-facing PRD
{
  documentId: 123,
  accessLevel: 'client',  // Client can view
}

// Internal cost breakdown
{
  documentId: 124,
  accessLevel: 'admin',   // Admins only
}

// Technical spec for shared project
{
  documentId: 125,
  accessLevel: 'team',
  specificUsers: [apollonLabUserId]  // Include partner
}

Workflow Management

Task Assignment

Assign and track project tasks across team members.
interface Task {
  id: number;
  projectId: string;
  title: string;
  description: string;
  assignedTo: number[];      // Multiple assignees supported
  createdBy: number;
  status: 'todo' | 'in-progress' | 'review' | 'done';
  priority: 'low' | 'medium' | 'high' | 'urgent';
  dueDate?: Date;
  dependencies?: number[];   // Task IDs that must complete first
  createdAt: Date;
  completedAt?: Date;
}
Task Board View:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ To Do    β”‚ Progress β”‚ Review   β”‚ Done     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Design   β”‚ Develop  β”‚ QA test  β”‚ Deploy   β”‚
β”‚ mockups  β”‚ API      β”‚ features β”‚ to prod  β”‚
β”‚          β”‚          β”‚          β”‚          β”‚
β”‚ Write    β”‚          β”‚          β”‚ Setup CI β”‚
β”‚ docs     β”‚          β”‚          β”‚          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Milestone Tracking

Major project checkpoints with dependencies.
interface Milestone {
  id: number;
  projectId: string;
  title: string;
  description: string;
  dueDate: Date;
  status: 'upcoming' | 'in-progress' | 'completed' | 'delayed';
  tasks: number[];           // Associated task IDs
  completionPercent: number; // 0-100
  completedAt?: Date;
}
Milestone Example:
{
  title: "Phase 1: Discovery & Planning",
  dueDate: new Date('2025-04-01'),
  status: 'completed',
  tasks: [1, 2, 3, 4],
  completionPercent: 100
}

{
  title: "Phase 2: Design & Prototyping",
  dueDate: new Date('2025-05-15'),
  status: 'in-progress',
  tasks: [5, 6, 7, 8, 9],
  completionPercent: 65
}

Collaboration Best Practices

Use Internal Notes Wisely: Mark sensitive discussions as internal to keep client communications professional and focused.
Document Everything: Upload all deliverables to the project workspace. This creates a complete audit trail and single source of truth.
Set Clear Permissions: When sharing with partners, use the minimum access level needed (view β†’ edit β†’ manage).
Regular Status Updates: Keep clients informed with weekly updates, even if there’s no major progress. Transparency builds trust.
Expiration Dates: When sharing projects with partners, consider setting expiration dates to automatically revoke access after project completion.

Audit and Compliance

Activity Logging

Comprehensive tracking of all collaboration actions.
interface AuditLog {
  id: number;
  projectId: string;
  userId: number;
  action: string;            // "document_uploaded", "message_sent", etc.
  resourceType: string;      // "document", "message", "task"
  resourceId: number;
  ipAddress: string;
  userAgent: string;
  timestamp: Date;
  details?: object;          // Additional context
}
Tracked Actions:
  • Document uploads/downloads/deletions
  • Message sends/edits/deletions
  • Project status changes
  • User permission modifications
  • Partner access grants/revocations
  • Task assignments/completions
Compliance Features:
  • GDPR-compliant data handling
  • Data export capabilities
  • Audit trail retention (7 years)
  • Right to be forgotten support

Integration with External Tools

Webhook Events

Subscribe to collaboration events for external integrations.
// Webhook payload example
{
  "event": "message.created",
  "timestamp": "2025-03-03T14:30:00Z",
  "projectId": "FP-2025-X7K9M3P1A",
  "data": {
    "messageId": 456,
    "senderId": 123,
    "content": "Design review needed",
    "isInternal": false
  }
}
Available Events:
  • project.created
  • project.status_changed
  • message.created
  • document.uploaded
  • task.assigned
  • milestone.completed

Third-Party Integrations

Project Notifications to SlackForward project updates to Slack channels:
#project-fp-2025-x7k9m3p1a
  πŸ“© New message from client
  πŸ“„ Document uploaded: mockup-v2.pdf
  βœ… Milestone completed: Phase 1 Planning
Configuration:
{
  projectId: 'FP-2025-X7K9M3P1A',
  slackWebhook: 'https://hooks.slack.com/...',
  events: ['message.created', 'document.uploaded', 'milestone.completed']
}
Sync Milestones to Google CalendarExport project milestones to team calendars:
  • Automatic event creation
  • Due date reminders
  • Milestone updates sync
  • Shared team visibility

Next Steps

CRM Overview

Explore the complete project management system

Multi-Tenant

Understand project isolation and security

Smart Forms

Learn about the project intake process

AI Features

Discover AI-enhanced workflows

Build docs developers (and LLMs) love