Spaces:
Sleeping
A newer version of the Streamlit SDK is available: 1.59.0
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)
- Go to https://github.com/new
- Repository name:
docsentry(or whatever you want) - Set to Public (required for free Streamlit Cloud tier)
- Do NOT initialize with README β we have our own
- Click Create repository
- 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:
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)
- Go to https://share.streamlit.io
- Sign in with your GitHub account (one click β it's the same login)
- Click Create app (top right)
- Pick Deploy from GitHub
- Fill in:
- Repository:
YourName/docsentry - Branch:
main - Main file path:
app.py - App URL (custom):
docsentry-yourname(or whatever's free)
- Repository:
- Click Deploy
Streamlit Cloud now:
- Reads
packages.txtβ installs Tesseract OCR on the VM - Reads
requirements.txtβ pip-installs every dependency - 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:
- Tab 1: pick a sample from the dropdown (e.g.
tampered/land_005_copy_move.png) β should show HIGH band + heatmaps - Tab 2: upload two different files from
sample_data/originals/β consistency check - 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.
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:
- Create a Space at https://huggingface.co/new-space
- Pick Streamlit as the SDK
- Push to its git repo using your HF write token
- 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.