This Django project is a document management tool designed to facilitate efficient organization, storage, and sharing of documents. It follows the principles of Domain-Driven Development (DDD), adheres to the SOLID principles, and prioritizes application-focused development over framework-specific implementations.
- User signup and login
- Create, read, update, and delete (CRUD) operations for documents
- Share documents with others
- Manage access to documents
-
User Signup and Login
/registration: Register a new user- Request Payload:
{ "username": "test_user", "email": "test@mail.com", "password1": "password", "password2": "password" }
- Request Payload:
/login: Log in an existing user- Request Payload:
{ "username": "test_user", "password": "password" }
- Request Payload:
-
Document CRUD Operations
-
- Request URL:
/documents - Request Method:
GET - Request Payload:
{ "documentTitle": "First Document", "documentOwnerUsername": "test_user" } - Response:
{ "documentTitle": "First Document", "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"] }
- Request URL:
-
- Request URL:
/documents - Request Method:
POST - Request Payload:
{ "documentTitle": "First Document", "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"] } - Response:
{ "documentTitle": "First Document", "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"] }
- Request URL:
-
- Document title and owner can not be updated
- Request URL:
/documents - Request Method:
PUT - Request Payload:
{ "documentTitle": "Document Title", "content": "Updated content here", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"] } - Response:
{ "documentTitle": "Document Title", "content": "Updated content here", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"] }
-
- Request URL:
/documents - Request Method:
DELETE - Request Payload:
{ "documentTitle": "Document to be deleted", "documentOwnerUsername": "test_user" } - Response:
{ "documentTitle": "First Document", "message": "Document deleted successfully" }
- Request URL:
-
-
User Access Detail
-
- Request URL:
/share-details/ - Request Method:
GET - Request Payload:
{ "documentTitle": "Document to be retrieved", "sharedUserUsername": "user1" } - Response:
{ "documentTitle": "Document to be retrieved", "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "documentOwnerUsername": "test_user", "sharedUserUsernames": ["user1", "user2"], "permissionType": "Read Only" }
- Request URL:
-
- Request URL:
/share-details/ - Request Method:
POST - Request Payload:
{ "documentTitle": "Document to be shared", "documentOwnerUsername": "test_user", "permissionType": "Read Only", "sharedUserUsernames": ["user1", "user2"] } - Response:
{ "documentTitle": "Document to be shared", "documentOwnerUsername": "test_user", "permissionType": "Read Only", "sharedUserUsernames": ["user1", "user2"], "message": "Document shared successfully" }
- Request URL:
-
- Request URL:
/share-details/ - Request Method:
PUT - Request Payload:
{ "documentTitle": "Document to be updated", "documentOwnerUsername": "test_user", "permissionType": "Edit", "sharedUserUsernames": ["user3", "user4"] } - Response:
{ "documentTitle": "Document to be updated", "documentOwnerUsername": "test_user", "permissionType": "Edit", "sharedUserUsernames": ["user3", "user4"], "message": "Document access updated successfully" }
- Request URL:
-
- Request URL:
/share-details/ - Request Method:
DELETE - Request Payload:
{ "documentTitle": "Document to be unshared", "sharedUserUsername": "user1" } - Response:
{ "documentTitle": "Document to be unshared", "message": "Document access removed successfully" }
- Request URL:
-
- Clone the repository:
git clone https://github.com/nasif-raihan/Document-Management-Tool.git - Install dependencies:
poetry install - Run migrations:
make migrate
- Start the server:
make runserver - Access the API endpoints using a REST client like Postman or through frontend applications.
This project is licensed under the MIT License - see the LICENSE file for details.