open-silong
An open-source Notion-inspired workspace for teams and personal use
An open-source Notion-inspired workspace for teams and personal use
An open-source Notion-inspired workspace for teams and personal use
Open-source, self-hostable collaborative workspace — inspired by Notion & Obsidian.
Live demo · Docs · Contributing · Security
A block-based workspace for notes, docs, and lightweight databases, with an Obsidian-style knowledge graph on top. Built for teams that want to own their data: self-host the full stack with Docker Compose, or run on Convex Cloud free tier. MIT licensed. No vendor lock-in.
Inspired by Notion & Obsidian. open-silong is an independent, clean-room project — not affiliated with, endorsed by, or connected to Notion Labs, Inc. or Dynalist Inc. It borrows ideas (the block editor, the knowledge graph), never code or brand assets. See
TRADEMARKS.md.

| Block editor | Database — Table | Database — Board |
|---|---|---|
![]() |
![]() |
![]() |
| Template gallery | Admin panel | Command palette |
![]() |
![]() |
![]() |
| Dark mode | Mobile | First-run setup |
|---|---|---|
![]() |
![]() |
![]() |
Captured live on silong-os.vercel.app, signed in as the workspace superadmin (demo workspace seeded from the
/setupwizard).
[[wikilink]], @mention, #tag, and database row — with backlinks
and unresolved "ghost" nodes. Live d3-force layout with tunable
forces, cluster tinting, and focus/neighbourhood highlighting.@page mentions,
presence indicators, version snapshots./mcp/v1).One-click: Deploy with Vercel —
only asks for CONVEX_DEPLOY_KEY (create a project at
dashboard.convex.dev → Settings → Deploy
Keys). The build deploys the Convex functions, provisions the auth keys,
and injects NEXT_PUBLIC_CONVEX_URL automatically. Your first visit
lands on the /setup wizard: claim the owner (superadmin) account and
seed the template gallery + demo workspace in one click.
Local development:
git clone https://github.com/rahmanef63/open-silong.git
cd open-silong
pnpm install
cp .env.example .env.local # fill NEXT_PUBLIC_CONVEX_URL after step 4
npx convex dev # creates Convex Cloud project, prints URL
pnpm dev # http://localhost:3000
Convex Cloud free tier covers small teams. Full walk-through in
DEPLOY.md.
git clone https://github.com/rahmanef63/open-silong.git
cd open-silong
cp .env.example .env.local # fill INSTANCE_*, JWT_*, POSTGRES_URL
docker compose up -d # Convex backend on port 3210
pnpm install
pnpm exec convex deploy --yes # push schema + functions
pnpm dev # http://localhost:3000
Full Dokploy + Traefik + Postgres + S3 setup in
DEPLOY.md.
convex/auth.ts already wires Google — just provide credentials:
# 1. Google Cloud Console → APIs & Services → Credentials → Create OAuth 2.0
# client (Web app). Authorized redirect URI:
# https://<your-CONVEX_SITE_ORIGIN>/api/auth/callback/google
# 2. Set on Convex backend
pnpm exec convex env set AUTH_GOOGLE_ID <client-id>.apps.googleusercontent.com
pnpm exec convex env set AUTH_GOOGLE_SECRET <client-secret>
The "Sign in with Google" button in /auth activates automatically
once those two env vars are set. Step-by-step including consent screen
setup + adding GitHub/Apple/Discord providers:
DEPLOY.md#google-oauth-sign-in-optional.
silong-os.vercel.app — public demo. Lands you straight in a guest workspace (no sign-up needed), or create an email + password account to keep your data. Instance is shared.
Looking for the UI as a localStorage-only starter? The same editor
ships as notion-page-clone-os in the
rahman-resources template
marketplace:
npx rahman-resources@latest add notion-page-clone-os
| Layer | Choice | Why |
|---|---|---|
| Frontend | Next 16 (App Router) + React 19 | RSC, streaming, file-based routing |
| Styling | Tailwind v4 + shadcn/ui | Theme tokens, primitives, dark mode |
| Backend | Convex 1.36 (self-hostable) | Realtime, optimistic, typed end-to-end |
| Auth | @convex-dev/auth |
Magic-link, OAuth-ready, no Clerk |
| Storage | Convex file storage OR S3 adapter | Pluggable per slice |
| Search | Convex full-text index | No external search service |
| Deploy | Docker Compose + Traefik (self-host) OR Convex Cloud | Pick your trade-off |
A one-screen system view. The full set — data model, auth/authz flow, slice
graph, and the memory-graph pipeline — lives in
docs/architecture/diagrams.md.
flowchart LR
B["Browser<br/>Next 16 · React 19"] --> P["proxy.ts<br/>optimistic auth gate"]
B -- "reactive queries" --> C["Convex backend<br/>queries · mutations<br/>in-handler authz"]
P --> C
C --> S["schema.ts · 32 tables"]
S --> DB[("Postgres / Convex Cloud")]
C --> F[("Files: Convex blob / S3")]
A["AI agents"] -- "Notion-canonical JSON" --> H["MCP HTTP surface"] --> C
Repository layout:
app/ Next 16 App Router routes
dashboard/* Authenticated surfaces (pages, db, settings, …)
share/[id] Public read-only share surface
preview/* Marketing + sandbox
frontend/
slices/<name>/ Vertical feature slices — see docs/api/slices.md
shared/ Cross-slice primitives, providers, store hooks
proxy.ts Convex auth optimistic gate (not the security boundary)
convex/
features/<name>/ Per-feature backend (schema + queries + mutations)
_shared/ Auth helpers, rate limit, workspace gates
http.ts Public HTTP routes (share, MCP)
mcp/ MCP HTTP surface (Notion-canonical JSON)
docker-compose.yml Convex self-hosted (port 3210, Traefik-frontable)
The codebase follows a slice architecture: each feature lives in
frontend/slices/<name>/ with optional convex/features/<name>/
mirror. Cross-slice imports go through the barrel only. See
CONTRIBUTING.md for the rules.
| Topic | Where |
|---|---|
| Per-slice API + UX docs | docs/api/ |
| Architecture diagrams (system · data model · flows) | docs/architecture/diagrams.md |
| Deploy walkthroughs (cloud + self-host + Dokploy) | DEPLOY.md |
| Slice catalog (every feature in one page) | docs/api/slices.md |
| Architecture decisions + audit notes | docs/audit/ |
| Contributing guide | CONTRIBUTING.md |
| Security policy | SECURITY.md |
| Code of Conduct | CODE_OF_CONDUCT.md |
| Trademarks + inspiration + legal notes | TRADEMARKS.md |
| Changelog | CHANGELOG.md |
See docs/notion-clone/ROADMAP.md
for the full backlog.
Bug reports, feature ideas, doc fixes, and code PRs are all welcome.
Read CONTRIBUTING.md for dev setup, slice
architecture, and PR conventions.
By participating, you agree to the Code of Conduct.
Found a vulnerability? Please don't open a public issue. Email
security@rahmanef.com or use a private GitHub Security Advisory —
see SECURITY.md for SLAs and scope.
MIT © 2026 Rahman Effendi and open-silong contributors.
open-silong is an independent open-source project. It is not
affiliated with, sponsored by, endorsed by, or associated with Notion
Labs, Inc. or Dynalist Inc. (the maker of Obsidian) in any way.
It is inspired by Notion (the block editor + lightweight databases) and Obsidian (the local-first knowledge graph). "Notion" and "Obsidian" are trademarks of their respective owners, used here only in a nominative / descriptive sense to identify familiar UI patterns — analogous to how an "iPhone case" advertises compatibility without claiming any link to Apple.
open-silong is a clean-room implementation built independently on Convex, Next.js, shadcn/ui, and the open-source d3-force layout. No proprietary Notion or Obsidian code, design files, brand assets, or trade secrets are used. Import/export adapters target documented public file formats purely for interoperability.
A full plain-language explanation — the idea/expression distinction,
nominative fair use, and international (EU/CJEU) anchors — is in
TRADEMARKS.md. If you represent a rights holder
and have a good-faith concern, reach us via the email in
SECURITY.md — we will adjust naming, disclaimers, or
surfaces in good faith.
This notice is not legal advice; consult a qualified attorney for guidance specific to your jurisdiction and use.