Spaces:
Sleeping
Sleeping
| # Deploying DocSentry to Streamlit Community Cloud | |
| Free, public URL like `https://docsentry-yourname.streamlit.app`. Judges click a link, see your app. ~10 minutes total. | |
| ## What you need | |
| - A free **GitHub** account (https://github.com) | |
| - A free **Streamlit Community Cloud** account (https://share.streamlit.io) | |
| - That's it β no credit card, no Docker, no AWS | |
| ## Files already prepared for deployment | |
| | File | Purpose | | |
| |---|---| | |
| | `requirements.txt` | Python packages | | |
| | `packages.txt` | System packages (Tesseract OCR) β apt-installed on the cloud VM | | |
| | `.streamlit/config.toml` | Theme: blue corporate colors | | |
| | `.gitignore` | Excludes `.venv/`, `data/` (use `sample_data/` instead), checkpoints | | |
| | `sample_data/` | 26 curated demo files (~21 MB) β small enough for GitHub | | |
| | `app.py` | Auto-detects sample_data on startup; judges can pick a sample without uploading | | |
| ## Step 1 β Create a GitHub repository (3 minutes) | |
| 1. Go to https://github.com/new | |
| 2. Repository name: `docsentry` (or whatever you want) | |
| 3. Set to **Public** (required for free Streamlit Cloud tier) | |
| 4. Do NOT initialize with README β we have our own | |
| 5. Click **Create repository** | |
| 6. Copy the URL shown β looks like `https://github.com/YourName/docsentry.git` | |
| ## Step 2 β Push the project to GitHub | |
| Open PowerShell in your project folder: | |
| ```powershell | |
| cd "C:\Users\HP\Desktop\Anomaly Based project" | |
| # Install git for Windows if you don't have it: https://git-scm.com/download/win | |
| git init | |
| git add . | |
| git commit -m "Initial commit: DocSentry document forensics demo" | |
| git branch -M main | |
| git remote add origin https://github.com/YourName/docsentry.git | |
| git push -u origin main | |
| ``` | |
| If git asks for credentials: use your GitHub username + a **personal access token** (not your password). Make a token at https://github.com/settings/tokens β give it `repo` scope. | |
| After this, refresh your GitHub page. You should see all the files: `app.py`, `forensics.py`, `audit_report.py`, `requirements.txt`, `packages.txt`, `sample_data/`, etc. | |
| ## Step 3 β Deploy on Streamlit Community Cloud (5 minutes) | |
| 1. Go to https://share.streamlit.io | |
| 2. Sign in with your GitHub account (one click β it's the same login) | |
| 3. Click **Create app** (top right) | |
| 4. Pick **Deploy from GitHub** | |
| 5. Fill in: | |
| - **Repository**: `YourName/docsentry` | |
| - **Branch**: `main` | |
| - **Main file path**: `app.py` | |
| - **App URL** (custom): `docsentry-yourname` (or whatever's free) | |
| 6. Click **Deploy** | |
| Streamlit Cloud now: | |
| 1. Reads `packages.txt` β installs Tesseract OCR on the VM | |
| 2. Reads `requirements.txt` β pip-installs every dependency | |
| 3. Loads `app.py` β starts the Streamlit server | |
| This takes 3-5 minutes the first time. Watch the build log on the right side of the screen. | |
| When you see **"Your app is live"**, click **Open app** β that's your public URL. | |
| ## Step 4 β Test the live deployment | |
| On the live URL: | |
| 1. **Tab 1**: pick a sample from the dropdown (e.g. `tampered/land_005_copy_move.png`) β should show **HIGH** band + heatmaps | |
| 2. **Tab 2**: upload two different files from `sample_data/originals/` β consistency check | |
| 3. **Tab 3**: change folder to `sample_data` β batch audit | |
| If anything errors, check the logs via the **Manage app** menu on the live page. | |
| ## Step 5 β Share the link | |
| You now have a public URL. Drop it in your pitch deck, on your GitHub README, on Devpost. Judges click β 30-second cold start β working demo, no install required. | |
| ## Updating the live app | |
| Push to GitHub β Streamlit Cloud auto-deploys in ~1 minute. No redeploy button needed. | |
| ```powershell | |
| git add . | |
| git commit -m "Updated thresholds for higher precision" | |
| git push | |
| ``` | |
| The live URL stays the same. | |
| ## Resource limits on the free tier | |
| - **1 GB RAM** β enough for all forensic operations on documents up to ~2000x2000 pixels | |
| - **CPU only** β no GPU. The Random Forest path runs fine; the CNN path (Section 7.6 in the notebook) won't fit here | |
| - **App sleeps after ~7 days** of zero traffic β first visitor after that waits ~30 seconds for a cold start | |
| - **Public access** β anyone with the URL can use it. Fine for hackathons. If you need it private, upgrade to Streamlit Teams ($25/mo) or self-host | |
| ## Common issues | |
| **"ModuleNotFoundError: forensics"** | |
| Make sure `forensics.py` and `audit_report.py` are at the **repo root** (not in a subfolder). Streamlit Cloud runs `app.py` from the repo root and Python only finds modules in the same folder. | |
| **"tesseract: not found" on the live app** | |
| The `packages.txt` file might not have been committed. Run `git status` and `git add packages.txt`, then `git push`. Verify on GitHub that `packages.txt` exists in the root. | |
| **Sample data dropdown is empty on live app** | |
| The `.gitignore` excludes `data/` but not `sample_data/`. Check on GitHub that the `sample_data/` folder is visible. If it's missing, you might have a leftover `data/` exclusion. Remove `sample_data/` from `.gitignore` if so. | |
| **Build times out** | |
| Free tier build limit is ~15 minutes. If you exceed, trim `requirements.txt` (e.g. remove `seaborn`, `imagehash`, `exifread` if unused). They're nice-to-have but not core. | |
| **`models/forgery_rf.joblib` missing** | |
| Train it locally first (run Section 7.5 in the notebook) then commit + push. The app gracefully falls back to rule-based-only scoring if the model is missing. | |
| **Memory error on large uploads** | |
| Free tier has 1 GB RAM. Tell judges to use PNG/JPG under 5 MB or downscale large scans first. Or upgrade to Teams ($25/mo, 8 GB RAM) for the hackathon. | |
| ## Alternative: Hugging Face Spaces (also free) | |
| If Streamlit Cloud is slow on your day of demo, the same code deploys to Hugging Face Spaces with no changes: | |
| 1. Create a Space at https://huggingface.co/new-space | |
| 2. Pick **Streamlit** as the SDK | |
| 3. Push to its git repo using your HF write token | |
| 4. Done. Public URL like `huggingface.co/spaces/yourname/docsentry` | |
| HF Spaces gives you 16 GB RAM free vs Streamlit's 1 GB, but the URL is uglier. Use whichever wins on the day. | |