尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Machmaso is a shared project developed by Agamir and Tomas on separate computers.
The current monochrome prototype uses Next.js App Router, TypeScript, Tailwind
CSS, Leaflet with OpenStreetMap tiles, marker clustering, Lucide icons, and EN/DE
controls. Listings are read server-side from Supabase, with built-in fictional
samples as a fallback; signed-in users can post actions. It is a prototype,
not a final application architecture or product specification. The original
hello.py and test_hello.py remain unchanged as a historical test scaffold.
Use Node.js 22 or newer and npm (tested with Node.js 24.17.0 and npm 11.13.0). From the repository root:
npm ci
cp .env.example .env.local # then fill in the Supabase values
npm run dev
Open http://127.0.0.1:3000. The development server binds to the local computer only. Each collaborator runs their own preview from their own checkout.
Listings are loaded server-side from the listings table of the Supabase
project "Machmalso". Anyone can browse. Visitors who want to post an action are
asked to sign in or create an account (email and password); the listing is then
inserted server-side with the signed-in user's session. The author is always
taken from the verified session, never from the browser. No service-role key is
used anywhere.
| Name | Where | Purpose |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | .env.local, Vercel | Project URL (Project Settings → API) |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | .env.local, Vercel | Publishable key (Project Settings → API Keys) |
NEXT_PUBLIC_SITE_URL | Vercel Production (optional locally) | Base URL for confirmation links, e.g. https://<your-domain> |
Copy .env.example to .env.local for local development. The publishable
key is designed to be public, but .env.local stays out of git (.env* is
ignored; only .env.example is committed). NEXT_PUBLIC_* values are inlined
at build time: restart npm run dev locally, and redeploy on Vercel after
changing them. Without NEXT_PUBLIC_SITE_URL, confirmation links use the
origin of the page where someone signed up (useful for Vercel previews).
Without the Supabase values, or if the request fails, the app falls back to the
built-in samples from createSamples() with a "demo data" notice, and posting
is disabled.
https://<your-domain>).http://127.0.0.1:3000/auth/confirm,
http://localhost:3000/auth/confirm, https://<your-domain>/auth/confirm,
and for Vercel previews https://*-<team-slug>.vercel.app/auth/confirm.{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=email&next={{ .RedirectTo }}.
This works even when the link is opened in another browser. The default
template also works (/auth/confirm handles its ?code= link), but only in
the browser where the account was created./auth/confirm only redirects to paths on this site; any other next value
falls back to /.
supabase/migrations/20261024161215_create_listings.sql (applied) creates
the table with check constraints matching lib/data.ts and Row Level
Security with a single policy that lets anyone SELECT.supabase/migrations/20261024180000_add_listing_authors.sql (not applied
yet) adds a nullable author_id referencing auth.users, reduces table
privileges to SELECT for everyone plus column-limited INSERT for
signed-in users, and adds a policy that only allows inserting listings whose
author_id is the inserting user. Until it is applied, browsing works and
posting shows a "not available yet" message.supabase/seed.sql inserts the 16 fictional listings (no author, fixed dates
in June 2027). It is safe to re-run. To set up a fresh project, run the
migrations in order and then the seed in the Supabase SQL editor.npm run lint
npm run typecheck
npm test
npm run build
npm test runs the Vitest unit tests for listing validation, ownership
mapping, auth input, and the confirmation redirect guard.
To preview the production build, stop the development server, then run:
npm run start
The production preview uses the same local URL. Run npm run format to format
the web source and setup documentation. The lockfile is shared; use npm ci
after pulling dependency changes.
YYYY-MM-DD strings, formatted without local timezone
conversion. Seeded Supabase listings use fixed dates; the built-in fallback
samples generate dates after the current Berlin calendar date on each page
load. Time ranges are wall-clock times in Europe/Berlin;
recurring schedules preserve local time across daylight-saving changes.next.config.ts only disables automatic framework edits to the shared
AGENTS.md; existing collaboration rules are preserved. No deployment
overrides or account settings have been added or changed.Agamir and Tomas work directly on main for ordinary project tasks. Pull
requests and approval from the other collaborator are not required. This
supersedes the previous PR-only workflow.
Read AGENTS.md, inspect the current branch and working tree, and check whether another local agent is actively working in the same checkout. Do not automatically switch branches or pull while another agent is working.
Fetch origin, safely switch to main, and update before editing:
git status --short --branch
git fetch origin
git switch main
git pull --ff-only origin main
Preserve all existing local changes and commits. Never discard or silently include unrelated work. If unrelated work or divergent history prevents safe synchronization, resolve the situation before proceeding without losing work.
Use a separate branch or worktree for simultaneous local tasks.
git diff --check; stage only the task's files and review the
staged diff, including git diff --cached --check.git push origin main. Do not routinely ask for another
confirmation. Explicit instructions such as "draft only", "do not commit",
or "do not push" override this default.If a push is rejected because the other collaborator pushed first, fetch and
integrate the latest origin/main. Rebase only this task's own unpublished
commits when safe; preserve unrelated work and never rewrite published history.
Resolve straightforward conflicts while preserving both collaborators' intent,
and ask about genuinely ambiguous conflicts. Repeat checks affected by the
integration, review the result, and retry a normal push.
Never force-push main, reset away work, or discard another collaborator's
changes. If repository rules reject direct pushes, report the exact restriction
without bypassing it or changing branch protection. Do not install background
synchronization, scheduled jobs, or Git hooks.
A normal push to main may trigger the existing Vercel production deployment.
Both collaborators authorize this as part of the default workflow, without a
routine extra confirmation. Deployment settings, paid services or purchases,
and destructive database operations require explicit authorization.
Report deployment status and preview URLs only when verified. A successful Git push alone is not proof of a successful deployment; otherwise report deployment as unverified.
Follow AGENTS.md for shared rules. Communicate with Codex and write
code, comments, commit messages, and shared documentation in English. Never
commit credentials or real .env files; keep only placeholders in .env.example.