Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Go Rides
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Go Ads service (www.goads.co.za).
Your everyday commute, sorted. Your driver. Your schedule. Your ride.
Go Rides is a subscription-based transport platform for South African commuters. Passengers set up their trips to work and back once, choose a verified regular driver, and pay monthly or from a prepaid ride balance. Go Rides books every ride a week ahead, lines up backup drivers, and sends reminders and updates on WhatsApp, SMS or email.
This repository is the first version: a mobile-first web app with passenger, driver, admin and employer dashboards.
npm install
npm run seed # demo accounts and two weeks of activity
npm start # http://localhost:3000
npm test # booking, billing and payment tests
Requires Node 22. The app is Express with a SQLite database (through the libSQL client, so the same code runs on a local file or a hosted Turso database), and needs no build step.
gorides123)| Role | |
|---|---|
[email protected] | Operations admin |
[email protected] | Passenger on the Daily Commuter plan, sharing rides |
[email protected] | Passenger sharing Thabo's car with Zanele |
[email protected] | Passenger using a prepaid ride balance |
[email protected] | Employee whose rides are paid by Ubuntu Logistics |
[email protected] | Driver (also lindiwe@, sipho@; ayanda@ is waiting for verification) |
[email protected] | Employer account |
| Need | Where it lives |
|---|---|
| Passenger registration with home, work, area, distance and emergency contact | /register |
| Recurring trips (for example Mon to Fri, 07:00 and 17:00) | Passenger → Schedule |
| Shared rides: neighbours on the same route share a car and pay less | Passenger → Schedule or Home |
| On-time Promise: late pickups and missed rides become ride credit automatically | settleTrip, creditMissedTrips in src/booking.js |
| Price Lock: the monthly price is fixed for the plan's period | Passenger → Plans & pay |
| Go Parcels: parcels ride along on scheduled commuter runs, delivered against a code | /parcels, src/parcels.js |
| Earnings forecast: drivers see the next 7 days of booked income | Driver → Today and Earnings |
| Installable web app with bottom navigation and offline screen | /app, public/manifest.webmanifest, public/sw.js |
| Live arrival detection and measured lateness | src/location.js, Driver → Today, Passenger → Your details |
| Gift cards: buy, pay, deliver by SMS/email, redeem into a ride balance; complimentary cards | /gift-cards, Admin → Gift cards, src/giftcards.js |
| Partnerships: application form and admin pipeline | /partnerships, Admin → Partners |
| How it works: the whole system from A to Z, using live settings | /how-it-works |
| Preferred driver and approved backup drivers | Passenger → Drivers |
| Automatic booking a week ahead, with backup allocation | src/booking.js |
| Monthly plans, prepaid ride packs, renewals and reminders | Passenger → Plans & pay, src/payments.js |
| Charging each completed trip to the plan, employer or ride balance | settleTrip in src/booking.js |
| Pickup reminders, driver changes, delays and arrival alerts | src/notify.js |
| Live driver location, shareable trip link for family, SOS button |
For each booked trip, pickDriver tries in order:
A driver qualifies only if they are approved, available at that time on that weekday, not on time off, and have no other trip within 60 minutes. If nobody qualifies, the trip shows as Finding driver, admins are alerted, and the next booking run (every five minutes) tries again. When a driver books time off or is suspended, their trips move to backups and passengers are told who is coming instead.
On-demand apps price each trip on the spot, send whichever driver is nearest, and leave drivers guessing about tomorrow. Because every Go Rides trip is planned, it can promise more:
promise_minutes (10 by default), the trip value goes back to the passenger as ride credit (an employer is simply not charged). A booked ride that never gets a driver is cancelled at pickup time and its fare credited. Go Rides carries the cost; the driver is still paid. How arrival is recorded (src/location.js):
parcel_capacity parcels a day. If a parcel's run is cancelled it moves to another run, and if no run is found by its day it is refunded.Passengers can choose to share their rides, at sign-up or later, for a discount on every fare (30% by default). Two sharers can ride in the same car when:
When booking a shared trip, Go Rides keeps the passenger's preferred driver if they are free, or their car still has a matching seat. Otherwise it fills cars that already carry matching sharers, fullest first, before using a new driver. Sharers pay the shared price even when nobody joins them, so the price is predictable. Solo passengers are never placed in a shared car.
The driver sees the order of pickups for each shared car, and each passenger sees the first names of the people they ride with. Drivers are paid their share of every passenger's fare, so a full car earns more than a solo trip. When someone stops sharing, their upcoming rides go back to the solo price. Any ride that can no longer stay in its car moves to another driver, and each person affected gets one message.
The admin overview shows the share of trips that were shared, the average riders per shared car, and how many passengers share in each area.
A passenger is only booked when they can pay for the ride: an active plan, an employer, or enough ride balance for the rides already booked.
All pricing is set by admins under Pricing and applies to new bookings. The defaults are placeholders to adjust against real costs:
Go Rides shares the Go Ads identity from www.goads.co.za:
public/brand/go-rides-logo.png keeps the "Go" (with the map-pin "o") from the Go Ads wordmark, and sets "rides" in Fredoka Bold in the same orange with a white outline. The favicon is the Go Ads pin mark, and the app icons are PNG versions of it.#ff4d00 (buttons, with black text), forest #072014 and mint #86ffb4, plus tints and shades of those greens for lines, secondary text and light panels. Warnings and errors use orange. A browser audit of every page confirms nothing else is rendered (the OpenStreetMap trip map is the one outside element).public/fonts/ under the SIL Open Font License.public/illustrations/ holds flat SVG drawings in the four colours. Photographs of your own drivers and cars can replace any of them./gift-cards): passengers and employers buy a card from R100 to R5,000 through the normal checkout. Once paid, the buyer sees a code such as GO-7KQ4-M2XP, and it is sent to the recipient by SMS and/or email. A passenger redeems it once into their ride balance; codes are forgiving about case and spacing, and repeated failed attempts are slowed down. Gift cards never expire, which meets the Consumer Protection Act's minimum of three years for prepaid vouchers. Admins see every card, the value not yet redeemed (owed as future rides), and can issue complimentary cards or cancel unused ones./partnerships): corporate transport, fleet owners and drivers, retail and logistics, schools and campuses, and advertising with Go Ads. Applications (with a hidden anti-spam field and POPIA consent) are stored, admins are notified and the applicant gets a confirmation email; admins move each one through new, contacted, active or declined, with notes.The footer's Go Group column links www.goads.co.za, www.gorides.co.za, Gift Cards and Partnerships, and the site is credited as managed and developed by Digitalx.
Go Rides is an installable web app (a PWA), so there is nothing to publish to an app store:
/app explains both, and phones see a dismissible install card.The repository deploys to Vercel as it is. Vercel detects the Express app in src/server.js and serves public/ from its CDN.
Without a database, Vercel runs a demo. Vercel's file system is temporary, so with no database connected, Go Rides keeps its data in a throwaway SQLite file, fills it with the sample accounts, and shows a Demo banner on every page. Anything saved there can disappear whenever Vercel starts a fresh copy of the app, and separate copies do not share data.
To keep real data, connect Turso:
TURSO_DATABASE_URL and TURSO_AUTH_TOKEN. If you create the database on turso.tech instead, add those two variables yourself.SETUP_CODE: any long random phrase, used once to create the admin account;CRON_SECRET: another long random phrase, which protects the booking job;SITE_URL: the address people use, if it is not the project's .vercel.app address./setup on the site, enter the setup code and create your admin account. The page then closes for good. Remove SETUP_CODE afterwards.Booking runs: Vercel only runs code while it answers a request. Go Rides books upcoming rides, sends pickup reminders and handles renewals when it is visited (at most every five minutes). vercel.json also runs it once a day through Vercel Cron, which is all the Hobby plan allows. Pickup reminders need a run every few minutes even when nobody is browsing, so either use a Pro plan and change the schedule in vercel.json to */5 * * * *, or ask a free service such as cron-job.org to call https://<your site>/api/cron every five minutes with the header Authorization: Bearer <CRON_SECRET>.
Preview links ask for a Vercel login. Vercel protects deployment URLs such as go-xxxx-digitalx1.vercel.app by default. The project's production domain is public. Change this under Settings > Deployment Protection.
SITE_URL=https://www.goads.co.za. The app's pages sit at the root of whatever address serves it (/login, /passenger and so on), so it cannot run on the same host as the existing Go Ads website. Serve it from a subdomain such as rides.goads.co.za, and link to it from www.goads.co.za. Set SITE_URL to whichever address it runs on, because trip-sharing links and PayFast callbacks use it..env (see .env.example). Until then, checkout is a clearly labelled test page. Plan renewals currently create a payment request each month. For automatic card debits, move to PayFast tokenised subscriptions.DATABASE_PATH a persistent disk and back the file up daily.src/
server.js Express app (Vercel's entry point), cron endpoint and booking trigger
db.js Database connection (local file or Turso), schema, default settings and plans
seed.js Demo accounts and sample history
booking.js Trip booking, driver allocation, reminders, billing, renewals
pricing.js Fares, plan and pack prices
payments.js PayFast checkout and notification handling
notify.js In-app, WhatsApp, SMS and email notifications
background.js Work that finishes after the response (Vercel waitUntil)
routes/ Public, passenger, driver, admin and business pages
views/ HTML templating and layout
public/ CSS, small client script (tracking, sharing, location), icon
test/ Node test runner tests
Passenger trip page, /t/<link> |
| Driver availability, time off, trip status updates, earnings | Driver dashboard |
| Driver verification (ID, licence, PrDP), suspension | Admin → Drivers |
| Dispatch: reassign or cancel trips, see trips without a driver | Admin → Trips |
| Ratings, complaints, SOS alerts, credits and refunds | Passenger trip page, Admin → Support / Passengers |
| Operations analytics: today, month, on-time rate, demand by area | Admin → Overview |
| Employer accounts: add staff, monthly report and invoice amount | /business |