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。 以下為已儲存的摘錄。
A concept prototype for a Referral Status System — a way for a job seeker to
request a referral through their network and follow its status transparently,
without repeatedly nudging the referrer.
Concept prototype — not affiliated with or endorsed by LinkedIn.
Built for a portfolio demo only. It uses the LinkedIn logo, colours and system
font, with mobile patterns matched to the LinkedIn iOS app (via Mobbin), so the
concept can be judged in context. The in-app footer keeps the disclaimer visible.檢視完整 README ↗A concept prototype for a Referral Status System — a way for a job seeker to request a referral through their network and follow its status transparently, without repeatedly nudging the referrer.
Concept prototype — not affiliated with or endorsed by LinkedIn. Built for a portfolio demo only. It uses the LinkedIn logo, colours and system font, with mobile patterns matched to the LinkedIn iOS app (via Mobbin), so the concept can be judged in context. The in-app footer keeps the disclaimer visible.
lucide-react iconslocalStorage (survives refresh)npm install
npm run dev # http://localhost:5173
npm run build # type-check + production build
npm run preview # preview the production build
There is no auth. A role switcher in the top bar (a demo-only control) flips
between the two perspectives that share the same localStorage data:
| Route | Role | Purpose |
|---|---|---|
/messaging | Both | Inbox + 1:1 threads with the inline Referral Request card |
/jobs | Requester | Job Tracker: ask a connection at the company for a referral |
/compose | Requester | Create a Referral Request (job + resume required → review → send) |
/status/:id | Both | Current status, what it means, full history; Withdraw (requester) / update (referrer) |
/notifications | Both | Status updates land here for the requester, with an unread badge on the bell |
/my-jobs | Requester | List of all the requester's referral requests |
/feedback | Facilitator | Test responses saved in this browser, with CSV export (not linked in the UI) |
The stored values follow the PRD object model; people see plain labels.
| Stored | Shown as | Who sets it | Meaning |
|---|---|---|---|
| Pending | Sent | System, on creation | Waiting on the referrer |
| Considering | Looking into it | Referrer | Seen and being worked on; still open |
| No Update Received | No reply yet | System only | The referrer has not answered a Sent request for seven days (a design assumption; the timer is not built, the state is staged). It never replaces Looking into it; reversible by any later update |
| Referred | Referred | Referrer | Done: the referral was made (final) |
| Unable to Refer | Can’t refer | Referrer | Done: the referrer can’t refer this time (final) |
| Withdrawn | Withdrawn | Requester | The requester no longer needs it |
First-time visitors get a 4-screen intro, then a dark guide bar under the header names their next step through the whole journey (ask as Albin → switch to Alex → respond → switch back → see the update). When they reach the final status, a short survey opens: experience rating, whether the feature is useful and why, and what could be better.
Each browser tab counts as one visit. If a new visit finds a finished journey, or one idle for 30+ minutes, it starts fresh automatically; if someone stopped mid-way recently, it asks whether to continue or start fresh. A refresh never resets progress, and collected feedback is never cleared.
Responses are always saved in the tester's browser (see /feedback). To collect
them from remote testers, create a free Formspree form
and set its URL as an environment variable (locally in .env.local, and in
Vercel under Project → Settings → Environment Variables):
VITE_FEEDBACK_ENDPOINT=https://formspree.io/f/yourFormId
?fail=1 makes the next send fail.StatusUpdate (single source of truth — avoids the two-sources-of-truth bug).ALLOWED_TRANSITIONS is the single source of truth for which status-change
actions render anywhere in the app. Terminal states offer no actions.No Update Received can move back to
Considering, Referred, or Unable to Refer — a later human action always wins.Withdrawn is treated as terminal here, but no UI asserts permanence — that
product decision is deliberately left open.These decisions trace to the source PRD (kept alongside the project handoff).