Omnigraph
그래프 엔진으로 컨텍스트를 조립하고, 객체 저장소 기반에서 에이전트가 코드처럼 그래프 데이터를 분기·타입·검토·병합·감사·거버넌스합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗This document explains everything you need to work on the Solarpunk Taskforce Platform:
how setup works, how Supabase integrates, and what to do for syncing, deployment, and automation.
docs/REBRAND_COMPLETE.md for the blue/brown theme coverage across components.AGENT_RULES.md first (shipping, migrations, RLS checklist). CLAUDE.md has a code map; docs/ROADMAP.md is the plan, docs/DESIGN.md the UI rules.docs/ (e.g., docs/IMPLEMENTATION.md, docs/manual-tests/); add any new Markdown docs under docs/ — only README.md stays at the repo root.docs/SECURITY_HARDENING_QUICKSTART.md and docs/SECURITY_HARDENING_SUMMARY.md; follow alongside the Supabase rules above.This project is a Next.js 15 + Supabase full-stack platform.
It uses:
All tools and credentials are automatically handled in the dev container.
You don’t need to install anything manually.
sb-sync.sh)Open http://localhost:3000 to view the app.
To run the project locally, you need to have Node.js and pnpm installed on your machine.
pnpm install
pnpm dev
The app will be available at http://localhost:3000.This project uses ESLint to enforce code quality.
pnpm lint
pnpm lint:fix
To build the project for production, use the following command:
pnpm build
This will create an optimized production build in the .next directory.
When a Codespace launches:
scripts/sb-sync.sh runs:
pnpm dev.Available via package.json:
| Script | Description |
|---|---|
pnpm dev | Start Next.js locally |
pnpm build | Build for production |
pnpm start | Start production server |
pnpm lint | Run ESLint |
pnpm lint:fix | Run ESLint and fix errors |
pnpm typecheck | Type-check with tsc --noEmit |
pnpm check:migrations | Verify migration files are strictly ordered |
pnpm sb:migration "name" | Create a new, correctly ordered migration file |
pnpm test:rls | RLS smoke test against a Supabase project (see below) |
pnpm db:test | Build a throwaway local DB from all migrations and sweep RLS (needs local Postgres binaries) |
pnpm sb:sync | Run Supabase sync script |
pnpm sb:diff | Show schema differences |
pnpm sb:login | Authenticate Supabase |
pnpm sb:link | Link local project to Supabase |
scripts/sb-sync.sh)This script keeps the local project in sync with Supabase.
It performs:
Run manually anytime:
pnpm sb:sync
This ensures your Supabase schema and types stay synchronized.
.github/workflows/ci.yml)Runs on every pull request to main. Four parallel jobs:
| Job | Command |
|---|---|
check-migrations | pnpm check:migrations (migration files strictly ordered) |
typecheck | pnpm typecheck |
lint | pnpm lint |
build | pnpm build (with dummy NEXT_PUBLIC_SUPABASE_* values) |
.github/workflows/supabase-db-auto.yml)Runs when a push to main changes supabase/** (or this workflow file), and can be started manually from the Actions tab. Only one run at a time; later runs wait in a queue (concurrency: supabase-db).
Steps:
SUPABASE_DB_URL and SUPABASE_ACCESS_TOKEN repository secrets are set.package.json (devDependencies.supabase).--include-all):
supabase db push --db-url $SUPABASE_DB_URL --yes
supabase gen types typescript --db-url $SUPABASE_DB_URL -s public -s auth -s storage > src/lib/database.types.ts
chore(types): regenerate DB types [skip ci], rebases onto the latest main and pushes. [skip ci] stops the commit from triggering the workflow again.It never generates migrations from the database: the repo is the source of truth for the schema.
Vercel automatically deploys whenever you push to main.
pnpm buildpnpm startsb-sync.sh is not executed during Vercel builds.pnpm-lock.yaml up to date with package.json to avoid:
ERR_PNPM_OUTDATED_LOCKFILE
After modifying dependencies, always run:
pnpm install
git add package.json pnpm-lock.yaml
git commit -m "update deps"
git push
This repo uses Git LFS for large files.
If you see:
This repository is configured for Git LFS but 'git-lfs' was not found.
Fix it with:
git lfs install --force
Sync everything:
pnpm sb:sync
Start local server:
pnpm dev
Reinstall dependencies:
pnpm install
Fix Git LFS hooks:
git lfs install --force
Manually regenerate Supabase types:
supabase gen types typescript --linked > src/lib/database.types.ts
Trigger the GitHub Supabase sync workflow: Go to GitHub → Actions → Supabase DB Auto → Run workflow
Configured in Codespaces and GitHub Secrets:
| Variable | Description |
|---|---|
SUPABASE_ACCESS_TOKEN | Supabase service access token |
SUPABASE_PROJECT_REF | Supabase project reference ID |
SUPABASE_DB_URL | Supabase database connection URL |
For local development you also need the Supabase client credentials that the Next.js app uses to fetch data:
NEXT_PUBLIC_SUPABASE_URL.NEXT_PUBLIC_SUPABASE_ANON_KEY..env.local (or to your deployment environment) and
restart the dev server.If either variable is missing the admin approvals page will now show a warning
instead of crashing, because the new src/lib/supabaseConfig.ts helper refuses
to create Supabase clients without a complete configuration.
The moderation tooling now relies on three Supabase-facing pieces:
src/app/api/admin/projects/unapprove/route.ts is an authenticated API route
that lets admins move a project from "approved" back to "pending". It returns
a clear error if the Supabase credentials above are not configured.src/lib/supabaseConfig.ts centralises Supabase environment validation so the
browser and server clients fail fast with actionable messages.enforce_moderation_by_admin trigger on public.projects (latest version in
supabase/migrations/20260106130000_fix_enforce_moderation_trigger.sql) only lets
admins change the moderation status and stamps the approval/rejection audit fields.Migrations are applied to production automatically when they are merged to main
(see section 9); run pnpm sb:sync locally to regenerate types. Approving a
project in the admin UI will make it visible on the public map, and unapproving
it will move it back to the pending queue.
pnpm test:rls)scripts/rls-smoke.ts signs in as two test users and checks that row level
security on follow_edges keeps each user's follows to themselves (it creates
and deletes a follow between them). Run it against a staging/test project with
dedicated test accounts:
SUPABASE_URL=... SUPABASE_ANON_KEY=... \
SUPABASE_TEST_EMAIL_1=... SUPABASE_TEST_PASSWORD_1=... \
SUPABASE_TEST_EMAIL_2=... SUPABASE_TEST_PASSWORD_2=... \
pnpm test:rls
If NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY are set (e.g. in
.env.local exported to the shell) they take precedence over the SUPABASE_* variants. SQL-level manual tests live in supabase/tests/.
(The old db-sync.sh script has been removed; use pnpm sb:sync locally and the
GitHub Actions workflow for production.)
pnpm sb:sync
git commit -am "update schema/types"
git push