Looty
Looty is a free, self-hosted workspace: kanban boards, collaborative documents, a calendar, your mailbox and projects, with apps for Android, Linux and Windows that work offline.
The research workspace where your manuscript, sources, data and collaborators stay in sync.
ProductivityGitHub @Abiks06OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Real-time research workspace for academics. Co-write papers live, manage sources and citations, run peer reviews, and track who contributed what.
Taken from the repository README
Loading the full README.
Read the full README ↗The research workspace where a team's manuscript, sources, data and collaborators stay in sync.
This is the v2 rebuild. v1 kept all data in server memory and faked authentication, so accounts and documents disappeared on every restart. v2 is built on one rule: one system per job, one source of truth per piece of data, and nothing that fakes success.
| Layer | Choice |
|---|---|
| App | Next.js 16 (App Router), React 19, Tailwind CSS 4 |
| Motion | Motion (motion/react), respecting reduced-motion settings |
| Auth | Supabase Auth: Google, Microsoft, and email links with a 6-digit code |
| Database | Supabase Postgres with row-level security on every table |
| Live editing | Liveblocks + Yjs through Tiptap; access decided by the database |
src/proxy.tssupabase/migrations)supabase/migrations/, in filename order (SQL editor, or npx supabase db push once linked).http://localhost:3000/auth/callback (and your production URL) to the redirect URLs.supabase/templates/magic-link.html
into Magic link and supabase/templates/confirm-signup.html into Confirm signup. They add
the 6-digit code and a link to /auth/confirm, which works in any browser and can't be used up by
a university mail scanner. Keep Email OTP length at 6..env.example to .env.local and fill in the project URL, publishable key and Liveblocks secret key. In production,
also set NEXT_PUBLIC_SITE_URL to the public address so sign-in links point there.npm install
npm run dev
To work without a Liveblocks account, run the app inside the local Liveblocks dev server:
npx liveblocks dev -c "npm run dev".
| Command | What it does |
|---|---|
npm run dev | Start the dev server on port 3000 |
npm run build | Production build |
npm run lint | ESLint |
npm run typecheck | Generate route types and run TypeScript |
npm test | Unit tests (vitest) |
src/
app/
page.tsx landing page
(auth)/sign-in/ sign-in screen and server actions
auth/callback, sign-out session routes
(app)/projects/ signed-in workspace
components/
landing/ landing page sections
app/ workspace UI
motion/ shared animation primitives
lib/supabase/ browser, server and proxy clients, database types
proxy.ts refreshes sessions, guards signed-in pages
supabase/migrations/ schema and row-level security