Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기ダンススタジオ向けスクール運営管理 SaaS
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
ダンススタジオ向けのスクール運営管理 SaaS。運営: 合同会社セキレイ。 設計書: docs/studio-flow-design.md 実装ルール: CLAUDE.md http://localhost:3000 を開く。 .env.example を参照。SUPABASE_SERVICE_ROLE_KEY は RLS をバイパスするため、 サーバー側でのみ使用し、NEXT_PUBLIC_ を付けないこと。 Resend の API キーは Next.js 側ではなく、Supabase Edge Function のシークレットに設定する。 マイグレーションは supabase/migrations/ に置く。適用状況は supabase/migrations/APPLIED.md で管理する。 MarcheBase と同じく、Supabase ダッシュボードの SQL Editor に貼り付けて 上から順に実行する。適用したら APPLIED.md を必ず更新すること。 適用済みのファイルは編集しない。修正が必要なら新しいファイルを追加する。 画面に出すサービス名は src/config/app.ts の1か所だけで定義する。 各画面に直接書かないこと。名称が決まったら、このファイルを書き換えれば全画面に反映される。README 전문 보기 ↗
ダンススタジオ向けのスクール運営管理 SaaS。運営: 合同会社セキレイ。
設計書: docs/studio-flow-design.md 実装ルール: CLAUDE.md
| 領域 | 採用 |
|---|---|
| フレームワーク | Next.js 16 (App Router) + React 19 |
| 言語 | TypeScript |
| CSS | Tailwind CSS v4 |
| UI 補助 | lucide-react(アイコン)、recharts(グラフ) |
| DB / 認証 / Storage | Supabase(PostgreSQL + RLS) |
| サーバー処理 | Supabase Edge Functions (Deno) |
| 定期実行 | pg_cron + pg_net |
| メール | Resend(Edge Function 経由) |
| ホスティング | Vercel(main への push で自動デプロイ) |
npm install
cp .env.example .env.local # 値を埋める
npm run dev
.env.example を参照。SUPABASE_SERVICE_ROLE_KEY は RLS をバイパスするため、
サーバー側でのみ使用し、NEXT_PUBLIC_ を付けないこと。
Resend の API キーは Next.js 側ではなく、Supabase Edge Function のシークレットに設定する。
| コマンド | 内容 |
|---|---|
npm run dev | 開発サーバー起動 |
npm run build | 本番ビルド |
npm run start | ビルド済みアプリの起動 |
npm run lint | ESLint |
npm run typecheck | 型チェック(tsc --noEmit) |
docs/ 設計書
supabase/migrations/ DB マイグレーション(SQL)
supabase/functions/ Edge Functions(Deno。Next.js の型検査対象外)
public/ 静的ファイル(ロゴは Supabase Storage 側に置く)
src/app/ App Router
src/lib/supabase/ Supabase クライアント(client / server / admin)
src/lib/auth/ セッションとロールの判定
src/proxy.ts セッション更新(Next.js 16 で middleware から改称)
マイグレーションは supabase/migrations/ に置く。適用状況は
supabase/migrations/APPLIED.md で管理する。
MarcheBase と同じく、Supabase ダッシュボードの SQL Editor に貼り付けて 上から順に実行する。適用したら APPLIED.md を必ず更新すること。
適用済みのファイルは編集しない。修正が必要なら新しいファイルを追加する。
画面に出すサービス名は src/config/app.ts の1か所だけで定義する。 各画面に直接書かないこと。名称が決まったら、このファイルを書き換えれば全画面に反映される。
export const APP_NAME = "Studio Flow"; // 仮称
メールの差出人名だけは別。Edge Function は Deno という別の実行環境で動き、 このファイルを読めないため、Supabase のシークレットで設定する。
npx supabase secrets set --project-ref fterpqyvzeqcaltfkpuc MAIL_FROM="新しいサービス名 <noreply@ドメイン>"
スタジオ名が設定されているテナントでは、差出人名はそちらが優先される(設計書 11章)。
なお「サービス名」と「スタジオ名」は別物。前者はこの SaaS の名前で全テナント共通、
後者は契約したスタジオごとの値で brand_settings に入っている。
メール確認コード方式(パスワード不要・設計書 2章)。MarcheBase から移植した。
1. ログイン画面でメールアドレスを入力
2. Edge Function send-verification-code が6桁を発行し、Resend で送信
(コードは平文で保存せず、sha256 のハッシュだけを DB に置く)
3. 届いたコードを入力
4. Edge Function verify-code が照合し、magic link のトークンを返す
5. ブラウザが verifyOtp してセッションを Cookie に確立する
セッションは Cookie に置く(MarcheBase は localStorage)。設計書 3章の
「ロールはサーバーセッションから決定する」を満たすには、サーバー側から
セッションを読める必要があるため。@supabase/ssr を使う。
npx supabase functions deploy send-verification-code
npx supabase functions deploy verify-code
npx supabase functions deploy send-invoice-notice
npx supabase functions deploy send-trial-notice
npx supabase functions deploy send-event-invite
supabase link を通していない場合は、--project-ref <ref> を付けて
SUPABASE_ACCESS_TOKEN を環境変数で渡す。
Next.js の .env.local ではなく、Supabase 側に設定する。
ダッシュボードの Edge Functions → Secrets、または以下のコマンド。
npx supabase secrets set RESEND_API_KEY=... MAIL_FROM="Studio Flow <[email protected]>" ALLOWED_ORIGIN=http://localhost:3000 PUBLIC_SITE_URL=http://localhost:3000
| 名前 | 用途 |
|---|---|
RESEND_API_KEY | Resend の API キー |
MAIL_FROM | 送信元アドレス。表示名はスタジオ名で上書きされる(設計書 11章) |
ALLOWED_ORIGIN | CORS の許可元。カンマ区切りで複数可。* は開発時のみ |
PUBLIC_SITE_URL | メール本文のリンクに使う URL |
SUPABASE_URL と SUPABASE_SERVICE_ROLE_KEY は Supabase が自動で渡すため、
設定は不要。
設計書 3 章のとおり、マルチテナントの前提を崩さないこと。
organizations 以外の全業務テーブルに organization_id を必須列で持たせるorganization_id で絞り込む(RLS は保険であって一次防御ではない)/superadmin/* に分離するtimestamptz で UTC 保存、表示は Asia/Tokyo 固定設計書 9 章のフェーズ1のみ。9.1「やらないこと」には着手しない。