OpenSakura
MekaHime's first AI companion, now open source. 26 emotions, her real voice, real-time replies and memory, running on your own PC. Discord mode coming soon.
翻譯準備中
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Moderated Q&A threads (text + voice notes) for the FAU Erlangen-Nürnberg PSA community
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A question-and-answer forum for Pakistani students, graduates and residents around FAU Erlangen-Nürnberg, run by the Pakistan Student Association community. People ask the questions that keep coming up in WhatsApp groups (residence permit, Anmeldung, courses, housing, jobs) and the answers stay easy to find. Anyone can read; you sign in to post; moderators approve every new thread. An independent student project, not affiliated with FAU.
Live site: https://fau-psa-forum.vercel.app
Full list: docs/features.md
main deploys), region London next to SupabaseYou need Node.js 22 and npm. Pick one path.
First, in both paths:
git clone https://github.com/PeinZero/fau-psa-forum.git
cd fau-psa-forum
cp .env.example .env.local
Never commit .env.local (it is git-ignored).
Create a free project at https://supabase.com/dashboard. Note the project ref (the part before .supabase.co in the project URL).
In Project Settings → API, copy the Project URL and the publishable (anon) key into .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://<ref>.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<publishable key>
NEXT_PUBLIC_SITE_URL=http://localhost:3000
In Authentication → URL Configuration, add http://localhost:3000/** to Redirect URLs. Without this the magic link will not bring you back to your local site.
Create the database tables:
npx supabase login
npx supabase link --project-ref <ref>
npx supabase db push
Install and start:
npm install
npm run dev
Open http://localhost:3000 and sign in once with your email (magic link). Supabase's built-in email sender allows only a few emails per hour, so if no mail arrives, wait and try again rather than clicking repeatedly.
Make yourself superadmin, so you can approve threads. Run this in the Supabase dashboard SQL editor:
update public.profiles set role = 'superadmin'
where id = (select id from auth.users where email = '<your email>');
Use a throwaway project for development, never the live one.
You need Docker running.
Start the local stack. The first start downloads images and applies supabase/migrations:
npx supabase start
Print the credentials:
npx supabase status -o env
Copy API_URL and ANON_KEY into .env.local (these are the same values CI exports):
NEXT_PUBLIC_SUPABASE_URL=<API_URL>
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<ANON_KEY>
NEXT_PUBLIC_SITE_URL=http://localhost:3000
Install and start, then open http://localhost:3000:
npm install
npm run dev
Sign in with your email. Local Supabase does not send real email; open the local inbox (Mailpit, http://127.0.0.1:54324) and click the link.
Make yourself superadmin with the SQL from Path A, run in Studio (http://127.0.0.1:54323) or with psql postgresql://postgres:[email protected]:54322/postgres.
Stop the stack with npx supabase stop.
| Command | What it does | Needs |
|---|---|---|
npm run dev | Dev server on port 3000 | .env.local |
npm run build | Production build | the three env names (any well-formed values work) |
npm run lint | ESLint | nothing |
npm run typecheck | next typegen and tsc --noEmit | nothing |
npm test | Vitest unit and component tests | nothing |
npm run test:db | RLS and trigger tests on PGlite (in-memory Postgres) | nothing |
npm run test:e2e | Playwright browser tests (paused in CI, run by hand) | local Supabase (Path B) plus E2E_SUPABASE_SERVICE_ROLE_KEY, see docs/testing.md |
src/app/: pages and routes (App Router)src/components/: React components; src/components/ui/ holds the shared UI primitivessrc/lib/: helpers, auth and Supabase clientssupabase/migrations/: database schema and RLS policiessupabase/tests/: PGlite tests for the database rulestests/e2e/: Playwright specsdocs/: project documentation, see below.github/workflows/: CIDocs index: