This is a Flask-based web application designed for uploading, previewing, and searching files in multiple formats like .txt, .pdf, .docx, .pptx, and Jupyter notebooks (.ipynb). The app features content indexing and preview functionality for different file types.
- File Upload & Indexing: Upload files and index their content.
- Supported File Types:
.txt,.pdf,.docx,.pptx,.ipynb. - Search Functionality: Search through indexed files using keywords.
- File Preview: Preview PowerPoint slides, Jupyter notebooks, PDFs, text files, and images.
- app.py: Main application logic.
- static/: Contains static assets (e.g., images).
- templates/: HTML templates for rendering pages.
- Dockerfile: Docker configuration file for containerizing the app.
- Jenkinsfile: Jenkins pipeline for automating testing and deployment.
- k8s/: Kubernetes manifests for deployment and service.
- Build the Docker image:
docker build -t project-int-app . - Run the Docker container:
docker run -p 5000:5000 -v $(pwd)/uploads:/app/uploads project-int-app
- Ensure Minikube or any Kubernetes cluster is running.
- Deploy the application:
kubectl apply -f k8s/deployment.yaml kubectl apply -f k8s/service.yaml - Access the application by finding the service URL:
minikube service project-int-service
- Jenkins Pipeline: The
Jenkinsfilecontains stages to build, test, and deploy the application in Kubernetes. - ArgoCD Integration: The app leverages ArgoCD for automated Kubernetes deployments. The
image-updaterupdates app images based on changes in the container registry.
- Upload Files: Use the homepage to upload supported files.
- Search Files: Search through indexed files by keywords.
- Preview Files: Preview uploaded files directly in the browser.
- etcsys_test branch:
- Kubernetes manifests for deployment.
- Integration with Jenkins and ArgoCD for automated CI/CD.
- Enhanced logging and error handling for file operations.
- Flask
- python-pptx
- PyMuPDF (fitz)
- Mammoth
- nbformat
- Docker
- Kubernetes
- Jenkins
- ArgoCD
This project is licensed under the MIT License.