A rental is a size, not two dates
Each automobile rental app palms you a month grid and allows you to do the subtraction. Rovora palms you a stretch of highway with two grips on it: drag both one and the span between them is the rental. The day depend sits throughout the center of it, the speed band beneath lights up the second the span crosses three and 7 days, and the from-price is recomputed on each body of the drag.
Automotive rental, drawn not photographed
A Flutter UI equipment for renting a automobile: drag the times, choose the paint, mark the scuffs, drive off. No backend, no API key, no picture belongings — 20 screens that run the minute the archive is unzipped.
Runs out of the field
Demo Directions — the sign-in display is a mock and contacts no server, so any credentials are accepted. The fields arrive already stuffed in with [email protected] / demo1234 — simply faucet Check in. Clearing each fields and tapping it additionally works. There isn’t any account to register, no API key to enter and no community required. Onboarding has a Skip within the nook.
flutter pub get flutter run
That’s the entire setup. The mission sits on the root of the archive; there isn’t any wrapper folder to step into.
Runs the minute it’s unzipped
Two instructions and it’s on a tool. No server to start out, no key to stick, no account to create — and nothing to pay for past the merchandise itself.
- 20 screens, all wired up — no placeholders
- 2 dependencies —
getandcupertino_icons, and no Firebase wherever - 43 checks passing, and
flutter analyzestories zero points - 18 chapters of offline HTML documentation, with two GIFs of the interactions in movement
The rental rail
A month grid makes the motive force do the subtraction, then hides the quantity the worth activates. Right here the span between the 2 grips IS the rental.
- Drag both grip; the day depend follows
- 3+ and seven+ day bands mild up as you cross them
- The from-price is recomputed on each body
- The grips can by no means cross or meet
One widget, 429 strains: core/widgets/rental_rail.dart — drop it into any display that wants a span.
Each car is drawn
Faucet a swatch, the automobile modifications. Each car is a CustomPainter moderately than {a photograph} — 8 physique shapes, 24 pattern automobiles, 0 picture recordsdata in the complete bundle. That’s not a shortcut: it’s the purpose the paint swatches work in any respect, and it means re-skinning doesn’t imply commissioning twenty-four images.
The argument on the return desk, settled
The paper diagram each desk palms over, made tappable. Faucet the physique to drop a mark, faucet a mark to alter what it’s, maintain to take it off.
- Scratch — paintwork solely
- Dent — panel is pushed in
- Chip or crack — glass and lamps
Marks are saved as fractions of the physique, so that they keep on the identical panel at any measurement.
Each line carries the arithmetic behind it
- Final analysis — the headline day by day price × days
- Size credit score — one adverse line, by no means a hidden low cost
- Cowl and extras — per day × days, or as soon as for supply
- Tax — 9% of all the things above it
- Deposit — a maintain on the cardboard, by no means within the whole
It’s one pure operate, so the identical inputs give the identical receipt each time — which is why the bundled checks can assert on totals.
Desks, filters, 9 automobiles
Hours and the shuttle word — the issues a map pin omits. Filters apply on shut, so the record by no means strikes mid-tap. There’s intentionally no maps SDK within the bundle, which suggests no API key and no location permission on day one; Station carries lat/lng so that you can feed your individual map whenever you need one.
20 screens, all wired collectively
Cowl by extra · Booked · Digital key · Leases — plus onboarding, sign-in, sign-up, the one-time code, the desk picker, outcomes, car element, extras, the receipt, rental element, the handover examine, Saved, Profile and Settings. The digital key carries the registration plate as a plate, and there’s no QR code or barcode wherever within the equipment: the desk doesn’t scan your cellphone, it reads the plate.
Gentle and darkish, from the identical tokens
- 20 screens, GetX + Materials 3
- 18-chapter offline documentation
- 43 checks, analyze clear
- Three typefaces bundled, SIL OFL 1.1
- Gentle and darkish from one set of tokens
- Pattern forecourt of 24 automobiles
One toggle, each themes — and one file of coloration tokens behind each.
Connecting your individual API
No display imports the pattern information. Views discuss to controllers, controllers discuss to a few service courses, and solely these know the place something comes from — so pointing the equipment at an actual backend is a change to a few recordsdata, to not thirty. Their signatures already return Futures, and there’s no HTTP shopper bundled, so the equipment has no opinion so that you can unpick.
What is just not included
- No backend and no admin panel. No server, no database, no fleet-owner aspect. That is the motive force’s app.
- No actual authentication. Signal-in, sign-up and the one-time code are screens; they settle for something and navigate onwards.
- No cost processing. The cardboard on the receipt is ornament. Nothing is charged and no supplier is built-in.
- Nothing is saved. Knowledge lives in reminiscence for the session — shut the app and it returns to the pattern state.
- No maps or GPS. Desks are a listing with addresses, hours and a shuttle word.
- No push notifications. The switches in Settings are UI solely.
- Single language, left-to-right. Copy is English and hard-coded; no localization layer and no RTL cross.
- No Figma file. Each display is Flutter.
Necessities
- Flutter SDK 3.29 or newer, Dart 3.7+
- Android Studio or VS Code
- Android and iOS. An online construct works and is what the stay preview is constructed from.
- Nothing else — no third-party account, no API key, no paid service.
Necessary
Rovora is a person interface equipment: screens, state administration and a pattern information layer. It makes no community calls of any type and depends upon no paid service, so there’s nothing to enroll in and nothing to pay past the worth of this merchandise. When you later add maps, funds, push notifications or a backend, these are your accounts and your prices, not included right here.
The three bundled typefaces — Chakra Petch, IBM Plex Sans and Saira Stencil One — are printed below the SIL Open Font License 1.1, which allows use in a business utility together with redistribution inside it. Particulars and upstream sources are in belongings/fonts/LICENSES.txt.
Help
Questions on setting the equipment up, how a display is constructed, or re-skinning it are answered via this merchandise’s feedback web page. Merchandise help covers the code as shipped; it doesn’t cowl your backend, your API, or modifications you will have made to the code.
Changelog
v1.0 — first launch.

