# Electronic Document Management System (EDMS) A comprehensive Electronic Document Management System built with Nuxt.js 3, Vue.js 3, and modern web technologies. This system provides organizations with a sophisticated platform for managing documents with role-based access control, advanced search capabilities, and enterprise-grade security features. ## 🚀 Features ### Core Document Management - **Hierarchical Organization**: Cabinet → Drawer → Folder → Subfolder structure - **File Upload & Storage**: Multi-format support with metadata tagging - **Version Control**: Document versioning with history tracking - **Advanced Search**: Full-text search with filters and faceted search - **Document Preview**: In-browser preview for multiple file formats ### Access Control & Security - **Role-Based Access Control (RBAC)**: Granular permission management - **Access Request Workflow**: Automated approval processes - **Audit Trail**: Comprehensive logging and activity tracking - **External Authentication**: Authentik integration support - **Data Encryption**: Secure file storage and transmission ### User Experience - **Modern UI**: Responsive design with TailwindCSS - **Real-time Updates**: Live notifications and status updates - **Advanced Analytics**: Usage metrics and performance dashboards - **Mobile Responsive**: Full functionality across all devices - **Accessibility**: WCAG compliant with screen reader support ### Administration - **System Settings**: Comprehensive configuration management - **User Management**: User roles and permissions administration - **Performance Monitoring**: System metrics and health monitoring - **Backup & Recovery**: Automated backup systems ## 🛠 Technology Stack ### Frontend - **Nuxt.js 3** - Vue.js meta-framework with SSR/SPA support - **Vue.js 3** - Modern reactive framework with Composition API - **TailwindCSS** - Utility-first CSS framework - **FormKit** - Advanced form handling and validation - **Pinia** - State management with persistence - **TypeScript** - Type-safe development ### Backend & Database - **Prisma ORM** - Database toolkit with MySQL support - **JSON Web Tokens** - Secure authentication - **File System API** - Server-side file management - **REST API** - RESTful API endpoints ### Development Tools - **ESLint** - Code linting and quality assurance - **Prettier** - Code formatting - **Husky** - Git hooks for quality control - **PWA Support** - Progressive web app capabilities ## 📋 Prerequisites - Node.js 18+ - npm/yarn/pnpm - MySQL 8.0+ - Modern web browser ## 🚀 Quick Start ### 1. Installation ```bash # Clone the repository git clone cd EDMS # Install dependencies npm install # or yarn install # or pnpm install --shamefully-hoist ``` ### 2. Environment Setup Create a `.env` file in the root directory: ```env # Database DATABASE_URL="mysql://username:password@localhost:3306/edms_db" # Authentication NUXT_ACCESS_TOKEN_SECRET="your-access-token-secret" NUXT_REFRESH_TOKEN_SECRET="your-refresh-token-secret" # Metabase (optional) NUXT_METABASE_SECRET_KEY="your-metabase-secret" NUXT_METABASE_SITE_URL="http://your-metabase-url" ``` ### 3. Database Setup ```bash # Initialize the database schema npx prisma db push # Generate Prisma client npx prisma generate # (Optional) Seed the database npx prisma db seed ``` ### 4. Development Server ```bash # Start development server npm run dev # The application will be available at http://localhost:3000 ``` ### 5. Production Build ```bash # Build for production npm run build # Preview production build npm run preview ``` ## 📖 Documentation - **[Technical Guide](docs/Technical_Guide.md)** - Comprehensive technical documentation - **[User Guide](docs/User_Guide.md)** - End-user documentation - **[DMS Settings](docs/DMS_SETTINGS.md)** - System configuration guide - **[Site Settings](docs/SITE_SETTINGS.md)** - Site customization guide ## 🗂 Project Structure ``` EDMS/ ├── components/ # Vue components │ ├── dms/ # DMS-specific components │ │ ├── dialogs/ # Modal dialogs │ │ ├── explorer/ # File exploration │ │ ├── workflows/ # Access management │ │ └── ... │ ├── base/ # Base UI components │ └── layouts/ # Layout components ├── pages/ # Nuxt.js pages │ ├── dms/ # DMS pages │ └── ... ├── stores/ # Pinia stores ├── composables/ # Vue composables ├── server/ # Server-side API ├── prisma/ # Database schema ├── docs/ # Documentation └── ... ``` ## 🔧 Key Scripts ```bash # Development npm run dev # Start development server npm run build # Build for production npm run preview # Preview production build # Database npm run prisma # Full Prisma workflow (pull, generate, dev) npx prisma studio # Open Prisma Studio npx prisma db push # Push schema to database # Code Quality npm run lint # Run ESLint npm run format # Format code with Prettier ``` ## 🤝 Contributing 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/AmazingFeature`) 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request ## 📄 License This project is proprietary software. All rights reserved. ## 🆘 Support For support, please contact the development team or refer to the documentation in the `docs/` directory. ## 🔄 Version History - **v1.0.0** - Initial release with core DMS functionality - **v1.1.0** - Added advanced access control and audit trails - **v1.2.0** - Enhanced search capabilities and performance improvements --- **Built with ❤️ by the EDMS Development Team**