尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A test version of a rideshare app for West Palm Beach. One phone requests a ride, another accepts it and drives, and both follow the trip with live GPS to a receipt. It is a plain web app (no build step) that also installs as an app and can be packaged for Google Play.
Status: prototype for a few known testers. Not for public release. No payments.查看完整 README ↗A test version of a rideshare app for West Palm Beach. One phone requests a ride, another accepts it and drives, and both follow the trip with live GPS to a receipt. It is a plain web app (no build step) that also installs as an app and can be packaged for Google Play.
Status: prototype for a few known testers. Not for public release. No payments.
| Piece | What it does |
|---|---|
index.html, styles.css | The screens: home, rider, driver. |
app.js | All app logic (ES module, no framework). |
config.js | Firebase settings (project rapid-wagon), SDK version, Google Maps key and Map ID. Not secret; the Maps key is restricted to this website. |
firestore.rules | Database access rules. Paste into Firebase console → Firestore → Rules. |
manifest.webmanifest, sw.js, icons/ | Makes it an installable web app (needed for Google Play packaging). |
privacy.html | Privacy page, required for the Play listing. |
Services:
www.gstatic.com/firebasejs/<version>/.v=weekly): the map with Advanced Markers, Place Autocomplete (Places API New, with session tokens) for typed addresses, and the Routes library (Route.computeRoutes, traffic-unaware, so it bills as Essentials) for road routes. The key is restricted to https://wagonprototype.github.io/* and to those three APIs.watchPosition, high accuracy) for GPS.rides/{autoId}
| Field | Notes |
|---|---|
riderUid, riderName | Set by the rider at creation. |
pickup, dropoff | {id, name, lat, lng}. |
fare, miles, minutes | Upfront quote from the Google road route (falls back to straight line × 1.3), sample prices. |
route | {poly, meters, seconds}: planned road route pickup → destination, Google encoded polyline. |
approach | Same shape: the driver's road route to the pickup, written by the driver's phone after accepting. |
trail | Encoded polyline of where the car actually drove during the trip, written by the driver's phone. |
status | requested → accepted → arrived → in_progress → completed; or cancelled. A driver can release a ride back to requested. |
driverUid, driver | driver = {name, car, plate, photo}; photo is a 128 px JPEG data URL. |
driverLoc | {lat, lng, at}. Updated by the driver's phone every ~4 s while moving during a ride. |
createdAt, acceptedAt, arrivedAt, startedAt, completedAt, cancelledAt, releasedAt | Client clock, milliseconds. |
tripMiles, tripMinutes | Measured on the driver's phone from GPS during the trip. |
cancelledBy | rider or expired (requests older than 45 min). |
rating | 1–5, from the rider. |
drivers/{uid}: {name, car, plate, photo, online, loc:{lat,lng}, updatedAt}. A driver counts as online for 3 minutes after the last update; the phone sends one at least every 45 s while the app is open.
Queries (all single-field, no composite indexes needed): rides by riderUid, rides by driverUid, rides with status == requested (limit 50), drivers with online == true. Accepting a ride uses a transaction so two drivers can't take the same request.
DEMO_MAP_ID. Create a real Map ID in Google Cloud (Map Management) and put it in config.js before launch.username.github.io repository (root of the domain, which Google Play's asset links file needs). .nojekyll makes GitHub serve the .well-known folder.firestore.rules, Anonymous sign-in enabled.python3 -m http.server 8080 in this folder, then open http://localhost:8080. Browsers allow GPS on localhost; anywhere else needs HTTPS.Package with PWABuilder (pwabuilder.com) using the site URL, Android package. It produces the app bundle, a signing key (keep it safe; it can't be replaced), and an assetlinks.json file. Put that file at .well-known/assetlinks.json in this repo so the app opens without a browser address bar. Upload the bundle to Internal testing in Play Console.