CityWise: Your Smart Urban Companion.
CityWise is a comprehensive mobile application designed to improve urban living by providing real-time news, augmented reality (AR) navigation, mental health support, civic issue reporting, and live economic updates. This smart city companion is built in Kotlin and integrates multiple services to empower users with essential information and tools for modern city life.
CityWise was inspired by the need for a centralized platform where city dwellers can easily access essential information and services. The app combines advanced technology with social impact to enhance the quality of urban life, promote civic engagement, and provide real-time support for mental health and navigation.
-
Live News Updates: Get real-time news tailored to your city.
-
AR Navigation: Use augmented reality to navigate the city with ease.
-
Mental Health Chatbot: Access supportive resources through an empathetic chatbot.
-
Civil Issue Reporting: Report local issues to authorities directly.
-
Economic Data Insights: Stay informed with real-time GDP and economic metrics.
- Frontend: Kotlin (Jetpack Compose for UI)
- Backend: Node.js with Express, REST API
- Database: Firebase (cloud storage), Room Database (local storage)
- APIs:
- News API
- Government Data API for economic metrics
- Google Maps API for location and navigation
- Other Tools: ARCore (for AR features), Redis (for caching), Firebase Analytics (for tracking)
The app follows a modular microservices architecture, with each service handling a specific functionality. Here's a high-level overview:
- Client (Frontend): Handles user interaction and AR rendering.
- Backend: Manages API requests, user authentication, and microservices (news, chatbot, government data).
- Storage: Includes a main database for user data and Redis for caching frequently accessed data.
- External Services: Connects to external APIs for news, government data, and maps.
[Frontend Overview]
[1. Login Page]
To run CityWise locally, follow these steps:
- Android Studio for Kotlin development
- Node.js and npm for backend services
- API keys for News API, Google Maps API, and government data sources
-
Clone the repository:
git clone https://github.com/your-username/CityWise.git cd CityWise
-
Backend Setup:
- Navigate to the backend directory:
cd backend
- Install dependencies:
npm install
- Add your API keys in a
.env
file. - Start the backend server:
npm start
- Navigate to the backend directory:
-
Android Client Setup:
- Open the project in Android Studio.
- Add API keys for the necessary services in the
local.properties
file. - Build and run the app on an Android emulator or a physical device.
After setting up, you can explore the following functionalities:
- News: View live news updates from your city.
- AR Navigation: Use AR mode to navigate through the city.
- Chatbots: Access mental health resources or report civic issues directly.
- Economic Data: Check the latest economic indicators provided by government APIs.
Some key challenges we encountered include:
- API Integration: Managing multiple APIs with varied response formats and rate limits.
- AR Navigation Accuracy: Ensuring accurate alignment in real-world settings.
- Chatbot Development: Designing empathetic responses for the mental health chatbot.
Future plans for CityWise include:
- Enhanced Chatbot Capabilities: Broaden the chatbot’s scope for more comprehensive support.
- Public Transportation Data: Add live transit schedules and information.
- Emergency Alerts: Integrate emergency notifications for critical updates.
- Local Partnerships: Collaborate with city authorities for more localized features.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/YourFeatureName
- Make your changes and commit them:
git commit -m "Add YourFeatureName"
- Push to the branch:
git push origin feature/YourFeatureName
- Create a pull request.
This project is licensed under the MIT License. See the LICENSE file for more information.
If you have any questions, please feel free to reach out at [email protected].