A full-stack enterprise document management and real-time collaboration system with role-based access control, business process management, and integrated document editing capabilities.
Built with JavaScript, C#.NET Web API, Entity Framework, AngularJS, and ONLYOFFICE document editors, this platform demonstrates comprehensive full-stack development expertise across multiple architectural patterns and enterprise technologies.
- Overview
- Key Features
- Technology Stack
- Architecture
- System Capabilities
- Getting Started
- API Documentation
- Security Features
- Database Schema
- Roadmap & Modernization
- Contributing
- License
This enterprise-grade document management platform enables organizations to:
- Collaboratively create, edit, and manage documents in real-time
- Implement business continuity and compliance workflows (ISO 22301)
- Manage organizational hierarchies with granular permissions
- Track business processes with geospatial data
- Generate reports and analytics on document activities
- Maintain audit trails and user activity logs
Use Cases: Business Continuity Planning, Compliance Management, Enterprise Content Management, Collaborative Documentation, Risk Assessment & Analysis
- Role-Based Access Control (RBAC) with 4 permission levels
- Multi-tenant architecture with organizational unit isolation
- User & Group Management with hierarchical permissions
- Activity logging & audit trails for compliance
- Session management with secure authentication
- Real-time collaborative editing via ONLYOFFICE integration
- Document templates with versioning and metadata
- Workspace templates for standardized document sets
- Multi-format support: DOCX, PDF, RTF, TXT, HTML, ODT, EPUB
- Document conversion & export capabilities
- Search & replace across document collections
- Organizational hierarchy management (multi-level)
- Business process modeling with attributes and KPIs
- Business Impact Analysis (BIA) tools
- SWOT Analysis and strategic planning features
- Workflow management with state tracking
- Incident tracking with priority and geolocation
- User activity dashboards with login history
- Report generation (CSV, PDF exports)
- Document statistics (pages, sections, usage metrics)
- Business process analytics with custom attributes
- Real-time dashboard with task tracking
- Google Maps integration for location-based data
- Business process geolocation tracking
- Incident mapping and visualization
- Multi-location organizational units
| Technology | Version | Purpose |
|---|---|---|
| . NET Framework | 4.5 | Web API backend |
| ASP.NET Web API 2 | - | RESTful services |
| Entity Framework | 6.x | ORM & data access |
| SQL Server | 2012+ | Relational database |
| ONLYOFFICE Editors | - | Document editing engine |
| Aspose. Words | - | Document processing |
| Log4Net | - | Structured logging |
| Technology | Purpose |
|---|---|
| AngularJS 1.x | SPA framework |
| HTML5 / CSS3 | Modern web standards |
| Bootstrap 3 | Responsive UI framework |
| jQuery | DOM manipulation |
| D3.js | Data visualization |
| Google Maps API | Geospatial features |
| angular-ui-router | Routing & navigation |
| angular-file-upload | File management |
- IIS 7.5+ - Web server
- SQL Server Express - Development database
- Node.js (ONLYOFFICE) - Document service
- Puppet - Configuration management (minimal)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT LAYER β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ β
β β Admin SPA β β User SPA β β Public Portal β β
β β (AngularJS) β β (AngularJS) β β (AngularJS) β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββΌβββββββββ
β API Gateway β
β (HTTP/HTTPS) β
βββββββββ¬βββββββββ
β
βββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
β API LAYER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ASP.NET Web API 2 Controllers β β
β β [CoopAuthorize] Attribute-Based Routing β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
β SERVICE LAYER β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ β
β βISystemServiceβ βITemplateServ β βIBusinessProc.. β β
β β β β β β β β
β β Users/Groups β β Documents β β Processes β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
β REPOSITORY LAYER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Entity Framework 6 + Unit of Work Pattern ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
β DATA LAYER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SQL Server Database ββ
β β [Users] [Groups] [OrgUnits] [Documents] ββ
β β [BusinessProcesses] [Workflows] [Incidents] ββ
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXTERNAL SERVICES β
β βββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β ONLYOFFICE β β Aspose β β Google Maps β β
β β Doc Server β β Words API β β API β β
β βββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Document-Management-Collaboration/
β
βββ doc-client/ # Frontend Application
β βββ admin/ # Admin portal
β βββ user/ # User portal
β βββ scripts/
β β βββ app.js # Main app module
β β βββ admin-app.js # Admin module
β β βββ user-app.js # User module
β β βββ controllers/ # Angular controllers
β β βββ services/ # Angular services
β β βββ resources/ # API resource factories
β β βββ libraries/ # Third-party JS libs
β βββ styles/ # CSS/Stylesheets
β βββ views/ # HTML templates
β
βββ doc-server/ # Backend Services
β βββ MyCoop.WebApi/ # Main Web API Project
β β βββ Controllers/ # API Controllers
β β βββ Services/ # Business logic layer
β β βββ Models/ # DTOs & view models
β β βββ Filters/ # Auth & logging filters
β β βββ Helpers/ # Utility classes
β β βββ AppStart/ # Configuration
β β
β βββ MyCoop/ # Core Library
β β βββ Data/ # EF entities
β β βββ Repositories/ # Data access
β β βββ Configuration/ # Settings
β β
β βββ MyCoop.DocEditor/ # Document editing services
β β βββ DocService/ # ONLYOFFICE integration
β β βββ FileConverter2/ # Format conversion
β β
β βββ ONLYOFFICE Online Editors/ # Third-party editor
β βββ CoAuthoringService/ # Real-time collab
β βββ SpellCheckerService/ # Spell checking
β βββ ServerComponents/ # Supporting services
β
βββ README.md # This file
GET /api/user # List all users
GET /api/user/{id} # Get user details
GET /api/user/current # Get current user
POST /api/user # Create user
POST /api/user/{id} # Update user
DELETE /api/user/{id} # Delete user
GET /api/user/history # Login activityGET /api/group # List groups
GET /api/group/{id} # Get group
POST /api/group # Create group
POST /api/group/{id} # Update group
DELETE /api/group/{id} # Delete group
POST /api/group/{groupId}/user/{userId} # Add user to groupGET /api/document-template # List templates
GET /api/document-template/{id} # Get template
POST /api/document-template # Upload template (multipart)
POST /api/document-template/{id} # Update template
DELETE /api/document-template/{id} # Delete templateGET /api/business-process # List processes
GET /api/business-process/{id} # Get process
POST /api/business-process # Create process
POST /api/business-process/{id} # Update process
DELETE /api/business-process/{id} # Delete process
GET /api/business-process/csv # Export to CSVGET /api/orgunit # List org units
GET /api/orgunit/{id} # Get org unit
POST /api/orgunit # Create org unit
POST /api/orgunit/{id} # Update org unit
DELETE /api/orgunit/{id} # Delete org unit
POST /api/orgunit/{id}/user/{uid}/permission/{p} # Grant permission- Windows Server 2012+ or Windows 10+
- IIS 7.5 or higher
- . NET Framework 4.5+
- SQL Server 2012+ (Express or higher)
- Node.js 10+ (for ONLYOFFICE services)
- Visual Studio 2013+ or VS Code
git clone https://github.com/MillerTom/Document-Management-Collaboration.git
cd Document-Management-Collaboration-- Create database
CREATE DATABASE mycoop;
GO
-- Update connection string in Web.config
-- doc-server/MyCoop.WebApi/MyCoop.WebApi/Web.config
<connectionStrings>
<add name="CoopEntities"
connectionString="data source=YOUR_SERVER;initial catalog=mycoop;integrated security=True;..."
providerName="System. Data.EntityClient" />
</connectionStrings>cd doc-server/MyCoop.WebApi
# Restore NuGet packages
nuget restore
# Build solution
msbuild MyCoop.WebApi.sln /p:Configuration=Release
# Configure IIS
# - Create new site pointing to: doc-server/MyCoop.WebApi/MyCoop.WebApi
# - App Pool: . NET v4.0, Integrated Pipeline
# - Bindings: http://localhost:5000cd doc-client
# No build required for AngularJS
# Configure API endpoint in scripts/resources/*. js if needed
# Point IIS or web server to doc-client directorycd doc-server/ONLYOFFICE Online Editors
# Follow ReadMe. txt instructions
# Update settings. config with your license key
# Configure document service URL in Web.config# Start IIS sites
# Navigate to: http://localhost:5000
# Default credentials (create via SQL):
# Admin: admin@example.com / yourpassword- Custom authorization filter (
[CoopAuthorize]) - Role-based access control (4 permission levels)
- Activity logging and audit trails
- Session-based authentication
- SQL injection protection (EF parameterization)
- XSS protection (Angular built-in)
- Migrate to JWT/OAuth 2.0 tokens
- Implement HTTPS enforcement
- Add rate limiting on login endpoint
- Multi-factor authentication (MFA)
- Password complexity policies
- CORS configuration
- Security headers (CSP, X-Frame-Options)
Users & Access
User- User accountsGroup- User groupsUserGroup- Many-to-many relationshipPermissionLevel- Access levels (Reader, Contributor, Approver, Admin)OrgUnitPermission- Org-level permissions
Organization
OrgUnit- Organizational units (hierarchy)WorkspaceTemplate- Document workspace templatesComponent- ISO 22301 components
Documents
DocumentTemplate- Reusable document templatesDocumentTask- Document-related tasksWorkflow- Approval workflowsWorkflowState- Workflow states
Business Processes
BusinessProcess- Business continuity processesBusinessProcessAttribute- Custom attributesAttributeType- Attribute definitionsIncident- Incident tracking
Audit & Logging
SysEvent- System events logUserActivity- User activity tracking
This project is undergoing modernization to demonstrate full-stack expertise with cutting-edge technologies:
- Migrate from . NET Framework 4.5 to .NET 6/8
- Upgrade Entity Framework 6 to EF Core 8
- Implement JWT authentication with refresh tokens
- Add Swagger/OpenAPI documentation
- Containerize with Docker
- Add unit tests (xUnit) - Target: 80% coverage
- Implement CQRS pattern with MediatR
- Migrate AngularJS to React 18 or Angular 17
- Implement TypeScript
- Add Redux/Zustand for state management
- Modern build pipeline: Vite/Webpack
- Tailwind CSS or Material-UI
- React Query for API state management
- Deploy to Azure App Service / AWS
- Azure SQL Database / RDS
- CI/CD pipeline (GitHub Actions/Azure DevOps)
- Azure Blob Storage for documents
- Application Insights / CloudWatch monitoring
- Kubernetes orchestration (optional)
- Real-time notifications (SignalR/WebSockets)
- Elasticsearch for full-text search
- Redis caching layer
- Microservices architecture
- GraphQL API
- Mobile app (React Native/Flutter)
API documentation is available via Swagger UI (after Phase 1 modernization):
http://localhost:5000/swagger
``
---
## Contributing
This is a personal portfolio project, but feedback and suggestions are welcome!
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
---
## License
This project is licensed under the MIT License - see [LICENSE](LICENSE) file for details.
**Third-Party Licenses:**
- ONLYOFFICE: AGPL v3 (separate license required for commercial use)
- Aspose. Words: Commercial license (evaluation version included)
---
## About the Developer
**Tom Miller**
Full-Stack Software Engineer | . NET & Modern Web Specialist