Thanks for your interest. Contributions of all sizes are welcome.
git clone https://github.com/sdesaurabh/compilo
cd compilo
npm install
cp .env.example .env # add ANTHROPIC_API_KEY
npm run dev # backend :3001, frontend :5173Open http://localhost:5173. The frontend dev server proxies all /api requests to the backend automatically.
- Fork the repo and create a branch from
main - Make your change — keep it focused, one thing per PR
- Test manually — see the test checklist below
- Open a pull request — describe what you changed and why
Before opening a PR, verify the core pipeline still works end-to-end:
- Upload a PDF → article compiled, appears in Wiki
- Upload a DOCX or XLSX → article compiled
- Ingest a URL → article compiled, links panel appears
- Paste text → article compiled
- Search for an article by keyword
- Ask a question → answer with citations → appears in history
- Download a Q&A answer as
.md - Open the Knowledge Graph — nodes labelled, hover highlights work
- Run a Health Check
- Delete an article via the Article page and via the Wiki card
- Delete a source in History → article disappears everywhere
- Issues labeled
good first issueare good starting points - Check
docs/ROADMAP.mdfor planned v2 features - Bug fixes and documentation improvements are always welcome
- Keep PRs small. One feature or fix per PR.
- Don't break existing behaviour. The compile → wiki → Q&A pipeline must keep working.
- No new dependencies without discussion. Open an issue first if your change needs a new npm package.
- Follow existing code style. No linter is enforced — just match the surrounding code.
- Backend errors should always return
{ error: string }JSON. Never let stack traces reach the client. - Frontend errors should show user-friendly messages. Never display raw
err.messagefrom the server.
- Add the extension to
ALLOWED_EXTENSIONSinbackend/routes/upload.js - Add a case to
parseFile()inbackend/services/fileParser.js - Add the
accepttype toACCEPTinfrontend/src/components/Uploader.jsx - Add a
FileTypeBadgecase infrontend/src/pages/History.jsx
- Add a detector (
isMySourceUrl) and extractor (extractMySourceContent) inbackend/routes/ingest.js - Add the
mimeTypestring (e.g.text/mysource) - Add a platform pill to
frontend/src/components/URLIngestor.jsx - Add a
FileTypeBadgecase infrontend/src/pages/History.jsx
Use the bug report template. Include steps to reproduce, expected behaviour, and actual behaviour.
Use the feature request template. Check docs/ROADMAP.md first — it might already be planned.
Open a GitHub Discussion for anything that isn't a bug or feature request.