Обяви за нови и употребявани автомобили, джипове, бусове, мотоциклети и техника в България. Цени в евро.
Translation pending
CommerceTypeScript · CSSGitHub @tkurtevOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
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.Read the full 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.