Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
해커톤·기업심사를 한 플랫폼에서 운영한다. 기업은 단계별 자료를 제출하고, 심사위원은 동의서 서명 후 자료 열람·평가를 하며, 관리자는 전 과정을 실시간으로 본다. • 운영 사이트: https://intween-judging.vercel.app Vello·입찰 대응 센터와 분리된 독립 사이트. • 요구사항 원문: docs/SPEC.md (사이트맵·개발 가이드) • 구현 규약·URL↔화면 ID 대응: docs/DEV_NOTES.md • 개발 인수인계서(운영 상태·코드 구조·남은 작업): docs/HANDOVER.md查看完整 README ↗
해커톤·기업심사를 한 플랫폼에서 운영한다. 기업은 단계별 자료를 제출하고, 심사위원은 동의서 서명 후 자료 열람·평가를 하며, 관리자는 전 과정을 실시간으로 본다.
운영 사이트: https://intween-judging.vercel.app Vello·입찰 대응 센터와 분리된 독립 사이트.
요구사항 원문: docs/SPEC.md (사이트맵·개발 가이드)
구현 규약·URL↔화면 ID 대응: docs/DEV_NOTES.md
개발 인수인계서(운영 상태·코드 구조·남은 작업): docs/HANDOVER.md
| 영역 | 선택 |
|---|---|
| 프론트·서버 | Next.js 14 (App Router), TypeScript |
| UI | Tailwind + shadcn 스타일 컴포넌트(components/ui), Pretendard, 브랜드 컬러 테마 변수 |
| 백엔드 | Supabase — Auth(초대·비밀번호·TOTP), Postgres(RLS), Storage(비공개 버킷), Realtime, Cron |
| 문서 | PDF.js(열람·워터마크), pdf-lib(서명 PDF·평가표·심사평), exceljs(결과표), jszip(서명본·증빙 패키지) |
| 서명 | signature_pad (모두싸인 등으로 교체 가능하도록 서버 API 분리) |
| 알림 | n8n 웹훅 (N8N_WEBHOOK_URL) — 메일·카카오·슬랙 발송은 n8n에서 |
npx supabase link --project-ref <ref> && npx supabase db push
또는 SQL Editor에서 supabase/migrations/*.sql 을 파일명 순서대로 실행https://<도메인>/auth/confirm 추가supabase/templates/*.html 참고)
{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=invite&next=/invite{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery&next=/reset-password/updatepg_cron 확장이 켜져 있으면 마이그레이션이 5분 주기 단계 자동 전환 작업을 등록한다
(Database → Extensions 에서 pg_cron 활성화 후 3번 마이그레이션 재실행).env.example 을 .env.local 로 복사해 채운다. Vercel 은 Project Settings → Environment Variables.
| 변수 | 설명 |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase API |
SUPABASE_SERVICE_ROLE_KEY | 서버 전용 (초대, 서명 URL 발급) |
NEXT_PUBLIC_SITE_URL | 초대·재설정 메일 리다이렉트 기준 주소 |
PAYMENT_ENC_KEY | 정산 정보 암호화 키 (openssl rand -base64 32) — 분실 시 복호화 불가 |
N8N_WEBHOOK_URL, N8N_WEBHOOK_SECRET | 이벤트 웹훅 (비우면 전송 생략) |
PPTX_CONVERT_URL | PPTX→PDF 변환 서비스 (Gotenberg /forms/libreoffice/convert 호환, 선택) |
CRON_SECRET | /api/cron/* 호출 인증 (Vercel Cron 이 자동 전송) |
REQUIRE_ADMIN_MFA | 관리자 OTP 강제 (기본 true. 모의 심사 테스트 때만 false) |
npm install
npm run dev # http://localhost:3000
npm run seed # 모의 심사 데이터: 가상 기업 5, 심사위원 3, 관리자 1
시드 계정: [email protected], company1~5@…, judge1~3@… / 비밀번호 Intween!2026
(SEED_PASSWORD, SEED_EMAIL_DOMAIN 으로 변경 가능).
Vercel → Add New → Project → mindleader9/intween-judging import → 환경변수 입력 → Deploy. (Root Directory 는 기본값 그대로)
vercel.json 의 Cron(일일 리마인드, 보유기간 경과 자동 파기)이 함께 등록된다.
npm test # 점수 산정 단위 테스트 (과락·정규화·최고/최저 제외·가감점 상한·동점)
npm run test:db # 로컬 Postgres 16 으로 마이그레이션 적용 + RLS·트리거 QA 시나리오 검증
npm run typecheck
test:db 가 확인하는 QA 항목: Q1(타 기업 파일 차단), Q2(접수기간 외 업로드 거부), Q3/Q4(미서명·미배정 열람 차단),
Q6(배점 초과 차단), Q7(확정 후 수정 거부), Q12(블라인드 마스킹), Q16(이의신청 기간), 감사로그 이전→새 값 기록,
이해충돌 신고 즉시 제외, 프로그램 복제, Cron 자동 전환.
is_admin(), 서명 여부 has_signed_all().v_companies_blind, v_judge_submissions)로만 조회. 타 심사위원 점수 비노출.audit_logs 에 기록 (누가·언제·이전→새 값·IP). 감사로그는 수정·삭제 불가.profiles.can_pay)만 복호화 + 열람 로그.PPTX_CONVERT_URL(Gotenberg 등)이 없으면 변환하지 않으며, 심사위원 뷰어에는 'PDF 변환본 없음' 안내가 표시된다./api/consent/sign, /api/eval/submit)가 분리돼 있어 교체 가능하지만 연동 자체는 미구현.