Table of Contents
A bus search application for providing bus information in Taiwan.
Which let you:
- Find bus station or route information by search terms.
- Find the closest bus station near you by searching your location.
Our goal is providing more easiest and fastest way to get the bus information, with clean UI / UX and reliable software system.
-
System
- System will save your preference by default, and keep it 1 day.
- If any error occur, system will that you knows what happened by send you notification.
- System will ask your geolocation, but not force you.
- System will let you know they are busy by give you a cute car animation.
-
Home Page
-
Search
User can search by terms using search bar,
We make user interface as simple as possible to reduce the complexity of using, which depends on Hick's law.
-
Recommand Search
We provide
recommand search
results when page load, which using user current position by default. -
Realtime Search
We provide
realtime search
when user typing, which will update the recommand search on the fly. -
Fuzzy Search
When user doesn't get the result they want, they can just hit
search submit
or hitenter
, system will provide the search results for them, which implementfuzzy search
behind the scene.The priority of search below:
- if
term
match theroute name
exactly or there's only oneroute
result, will navigate toroute
with route id. - if
term
match thestation name
exactly or there's only onestation
result, will navigate tostation
with station id. - if there have many
stations
in results, will navigate tolocations
with station results. - if there have many
routes
in results without anystations
, will stay athome
but highlight the match results below. - if there's no match,
will navigate to
notfound
with yourterm
.
- if
-
Recently Search
When user navigate to the result, system will save the search history automatically, and present on the UI. system will keep your record 7 days, after that will expired.
-
-
Map
- Was implemented by
leaflet
,react-leaflet
andmapbox
. - We using
light-v10
mapbox style.
- Was implemented by
-
Location Page
-
Fuzzy Result
When system get multiple
stations
results, will lead user tolocations
page, user have a right to can choose the results by themself. -
Nearby
User can find nearby
stations
by specifylocation
. -
URL
You can send
url
link to your friends, system will give them same result as yours. -
Station List
You can click
station
in list to navigate. -
Map
- We will give you
marker
withnumber
on top, which map to the index of result list. - You can click
marker
to navigate.
- We will give you
-
-
Station Page
-
URL
You can send
url
link to your friends, system will give them same result as yours. -
Routes List
-
Routes information in every item will show:
- Route name
- Next arrival time
- Route departure and destination
-
We provide current trip status below:
- Default
- Not Depart
- Skipped
- Terminate
- Unscheduled
-
Arrival Time
System will give you next arrival time every 5 seconds.
-
-
Map
- We highlight the
marker
which you currently selected, withstation name
on top. - We will give you
nearby station
withnumber
on top, which map to the index of result list. - You can navigate to
nearby station
with clicknearby station marker
.
- We highlight the
-
-
Route Page
-
URL
You can send
url
link to your friends, system will give them same result as yours. -
Map
- We give user
current position
which depends on Geolocation from user's device. - We will give you
station marker
bydirection
you currently selected. - We will give you
station marker
withnumber
on top, which map to the index of result list. - When user
zoom-in
thenumber
andname
will show on top ofstation marker
. - You can navigate to
station arrival time
with click onstation marker
. - We will give you
route path
.
- We give user
-
Station List
-
A tabs for changing
sub routes
between multipledirection
. -
Station information in every item will show:
- Station name
- Next arrival time
- Trip Status
-
A toggle for changing
arrival time
betweenremain
oractual
time. -
When user click on
station
will changemap
current focusmarker
.
-
-
Route Information
-
A tabs for navigate
section
in information page. -
Route name
-
Departure and Destination
-
Serve Location
-
Payment
-
Schedule
- Weekday
- Weekend
- Flexible Timetable
- Fixed Timetable
-
-
React based project with Typescript.
- Vite
- Tailwindcss
- React
- React Router
- Redux with RTK-Toolkit
- Leaflet
- Mapbox API
- Framer Motion
- date-fns
- ramda
- Vercel
Python with FastAPI Framework.
- Poetry
- FastAPI
- Google Geocoding
- Redis
- GCP CloudRun
Please make sure you already have:
npm install
or using
yarn
npm run dev
or using
yarn dev
which will open https://localhost:3000 for this project,
NOTICE
Because we using Geolocation API
,
this feature is available only in secure contexts (HTTPS),
please make sure run on https
for local development.
See the open issues for a list of proposed features (and known issues).
- Top Feature Requests (Add your votes using the 👍 reaction)
- Top Bugs (Add your votes using the 👍 reaction)
- Newest Bugs
Reach out to the maintainer at one of the following places:
- GitHub Discussions
- Contact options listed on this GitHub profile
If you want to say thank you or/and support active development of Taiwan Bus Search:
- Add a GitHub Star to the project.
- Tweet about the Taiwan Bus Search.
- Write interesting articles about the project on Dev.to, Medium or your personal blog.
Together, we can make Taiwan Bus Search better!
First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please read our contribution guidelines, and thank you for being involved!
For a full list of all authors and contributors, see the contributors page.
Taiwan Bus Search follows good practices of security, but 100% security cannot be assured. Taiwan Bus Search is provided "as is" without any warranty. Use at your own risk.
For more information and to report security issues, please refer to our security documentation.
This project is licensed under the GNU General Public License v3.
See LICENSE for more information.
Thanks you very much, can't bring this project out without: