This project is a DevOps mini-project that automates invoice data entry. Users upload an invoice image or plain text invoice, the application extracts structured billing fields, and the data is stored in SQLite for later viewing.
Companies often enter invoice information manually into accounting systems. This creates delays, data-entry mistakes, and inconsistent records. The goal of this project is to reduce manual work by building a simple invoice-processing pipeline that:
- accepts invoice uploads
- extracts invoice metadata automatically
- stores structured data in a database
- validates code quality through CI/CD
- packages the system for containerized deployment
- Frontend: HTML, CSS, vanilla JavaScript
- Backend: Node.js, Express
- OCR: Tesseract.js
- Database: SQLite via
node:sqlite - Testing: Node test runner + Supertest
- Static analysis: ESLint
- Containerization: Docker, Docker Compose
- CI/CD: GitHub Actions
.
|-- .github/workflows/ci-cd.yml
|-- public/
|-- src/
|-- tests/
|-- scripts/
|-- docs/
|-- artifacts/
|-- Dockerfile
|-- docker-compose.yml
|-- package.json
Recommended Git workflow for submission:
main: stable branchfeature/invoice-parser: parser logicfeature/api-storage: API and databasefeature/frontend-dashboard: UI workfeature/devops-pipeline: CI/CD and Docker
Suggested commit examples:
feat: add invoice field extraction servicetest: cover invoice upload endpointci: add GitHub Actions quality pipelinedocs: add deployment and report documents
npm is used as the build tool and task runner.
npm installinstalls dependenciesnpm run lintperforms static analysisnpm testruns automated testsnpm run buildgenerates a build report inartifacts/build-report.mdnpm run ciruns lint, tests, and build together
npm install
npm run ci
npm startOpen http://localhost:3000.
Build and run locally:
docker build -t invoice-processing-system .
docker run -p 3000:3000 invoice-processing-systemOr use staging compose:
docker compose up --buildThen open http://localhost:8080.
The GitHub Actions workflow at .github/workflows/ci-cd.yml performs:
- dependency installation with
npm ci - ESLint static analysis
- automated API and parser tests
- build report generation
- Docker image build for staging
- optional staging deployment through a Render deploy hook secret
Recommended staging target: Render Web Service using the provided Dockerfile.
Required secret for automated deploy:
RENDER_DEPLOY_HOOK_URL
If the secret is configured, every push to main triggers the deploy stage after the quality checks pass.
- CI/CD config:
.github/workflows/ci-cd.yml - Build report:
artifacts/build-report.md - Test report:
artifacts/test-report.txt - Lint report:
artifacts/lint-report.txt - Project report:
docs/project-report.md - Deployment evidence:
docs/deployment-evidence.md
Add your GitHub repository URL here after pushing:
REPLACE_WITH_YOUR_GITHUB_REPOSITORY_LINK