WallpaperMachine
The wallpapers you love. A new home on your Mac.
Organize bus and coach transport bookings end to end.
Translation pending
LifestyleTypeScript · CSSGitHub @aidesignikOnlineOwner 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 ↗MVP for a platform that lets a single bus/coach carrier run their booking pipeline end to end — client request → carrier offer → confirmed booking → generated documents — without phone calls and email back-and-forth.
This is the first build increment. See "Deferred to later increments" below for what's intentionally out of scope for now.
sr/en)@react-pdf/renderer for contract/confirmation/invoice PDFsPrerequisites: Node 20+, a local PostgreSQL 16 instance (or Docker).
cp .env.example .env
# start Postgres — either:
docker compose up -d
# or point DATABASE_URL in .env at an existing local Postgres
npm install
npx prisma migrate dev
npm run db:seed
npm run dev
Open http://localhost:3000 (redirects to /sr, switch to /en in the navbar).
npm run db:seed creates:
| Role | Password | |
|---|---|---|
| Admin | [email protected] | admin1234 |
| Carrier | [email protected] | carrier123 |
| Client | [email protected] | client123 |
The seeded carrier is pre-approved with a demo vehicle and driver, so you can log in and immediately submit a request as the client, then send an offer as the carrier.
User.role is CLIENT, CARRIER, or ADMIN. A new carrier signup creates a Carrier row with status: PENDING; an admin must approve it (/admin/carriers) before the carrier's dashboard, fleet, drivers, calendar, requests inbox and bookings become reachable — the carrier can still fill in their profile while pending.BookingRequest → any approved carrier can open it and submit an Offer (picking one of their vehicles/drivers, entering distance in km) → the system suggests a price (src/lib/pricing.ts) and blocks the offer if the chosen vehicle/driver conflicts with an existing confirmed booking (src/lib/availability.ts) → the client accepts one offer, which creates a Booking and auto-rejects the request's other pending offers → either side can generate and download PDF documents (confirmation, contract, invoice) for the booking.src/lib/distance.ts, src/lib/pricing.ts and src/lib/availability.ts are the deterministic stand-ins described in the product plan — swappable behind their current interfaces once a real routing/matching engine is built.src/lib/documents/generate.ts using @react-pdf/renderer, written to local disk under storage/documents/ (gitignored) behind a small storage abstraction (src/lib/documents/storage.ts) so swapping in S3/Blob storage later is a one-file change.Real AI dispatcher/matching, real maps/geocoding/routing API, e-invoicing/fiscalization, multi-carrier marketplace matching, payments, email/SMS notifications, a real file/photo upload pipeline, admin commission tracking and complaints handling, round-trip/multi-leg requests, automated request/offer expiry jobs.