尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
MobiTed is a Bulgarian marketplace for car and vehicle classifieds: cars, SUVs, vans, trucks, motorcycles, caravans, campers, agricultural and construction machinery, trailers, parts, tyres and wheels. The interface is in Bulgarian and every price is in EUR.
It is a full product, not a mockup. Accounts, listings, images, search, favorites, saved searches, dealers, messaging, moderation and admin all keep their data in PostgreSQL. Paid promotions use a built-in demo payment provider. It needs no keys and never contacts a payment network.檢視完整 README ↗MobiTed is a Bulgarian marketplace for car and vehicle classifieds: cars, SUVs, vans, trucks, motorcycles, caravans, campers, agricultural and construction machinery, trailers, parts, tyres and wheels. The interface is in Bulgarian and every price is in EUR.
It is a full product, not a mockup. Accounts, listings, images, search, favorites, saved searches, dealers, messaging, moderation and admin all keep their data in PostgreSQL. Paid promotions use a built-in demo payment provider. It needs no keys and never contacts a payment network.
src/styles/globals.csssharp for validation and resizingSee docs/architecture.md for the design decisions.
corepack enable)pg_trgm extension. Docker Compose is provided.git clone <repository> mobited && cd mobited
pnpm install
cp .env.example .env # set AUTH_SECRET; DATABASE_URL already matches Docker Compose
docker compose up -d postgres # or point DATABASE_URL at your own PostgreSQL
pnpm db:migrate
pnpm db:seed
pnpm dev
Open http://localhost:3000.
pnpm db:seed creates these accounts. They are for development only and the password for all of them is MobiTed123!.
| Role | |
|---|---|
[email protected] | Super admin (all settings) |
[email protected] | Admin |
[email protected] | Moderator |
[email protected] | Dealer, owner of "Авто Сердика" |
[email protected] | Private user |
The seed also adds about 800 listings, 8 dealers, around 100 private sellers, favorites, conversations, reports and demo payments. It uses a fixed random seed, so every run produces the same content, but database ids change on every run: restart a running app server after reseeding. Seed listings use illustrated placeholder photos, which are generated by /media/demo/*.
If RESEND_API_KEY is not set, emails are not sent. Instead, each email is printed to the server log and saved to a development mailbox at http://localhost:3000/dev/poshta. Registration works the same way: open the mailbox and click the verification link. The mailbox is turned off in production.
If BLOB_READ_WRITE_TOKEN is not set, development uploads are saved to ./.uploads and served from /media/uploads/*. Production always uses Vercel Blob.
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL | yes | PostgreSQL connection string. On Neon or Supabase, use the pooled connection string. |
AUTH_SECRET | yes in production | Secret for sessions and tokens (openssl rand -base64 32) |
BLOB_READ_WRITE_TOKEN | yes in production | Vercel Blob token for image uploads |
APP_URL | no | Public base URL. On Vercel it is taken from the deployment URL. |
RESEND_API_KEY, EMAIL_FROM | no | Email delivery. Without them, emails are logged and stored in the dev mailbox. |
CRON_SECRET | recommended in production | Protects /api/cron/maintenance |
MOBITED_SKIP_EMAIL_VERIFICATION | no | 1 turns off email verification while no email provider is configured. New accounts are created as verified. |
Payments need no environment variables.
| Command | Description |
|---|---|
pnpm dev | Development server |
pnpm build / pnpm start | Production build and server |
pnpm lint | ESLint and the long-dash check |
pnpm typecheck | TypeScript |
pnpm test | Vitest unit and integration tests. Uses the mobited_test database, created automatically. |
pnpm test:e2e | Playwright end-to-end tests. Builds the app and uses a freshly seeded mobited_e2e database. |
pnpm db:generate | Generate a migration after changing src/db/schema |
pnpm db:migrate | Apply migrations |
pnpm db:setup | Apply migrations and fill empty reference tables (regions, categories, makes). Production-safe; Vercel runs it on every build. |
pnpm db:seed | Replace all data with the demo dataset. Refuses to run with NODE_ENV=production. |
pnpm db:reset | Drop all tables, then migrate and seed |
pnpm db:studio | Drizzle Studio |
pnpm test # unit + integration (needs PostgreSQL reachable with the DATABASE_URL credentials)
pnpm test:e2e # end-to-end
Both suites connect as the mobited user and need permission to create databases, which the Docker Compose user has. To use other databases, set TEST_DATABASE_URL or E2E_DATABASE_URL. To run E2E against a server that is already running, set E2E_BASE_URL=http://localhost:3000; this uses the data that server already has. If Playwright's bundled Chromium is not installed, run pnpm exec playwright install chromium or set PLAYWRIGHT_CHROMIUM_EXECUTABLE.
MobiTed is built for Vercel: no custom server, no local disk and no long-running processes. See docs/vercel-deployment.md.