HrRoadways is a comprehensive project designed to provide users with an intuitive platform to check bus routes, timings, and real-time updates for government bus services.
Make public bus info simple, reliable, and accessible to everyone — across languages and devices. HrRoadways aims to reduce travel friction by surfacing accurate routes, schedules, and live updates in a lightweight, easy-to-use web app.
Provide an inclusive, multilingual platform that:
-
Lets users quickly find bus routes, stops, and timings.
-
Delivers real-time status and useful alerts.
-
Enables community contributions for better local coverage.
-
Keeps privacy, performance, and accessibility as first-class concerns.
HrRoadways solves everyday transit friction by making government bus information easy to find, understand, and use.
- Problem solved: consolidates routes, timings, and live updates into one lightweight web app so commuters don’t need multiple sources.
- Multilingual by design: supports 13 Indian languages to serve diverse users across regions.
- Lightweight & fast: built with React + Vite and optimized for low bandwidth and mobile devices.
- Reliable data focus: integrates authoritative route/schedule sources and simple JSON-backed datasets for quick iteration.
- Accessibility & inclusivity: semantic UI, keyboard navigation, and language-first UX reduce barriers for all users.
- Community-driven: contributors can add places, translations, and local corrections to improve coverage.
- Privacy-conscious: no unnecessary tracking; minimal data collection with clear retention practices.
- Production-ready: easy to deploy, monitor, and scale with standard tooling (CI, hosting, backups).
| Technology | Purpose |
|---|---|
| React + Vite | Frontend framework & build tooling |
| React Router | Client-side routing |
| i18next | Internationalization |
| Tailwind CSS | Utility-first styling |
| Framer Motion | Smooth, production-ready animations |
| Profile | Name | Profile | Name | Profile | Name | Profile | Name |
|---|---|---|---|---|---|---|---|
![]() |
Keshav1605 | ![]() |
Soumyosish | ![]() |
anjaliitgit | ![]() |
Aripilli-Bhavana |
HrRoadways supports 13 Indian languages to serve users across India 🇮🇳
| Language | Code | Native Name |
|---|---|---|
| English | en | English |
| Hindi | hi | हिन्दी |
| Bengali | bn | বাংলা |
| Telugu | te | తెలుగు |
| Marathi | mr | मराठी |
| Tamil | ta | தமிழ் |
| Gujarati | gu | ગુજરાતી |
| Kannada | kn | ಕನ್ನಡ |
| Malayalam | ml | മലയാളം |
| Punjabi | pa | ਪੰਜਾਬੀ |
| Oriya | or | ଓଡ଼ିଆ |
| Assamese | as | অসমীয়া |
| Urdu | ur | اردو |
| Feature | Description |
|---|---|
| 🔤 Unicode Support | Handles multilingual text seamlessly |
| 🌐 Localization | Supports 13 Indian languages for wider reach |
| 🗂️ Language Files | Each language stored in separate JSON for scalability |
| ⚡ Fast Switching | Toggle between languages instantly |
| 🛠️ Easy Maintenance | Simple structure for adding new languages |
The project uses react-i18next for translations. Files are in src/i18n/locales/.
To add new translations:
- Update the appropriate file in
src/i18n/locales/ - Use the
useTranslationhook:const { t } = useTranslation(); - Reference translations with:
{t('key.subkey')}
HrRoadways/ ├── Databases/ │ └── State_Database/ ├── src/ │ ├── components/ │ └── assets/
-
Json Database hosting link - https://jsonblob.com/api/jsonBlob/1333092652136194048
- Clone the repository:
git clone https://github.com/NishantRana07/HrRoadways.git
- Navigate to the project directory and install dependencies:
npm install
- Run the development server to access the site locally:
npm run dev
A centralized repository to store and manage information about popular places across various locations.
To add popular places to the repository, follow the format specified below:
Places/ ├── Location/ │ └── Location.json
{
"location": "City or Region Name",
"places": [
{
"name": "Place Name",
"category": "Category (e.g., Historical, Restaurant, Park, etc.)",
"description": "A brief description of the place.",
"latitude": "Latitude Coordinate",
"longitude": "Longitude Coordinate"
}
]
}Here is an example of how to add a location:
File: Places/NewYork/NewYork.json
{
"location": "New York",
"places": [
{
"name": "Central Park",
"category": "Park",
"description": "A large public park in New York City, featuring lakes, gardens, and walking trails.",
"latitude": "40.785091",
"longitude": "-73.968285"
},
{
"name": "Statue of Liberty",
"category": "Historical",
"description": "An iconic symbol of freedom and democracy located on Liberty Island.",
"latitude": "40.689247",
"longitude": "-74.044502"
}
]
}<h1 align="center">Contributing & Translation Guidelines</h1>
<h4 align="center">
Guidelines for contributing to the repository, ensuring Hindi translations, and keeping the codebase updated.
</h4>
## Contributing
If you are adding content to the site or creating new pages, please:
- Apply logic for Hindi translation and add translations for all words.
- Use PNG or JPG files for minimal size and always compress images.
- Ensure that your forked repository is up to date before submitting a pull request.
### Steps for Contributing
#### 1. Fork the Repository:
Click on the **Fork** button at the top right of the repository page.
#### 2. Clone the Forked Repository:
```bash
git clone https://github.com/your-username/HrRoadways.gitgit checkout -b your-branch-name- Apply the Hindi translation logic.
- Compress images before uploading.
git add .
git commit -m "Describe your changes"git push origin your-branch-nameGo to the original repository and click New Pull Request.
Before making a pull request, ensure that your forked repository is up to date.
git remote add upstream https://github.com/NishantRana07/HrRoadways.gitgit fetch upstreamgit checkout main
git merge upstream/maingit push origin mainBy following these steps, your pull request will be based on the latest code.
The HrRoadways project supports bilingual functionality (English & Hindi). This is achieved through translation logic built into components.
Each component maintains translations for both languages:
const translations = {
en: { heading: "Your English Heading" },
hi: { heading: "आपका हिंदी शीर्षक" },
};A state variable (isHindi) toggles between languages.
const [isHindi, setIsHindi] = useState(false);
const currentLanguage = isHindi ? translations.hi : translations.en;const handleToggleLanguage = () => setIsHindi(!isHindi);-
Define Translations:
const translations = { en: { description: "Your English Description" }, hi: { description: "आपका हिंदी विवरण" }, };
-
Use the Translations:
<p>{currentLanguage.description}</p>
const translations = {
en: {
heading: "Haryana Roadways - Your Own Bus Service",
button: "Search Buses",
},
hi: {
heading: "हरियाणा रोडवेज - आपकी अपनी बस सेवा",
button: "बसें खोजें",
},
};
const currentLanguage = isHindi ? translations.hi : translations.en;
return (
<div>
<h1>{currentLanguage.heading}</h1>
<button>{currentLanguage.button}</button>
</div>
);App won't start (dev)
-
Check Node version (use Node 16+).
-
Run npm install in repo root (or frontend folder if separated).
-
Ensure dev server port not in use. Kill conflicting process or change port.
-
Missing translations or UI shows keys
-
Confirm locale JSON files exist under src/i18n/locales/.
-
Restart dev server after adding new keys.
-
Use useTranslation() properly and call t('namespace.key').
-
Data not loading (API/DB)
-
Verify the JSON/DB endpoint is reachable (check CORS).
-
If using a hosted JSON blob, ensure the URL is correct and public.
-
Inspect browser console / network tab for 4xx/5xx responses.
-
Images fail to upload or display
-
Confirm storage URL/CORS settings.
-
Check file size limits and client-side compression.
-
Language switch not persisting
-
Make sure selected language is saved to localStorage or user profile.
-
Ensure state is read on app init before rendering locale-dependent components.
-
Build/Production issues
-
Verify environment variables for production (API base URL, any keys).
-
Run a local production build (npm run build) and serve the dist to reproduce.




