TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Typeform-style form builder. Creators build, theme and publish
one-question-at-a-time forms; respondents fill them in anonymously,
with progress saved as they go. Creators see responses (including
unfinished ones), export CSV, and send completions to webhooks or
Google Sheets.
Built with Next.js (App Router), TypeScript, Tailwind + shadcn/ui and
Supabase (Postgres, Auth, Storage). See ARCHITECTURE.md
for how it fits together and DECISIONS.md for why.
Prerequisites: Node.js 20+, Docker, and the
Supabase CLI.README 전문 보기 ↗A Typeform-style form builder. Creators build, theme and publish one-question-at-a-time forms; respondents fill them in anonymously, with progress saved as they go. Creators see responses (including unfinished ones), export CSV, and send completions to webhooks or Google Sheets.
Built with Next.js (App Router), TypeScript, Tailwind + shadcn/ui and
Supabase (Postgres, Auth, Storage). See ARCHITECTURE.md
for how it fits together and DECISIONS.md for why.
Prerequisites: Node.js 20+, Docker, and the Supabase CLI.
npm install
supabase start # local Postgres/Auth/Storage + all migrations
cp .env.example .env.local # then fill in the Supabase values below
npm run db:seed-templates # optional: the template gallery
npm run dev # http://localhost:3000
supabase status -o env prints the local API_URL, ANON_KEY and
SERVICE_ROLE_KEY for NEXT_PUBLIC_SUPABASE_URL,
NEXT_PUBLIC_SUPABASE_ANON_KEY and SUPABASE_SERVICE_ROLE_KEY.
Everything else in .env.example is optional locally — integrations
that aren't configured show a "not set up" state instead of failing.
Emails sent by local Auth (signup confirmation, password reset) are caught by Inbucket at http://localhost:54324.
| Command | What it does |
|---|---|
npm run dev | Dev server |
npm run lint | ESLint |
npm run typecheck | Route types + tsc --noEmit |
npm run format:check | Prettier check (CI runs this) |
npm run test | Unit tests (Vitest) |
npm run test:integration | Integration tests against local Supabase |
npm run e2e | Playwright E2E against a production build |
npm run db:migrate | Push supabase/migrations to the linked project |
npm run db:types | Regenerate src/lib/supabase/database.types.ts |
First E2E run: npx playwright install chromium webkit. See
docs/testing.md for what each suite covers.
npm run db:migrate against it.
Set regions in vercel.json to the Vercel region nearest that
project (it's sin1, for a Singapore database) — pages make several
database calls each, so a far-away region makes everything slow..env.example in the host's secret store;
NEXT_PUBLIC_APP_URL must be the public origin (no trailing slash).<origin>/auth/confirm to Redirect URLs.
Signup-confirmation and password-reset links land there; if it's
missing, Supabase silently redirects to the Site URL instead and
the links never sign anyone in.vercel.json (Vercel Cron sends
Authorization: Bearer $CRON_SECRET automatically): webhook,
Google Sheets and custom-domain sweeps run daily (Vercel Hobby's
limit; on Pro, or any scheduler that can call the paths, run the
webhook and Sheets retry sweeps every 5 minutes and the domain check
every 30), plus the daily retention job that deletes expired unfinished responses and old rate-limit
rows. On other hosts, call the same /api/cron/* paths (GET or
POST) with that header.RESEND_API_KEY and EMAIL_FROM for owner notifications.X-Forwarded-For entry (visitors write it). On Vercel nothing is
needed. Elsewhere set CLIENT_IP_HEADER to a header your host
overwrites (cf-connecting-ip, fly-client-ip, …), or
TRUSTED_PROXY_HOPS to the number of proxies in front of the app.GET /api/cron/health with
Authorization: Bearer $CRON_SECRET: 200 healthy, 503 when
scheduled retries are overdue or uploads are stuck, with the reasons
in the body.src/domains/* — business logic per domain (forms, responses,
logic, webhooks, …); UI never bypasses these.src/app — routes: marketing, auth, dashboard, builder, the public
respondent runtime (/f/[slug]) and API handlers.supabase/migrations — the only source of schema truth (with RLS).docs/ — database, form schema, API and testing references.