SkyFetch is a real-time weather application designed with a 6-layer Service-Oriented Architecture (SOA) to ensure modularity, scalability, and efficient data exchange. Users can input a city name to fetch live weather updates retrieved from the OpenWeather API. The application leverages multiple service layers, including SOAP and gRPC, to enhance interoperability and structured service communication.
- Modern User Interface: Developed with Vue.js for a responsive and intuitive user experience.
- Application Layer: Built using Express.js to manage data routing and API interactions.
- Real-Time Weather Data Integration: Fetches weather data from the OpenWeather API.
- 6-Layer SOA Architecture for Scalability & Maintainability:
- Frontend Layer: User interface for weather queries.
- Application Layer: Handles request processing and routing.
- Service Layer: Transforms and validates data for consistency.
- External API Layer: Manages integration with the OpenWeather API.
- SOAP Layer: Ensures structured communication using SOAP protocol.
- gRPC Layer: Provides high-performance RPC communication.
- Node.js 16 or higher
- NPM or Yarn
- OpenWeather API Key
npm install express cors axios soap @grpc/grpc-js @grpc/proto-loader
cd frontend_layer
npm install
node application_layer/index.js # Runs the core backend service
node soap_layer/soap.js # Starts the SOAP service
node grpc_layer/grpcserver.js # Runs the gRPC server
cd frontend_layer
npm run serve
Once all services are running, open your browser and navigate to http://localhost:8080 to interact with the application.
- Frontend Layer: Vue.js-based user interface for querying weather data.
- Application Layer: Express.js-based backend service handling requests and responses.
- Service Layer: Data transformation and validation layer to maintain integrity.
- External API Layer: Interfaces with OpenWeather API for real-time data retrieval.
- SOAP Layer: Enables structured and interoperable communication using SOAP.
- gRPC Layer: Facilitates fast and efficient remote procedure calls (RPC).
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Make your changes and commit (
git commit -m 'Add new feature'
). - Push to your branch (
git push origin feature-branch
). - Open a pull request.
This project is open-source and available under the MIT License.