# 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 <repository-url>
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**
