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.
Translation pending
Tapasok: events, QR and RFID attendance, dues and announcements for student organizations, in one place. On the web and on Android.
BusinessTypeScript · C++GitHub @Recheese04OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗School/college organization management web app (Next.js, React, TypeScript, Tailwind, PostgreSQL, Prisma).
See tapasok-web-spec-new-database.md for the specification.
tapasok_dev.
Never point this project at a production database during development.cp .env.example .env and set DATABASE_URL for the dev database.npm install (runs prisma generate).npm run db:migrate — applies migrations in prisma/migrations to the dev database.npm run db:seed (development only; creates *@tapasok.test accounts, one per role,
in a [DEMO] organization; the generated password is printed once).npm run dev, then open http://localhost:3000 and sign in.Tests: create a second empty database named tapasok_test (owned by your dev role), set TEST_DATABASE_URL in .env, then npm test. The test run applies migrations to that database and refuses to run against any database whose name does not end in _test.
Other scripts: npm run lint, npm run typecheck, npm run build, npm run db:deploy (apply existing migrations without creating new ones), npm run db:studio.
Tables: users, sessions, organizations, organization_members, organization_join_codes, audit_logs. Schema: prisma/schema.prisma.
users.system_role is SYSTEM_ADMIN or USER. Organization roles (PRESIDENT, TREASURER, OFFICER, ADVISER, MEMBER) live on organization_members, so one person can hold different roles in different organizations.ended_at. Partial unique indexes (in the init migration SQL) allow one active membership per user per organization and one active president per organization.httpOnly, sameSite=lax, secure in production, validated against the database on every request.src/lib/auth/dal.ts, src/lib/permissions). Sidebar visibility (src/config/navigation.ts) is cosmetic only./users (system admins only): search, create, edit, deactivate/activate, and reset passwords. New accounts are always regular users; there is no UI or form field that grants system admin. Deactivation and password resets delete the user's sessions. Passwords are never displayed after creation; a generated password is shown once to the admin./join always creates a MEMBER membership; redemption is atomic, so the use limit cannot be exceeded under concurrency.tapasok-full-system-structure.md)Role rules: docs/permission-matrix.md (enforced from src/lib/permissions/policy.ts). Phase status: docs/phase-status.md.
/academic (school years, semesters, active term, colleges, departments, programs; archived, never deleted), organizations with scope and an
official adviser, one User Management page for students, faculty/staff and admins, with program, year level (kept per semester), RFID UID, photo and PSGC address, CSV import with one-time account setup links.POST /api/rfid/scan), student QR self check-in (/check-in), and officer scan or manual entry; closing a session marks expected students Absent;
excuses and corrections are audited.Register a terminal under Attendance (shows its key once). The terminal sends, for each card tap:
POST /api/rfid/scan
Authorization: Bearer <device key>
{"sessionId": "<session uuid>", "cardUid": "04A1B2C3"}
The response is {"ok":true,"status":"PRESENT"|"LATE","name":"<first name>"} or {"ok":false,"code":...,"message":...}. The endpoint is tested with simulated
requests only; no physical reader has been connected. Push notifications are not implemented; notifications are in-app.
New env vars: QR_SECRET (32+ random chars), APP_URL (encoded in check-in QR codes), STORAGE_DIR, TEST_DATABASE_URL. See .env.example.
Addresses use https://psgc.gitlab.io/api/ (live check: LIVE_PSGC=1 npx vitest run tests/psgc-live.test.ts). Times are Philippine time (UTC+8).