Personal OSINT self-audit tool scaffold (Step 1 + Step 2 complete):
- Full-stack project structure in place
- Meta Instagram OAuth gate fully wired
- Hard gate enforced: no pipeline access until backend successfully calls
GET /me/media - Ephemeral in-memory session storage only (no database)
NoDoxx/
├── backend/
│ ├── .env.example
│ ├── requirements.txt
│ └── app/
│ ├── __init__.py
│ ├── main.py
│ ├── api/
│ │ ├── __init__.py
│ │ └── routes/
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── health.py
│ │ └── session.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── dependencies.py
│ │ └── session_store.py
│ ├── models/
│ ├── orchestration/
│ │ └── __init__.py
│ ├── pipelines/
│ │ ├── __init__.py
│ │ ├── README.md
│ │ ├── geolocation/
│ │ │ └── __init__.py
│ │ ├── identity/
│ │ │ └── __init__.py
│ │ └── web_footprint/
│ │ └── __init__.py
│ ├── schemas/
│ │ ├── __init__.py
│ │ └── auth.py
│ └── services/
│ ├── __init__.py
│ └── meta_oauth.py
├── frontend/
│ ├── .env.example
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── tailwind.config.js
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── vite.config.ts
│ └── src/
│ ├── App.tsx
│ ├── index.css
│ ├── main.tsx
│ ├── types.ts
│ ├── api/
│ │ └── client.ts
│ ├── components/
│ │ ├── AuthGatePanel.tsx
│ │ ├── ExposurePanel.tsx
│ │ └── PipelineStatusPanel.tsx
│ ├── features/
│ │ ├── findings/
│ │ ├── pipelines/
│ │ └── remediation/
│ └── layout/
├── .gitignore
└── README.md
- Frontend calls
GET /api/auth/meta/startand receives the Meta authorize URL. - User authenticates with Instagram/Meta.
- Meta redirects to backend callback:
GET /api/auth/meta/callback. - Backend exchanges code for token.
- Backend calls
GET /meand thenGET /me/media. - Session is marked
gate_passed=trueonly if/me/mediasucceeds. - Frontend displays gate status and locks pipelines until gate is passed.
GET /api/healthGET /api/sessionGET /api/auth/meta/startGET /api/auth/meta/callbackPOST /api/auth/logoutGET /api/me/media(returns 403 unless gate passed)
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd frontend
npm install
cp .env.example .env
npm run devFrontend default URL: http://localhost:5173
Backend default URL: http://localhost:8000
- OAuth redirect URI must include:
http://localhost:8000/api/auth/meta/callback - Scopes expected by this build:
instagram_graph_user_profile,instagram_graph_user_media - Provide
META_CLIENT_IDandMETA_CLIENT_SECRETinbackend/.env