{"_id":"@ahmed89saad/document_management_system","name":"@ahmed89saad/document_management_system","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ahmed89saad/document_management_system","version":"1.0.0","description":"MERN stack Document Management System with integrated relational and NoSQL databases.","main":"app.js","scripts":{"start":"sleep 3 && node dist/app.js","nodemon":"nodemon src/app.ts","build":"tsc","jasmine":"jest --coverage --detectOpenHandles","test":"set ENV=test&& db-migrate db:drop dms_test && db-migrate db:create dms_test && db-migrate --env test up && npm run build && npm run jasmine && db-migrate db:drop dms_test","test:coverage":"npm run build && npx nyc --reporter=html --reporter=text --check-coverage npm run test","migrate":"db-migrate --env test up && db-migrate up","lint":"eslint src/**/*.ts","prettier":"prettier --config .prettierrc --write src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/AhmedSaadKader/document_management_system.git"},"author":{"name":"Ahmed Saad"},"license":"ISC","bugs":{"url":"https://github.com/AhmedSaadKader/document_management_system/issues"},"homepage":"https://github.com/AhmedSaadKader/document_management_system#readme","dependencies":{"@aws-sdk/client-s3":"^3.637.0","@netlify/functions":"^2.8.1","aws-sdk":"^2.1682.0","bcrypt":"^5.1.1","cors":"^2.8.5","crypto":"^1.0.1","db-migrate":"^0.11.14","db-migrate-pg":"^1.5.2","dotenv":"^16.4.5","express":"^4.21.0","jsonwebtoken":"^9.0.2","mongoose":"^8.5.3","multer":"^1.4.5-lts.1","nodemailer":"^6.9.15","pg":"^8.12.0","serverless-http":"^3.2.0","typescript":"^5.5.4","uuid":"^10.0.0"},"devDependencies":{"@babel/preset-typescript":"^7.24.7","@istanbuljs/nyc-config-typescript":"^1.0.2","@jest/globals":"^29.7.0","@types/bcrypt":"^5.0.2","@types/cors":"^2.8.17","@types/eslint":"^9.6.0","@types/express":"^4.17.21","@types/jest":"^29.5.13","@types/jsonwebtoken":"^9.0.6","@types/mime-types":"^2.1.4","@types/multer":"^1.4.12","@types/node":"^22.4.0","@types/nodemailer":"^6.4.15","@types/pg":"^8.11.6","@types/prettier":"^3.0.0","@types/semver":"^7.5.8","@types/sinon":"^17.0.3","@types/supertest":"^6.0.2","@typescript-eslint/eslint-plugin":"^8.1.0","@typescript-eslint/parser":"^8.1.0","eslint":"^9.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","jest":"^29.7.0","mongodb-memory-server":"^10.0.0","nodemon":"^3.1.4","nyc":"^17.0.0","prettier":"^3.3.3","sinon":"^19.0.2","source-map-support":"^0.5.21","supertest":"^7.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typedoc":"^0.26.7"},"_id":"@ahmed89saad/document_management_system@1.0.0","gitHead":"19c889bb2201cfc2d458ac44b3f377df8f7254ff","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-z/bYRagefcLTHfg1MKlXGm3Y9I0VL+jxy619LL4zL5FAJoisSGB/pAaSKe1ye1G+sIWImxjaP0dP50RI8JNYBQ==","shasum":"59cbe08d55d204189e5132618e04db5b4e441ef4","tarball":"https://registry.npmjs.org/@ahmed89saad/document_management_system/-/document_management_system-1.0.0.tgz","fileCount":175,"unpackedSize":1286841,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV/i6yNG9YY0C9V0YgC6Zf47JydPV8s+yKay75KAm2+AIgY7lliA8MB0qxog/MZE5U/HFF7fini+V5CHu7enmuVNI="}]},"_npmUser":{"name":"ahmed89saad","email":"ahmed.saad.kader@gmail.com"},"directories":{},"maintainers":[{"name":"ahmed89saad","email":"ahmed.saad.kader@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/document_management_system_1.0.0_1727293484005_0.40171573506610714"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-25T19:44:43.919Z","1.0.0":"2024-09-25T19:44:44.408Z","modified":"2024-09-25T19:44:44.748Z"},"maintainers":[{"name":"ahmed89saad","email":"ahmed.saad.kader@gmail.com"}],"description":"MERN stack Document Management System with integrated relational and NoSQL databases.","homepage":"https://github.com/AhmedSaadKader/document_management_system#readme","repository":{"type":"git","url":"git+https://github.com/AhmedSaadKader/document_management_system.git"},"author":{"name":"Ahmed Saad"},"bugs":{"url":"https://github.com/AhmedSaadKader/document_management_system/issues"},"license":"ISC","readme":"# Document Management System (DMS)\n\n## Overview\n\nThe Document Management System (DMS) is a web application built using the MERN stack (MongoDB, Express.js, React.js, Node.js). The application integrates both relational and NoSQL databases to manage user authentication, workspace management, document handling, and more.\n\n## Features\n\n- **User Authentication**: Secure user registration and login using a relational database (PostgreSQL/MySQL) with JWT-based session management.\n- **Workspace Management**: Users can create and manage workspaces, each with its unique directory structure stored in MongoDB.\n- **Document Upload**: Upload documents to a cloud storage system, with metadata saved in MongoDB.\n- **Document Download**: Download documents securely, with proper authentication and authorization checks.\n- **Document Preview**: Preview documents as Base64-encoded data.\n- **Document Deletion**: Implement soft deletion of documents, ensuring data integrity.\n- **Document Listing**: List documents based on workspaces and user profiles, with filtering and sorting options.\n- **Document Search**: Search for documents by name or type using optimized MongoDB queries.\n- **Additional Features**:\n  - Document versioning\n  - Document tagging\n  - Document profiling\n  - Granular access control\n\n## Technology Stack\n\n- **Frontend**: React.js\n- **Backend**: Node.js, Express.js\n- **Databases**:\n  - **Relational Database**: PostgreSQL or MySQL (for user authentication)\n  - **NoSQL Database**: MongoDB (for workspace and document management)\n- **Storage**: AWS S3 or other cloud storage services for document storage\n- **Security**: JWT for session management, bcrypt for password hashing\n- **Testing**: Jasmine\n\n## Installation\n\nTo set up the project locally, follow these steps:\n\n### Prerequisites\n\n- Node.js (v14.x or higher)\n- npm or yarn\n- PostgreSQL or MySQL\n- MongoDB\n- AWS account (if using AWS S3 for document storage)\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/AhmedSaadKader/document_management_system.git\ncd document-management-system\n```\n\n### Install Dependencies\n\n```bash\nnpm install\n```\n\n### Environment Variables\n\nCreate a `.env` file with the following:\n\n```plaintext\nPORT=5000\nDATABASE_URL=your_relational_database_url\nMONGO_URI=your_mongodb_uri\nJWT_SECRET=your_jwt_secret\nAWS_ACCESS_KEY_ID=your_aws_access_key_id\nAWS_SECRET_ACCESS_KEY=your_aws_secret_access_key\nAWS_REGION=your_aws_region\nS3_BUCKET_NAME=your_s3_bucket_name\n```\n\n### Run the Application\n\n```bash\ncd backend\nnpm run dev\n```\n\n### Testing\n\n```bash\nnpm test\n```\n\n## Project Structure\n\n```plaintext\ndocument-management-system/\n├── backend/\n│   ├── src/\n│   │   ├── controllers/\n│   │   ├── models/\n│   │   ├── routes/\n│   │   └── utils/\n│   ├── config/\n│   ├── middleware/\n│   └── tests/\n├── .gitignore\n├── README.md\n├── Instructions.md\n└── package.json\n```\n\n## Contribution Guidelines\n\nContributions are welcome! To contribute:\n\n1. Fork the repository.\n2. Create a new branch for your feature/bugfix.\n3. Commit your changes with a meaningful commit message.\n4. Push your branch and create a Pull Request.\n\n## Acknowledgments\n\n- MERN stack for providing the foundational technologies.\n- AWS for cloud storage solutions.\n- [bcrypt](https://www.npmjs.com/package/bcrypt) for password hashing.\n- [jsonwebtoken](https://www.npmjs.com/package/jsonwebtoken) for handling JWT authentication.\n","readmeFilename":"README.md"}