Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mananag-1784/accredita-docs
This web application focuses on efficient document classification and retrieval through a user-friendly interface for college departments. It seamlessly integrates with existing storage solutions by using Google Drive API, ensuring data security
https://github.com/mananag-1784/accredita-docs
accredita classification documentation-tool drive-api flask management-system python
Last synced: about 1 month ago
JSON representation
This web application focuses on efficient document classification and retrieval through a user-friendly interface for college departments. It seamlessly integrates with existing storage solutions by using Google Drive API, ensuring data security
- Host: GitHub
- URL: https://github.com/mananag-1784/accredita-docs
- Owner: MananAg-1784
- License: mit
- Created: 2024-06-11T19:01:15.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-23T18:05:19.000Z (4 months ago)
- Last Synced: 2024-08-23T19:32:49.380Z (4 months ago)
- Topics: accredita, classification, documentation-tool, drive-api, flask, management-system, python
- Language: Python
- Homepage:
- Size: 2.38 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Accredita-Docs
This web application focuses on efficient document classification and retrieval through a user-friendly interface for college departments. It seamlessly integrates with existing storage solutions by using Google Drive API, ensuring data security and reliability.## Table of Content
1. [Features](#features)
2. [Modules and Working](#modules-and-working)
* [User Management](#user-management)
* [Document Classification and Storage](#document-classification-and-storage)
* [File Management](#file-management)
* [Administrative Update](#administrative-updates)
3. [Database Structure](#database-structure)
4. [Installation](#installation)
5. [Usage](#usage)
6. [License](#license)
7. [Contact](#contact)## Features
* **User management** : Manage department teachers and access to various roles
* **Administrative updates** : Updating and managing users, files, folders, etc.
* **Document Classification and Storage** : Stores and classifies files in an organised manner that specify files content
* **File Management** : Upload and track activities of all files
* **Serach and Retrieval** : Filters and classifies files based on criteria's## Modules and Working
### User Management
Each user is associated with a department under which they perform all tasks. Users are assigned one of the following four roles :* **Owner** : Utilizes its Google Drive spcae for the Department files. (Same level as the admin)
* **Admin** : Manages the department, control access, oversees folders and files, etc.
* **Editor** : Upload, Update, and view files.
* **Viewer** : View and Classify files.| Permission | Owner | Admin | Editor | Viewer |
|--------------------------------------------------------------|:-----:|:-----:|:------:|:------:|
| Managers folders within the department | ✓ | ✓ | | |
| Controls access for other teachers | ✓ | ✓ | | |
| Updates criterias and classification codes | ✓ | ✓ | | |
| Uploads and Update files | ✓ | ✓ | ✓ | |
| Track activity of all files | ✓ | ✓ | ✓ | |
| Views and Classify files | ✓ | ✓ | ✓ | ✓ |### Document Classification and Storage
- Each file is assciated with `Classification Codes (4-5 letters)` that specify the file's content (eg. SYLR, ALCO)
- Files can be uploaded to oonly those folders added by the admin in the department
- Folders can be associated with classification codes that specify the type of files inside the folder
- Creates criteria associated with classification codes, which are created under specific accreditations (e.g., NAAC, NBA).### File Management
- Filters and classifies files based on folder, criteria, classification code, etc.
- Uploads multiple files to Google Drive in a specific format.
- Tracks activities for the last 7 days.
- Update, Remane, Move and Trash Files
- File Format :
`yyyymmdd_ClassificationCode_name.extension`
In case of files associated with multiple classification code seperate the code using a comma (,)
Example : `20240612_SYLR_Syllabus for Students.doc` `20240612_SYLR,LRNG_Syllabus for Students.doc`### Administrative Updates
- Update, create and modify list of folders, categories and criterias
- Manage access roles to the users of the department
- Keep track of all the activity of files## Database Structure
![Database Schema Diagram](/database_schema.png)
## Installation
1. Clone the repository:
```bash
https://github.com/MananAg-1784/Accredita-Docs.git
```2. Install the required dependencies using pip and the provided requirements file:
```bash
pip install -r requirements.txt
or
pip3 install -r requirements.txt
```This command will install all the necessary Python packages specified in the `requirements.txt` file.
3. Change the Api Secret Key in the `config.py` file
```bash
api_secret = 'Accredita-Doc'
```5. Update the required data in the `setup.json` file :
```bash
{
"timezone":"Asia/Kolkata",
"domain":"gamil.com",
"auth_redirect":"http://localhost:5000/callback",
"admin_email" : "Aministrator email for the app",
"cloud_email": "Email used to create the OAuth Creds",
"creds":
{
"web" : "The credentials data from Google Cloud OAuth 2.0 Client IDs"
}
}
```To get the credentials for OAuth (Login using gmail) follow the following steps:
- Go to google Cloud Services and Create a new Project
- Enable : **Drive API**, **Peoples API**, **Drive Activity API**
- Create a OAuth Client ID :
Application Type : `Web Application`
Add Authorized redirect URIs (NOTE: include `/callback` uri)6. Run the `setup.py` to update the data into the database.
`python -m setup`
```bash
1. Update data from setup.json
2. Clear the database
Choose the option :
```## Usage
To execute the program in `localhost`, add these two lines in the `run.py` file :
```bash
# After initialising the app
app.config["DEBUG"] = True
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
```To change the port of the server, replace the port in WSGIerver in `run.py`
```bash
WSGIServer(('0.0.0.0', _port_ ), app, log=None).serve_forever()
```Open the terminal in the same directory as the `run.py`
```bash
python -m run # In Windows
or
gunicorn -k gevent -w 1 run:app # In Ubuntu
```## License
This project is licensed under the MIT License. See the LICENSE file for more details.
## Contact
For any questions or feedback, please contact at `[email protected]`
Visit my [Website](https://manan-portfolio.ddns.net/) to check out my works