Thanks for considering a contribution — whether that's a bug fix, a new feature, or just a typo fix in the docs, it's welcome.
Follow SETUP.md to get a local instance running against your own Supabase project before making changes. You'll need your own free Supabase project — there's no shared dev environment.
gdrive-clone/
├── backend/ FastAPI app — routes are split by resource under routers/
├── frontend/ Plain HTML/CSS/JS, one file per concern under js/
├── supabase/ SQL schema + storage policies — the source of truth
│ for tables, RLS policies, and the search function
└── docker-compose.yml
There's no build step on the frontend and no ORM on the backend — keep it that way unless a change genuinely requires otherwise. Simplicity here is a feature, not an oversight.
- Fork the repo and create a branch off
main:git checkout -b fix/short-description
- Make your change. A few conventions to match:
- Backend: one router per resource (
folders,files,shares,search). Every table access must go throughget_user_client()so Postgres RLS stays the actual access-control boundary — don't bypass it with the admin/service-role client unless the task genuinely requires crossing user boundaries (e.g. resolving a public share token). - Frontend: no frameworks, no bundler. Keep new logic in its own
js/<feature>.jsfile rather than growingdashboard.jsindefinitely. - Schema changes: edit
supabase/schema.sqldirectly and note in your PR description that it needs to be re-run in Supabase's SQL editor — there's no migration tool in this project yet.
- Backend: one router per resource (
- Test manually against your local Supabase project: sign-up/login, folder create/rename/delete, upload, download, search, and both share types (email + public link) at minimum.
- Commit with a clear message and open a PR against
main. Describe what changed and why, and call out any manual steps a reviewer needs (e.g. re-running SQL).
Open an issue with:
- What you expected vs. what happened
- Steps to reproduce
- Relevant backend terminal output (uvicorn logs) or browser console errors
- Whether it happens with a fresh Supabase project or only yours
Be respectful and constructive. Disagreements about approach are fine; personal attacks aren't.