The intersection of traditional knowledge and modern technology has always been fascinating. In the world of Vedic astrology, this intersection is currently being revolutionized by Artificial Intelligence. But for frontend developers, integrating complex logic like planetary calculations and predictive analytics can be a nightmare.
You don't want to build a physics engine to calculate the position of Jupiter in the sign of Cancer based on a user's birth time and location. You want to focus on the UI and the user experience.
This is where Vedika comes in. Vedika is an AI-powered Vedic astrology API that abstracts away the complexity. It takes simple inputs—like a question and birth details—and returns AI-generated insights.
In this tutorial, we will build a sleek, functional React application that queries the Vedika API to generate personalized astrological readings.
Prerequisites
Before we dive in, ensure you have the following:
- Node.js installed on your machine.
- Basic knowledge of React and hooks (
useState,useEffect). - An API key from the Vedika Sandbox (it's free and requires no credit card).
Step 1: Project Initialization
Let's kick things off by setting up a standard React project using Vite. It’s faster and more modern than Create React App.
Open your terminal and run:
npm create vite@latest vedika-dashboard -- --template react
cd vedika-dashboard
npm install
npm run dev
Now, let's focus on the logic. We need a dedicated file to handle our API communication.
Step 2: The API Client
The Vedika API is simple: a single POST endpoint at /api/v1/astrology/query.
We need to construct the request body carefully. Based on the Vedika documentation, the input expects a question string and a birthDetails object containing datetime, lat, and lng.
Create a new file named vedikaService.js in your src folder:
// src/vedikaService.js
const SANDBOX_URL = 'https://api.vedika.io/api/v1/astrology/query';
export const queryVedika = async (question, birthDetails) => {
try {
const response = await fetch(SANDBOX_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// In production, you would use a real API key here
// 'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
question: question,
birthDetails: {
datetime: birthDetails.datetime, // Format: YYYY-MM-DDTHH:mm
lat: birthDetails.lat,
lng: birthDetails.lng
}
})
});
if (!response.ok) {
throw new Error(`API Error: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Vedika API Error:', error);
throw error;
}
};
Pro Tip: Notice that we are using the SANDBOX_URL. The documentation states that the sandbox
Top comments (0)