HTTP GET
Using modern computational technologies & methods we can simplify the
complexity of Vedic Astrology. For example, calculating planet strength (Bhava Bala)
used to take hours, now with computers we can calculate it in milliseconds.
And using databases & innovative programming methods, there is no need to remember
thousands of planetary combinations, allowing you to make accurate predictions
with little to no knowledge.
Our goal is to make Vedic Astrology easily accessible to anybody.
So that people can use it in their daily lives for their benefit.
Vedic Astrology in Sanskrit mean "Light". And that is exactly what it is.
It lights our future so we can change it.
And it lights our past, to understand our mistakes.
Anybody who has studied Vedic Astrology knows well how accurate it can be.
But also how complex it can get to make accurate predictions.
It takes decades of experience to be able make accurate prediction.
As such this knowledge only reaches a limited people.
This project is an effort to change that.
The first line of code for this project was written in late 2014 at ItΓ€-Pasila.
Back then it was a simple desktop software, with no UI and only text display.
With continued support from users, this project has steadily developed to what it is today.
Helping people from all over the world.
Thanks to B.V. Raman and his grandfather B. Suryanarain Rao. Information from their books is the source
material & inspiration for this project. Please buy their books to show your support.
Astronomical calculation was made possible by "SwissEphNet" & "SWISS EPHEMERIS".
Last but not least, we thank users like you who keep this project going.
@Ceeper00 @razukc @kristaps.bunts @Circuito
We're always looking for somebody to write docs, edit code, raise funds or help out in another ways.
You can also choose to get paid for your time spent improving VedAstro.
This development style celebrates the methodology of chaotic development at the benefit of low cost and fast paced prototyping.
Inspired by the concept of "Gonzo Journalism", pioneered by Hunter S. Thompson in the 1970s.
We favour this pattern for the development of VedAstro simply due to the volatile nature of this project.
Other development styles like "Waterfall" and "Scrum" are equally good when the need is.
We want to try out novel ideas at a heartbeat, we want the latest platform and we want it cheap.
So the "gonzo development" pattern is best for this needs.
The negative side effect is that there will be bugs forever. Because it's near impossible to constantly
change an ever-growing code base without having to constantly fix breaking changes.
To deal with this, we split the Web App into Beta and Stable.
Stable version will contain an old version of the App, while beta will always contain latest buildable code.
But the database will be shared between these. Meaning changes in Beta will seen in Stable as well.
The main part of the program is the prediction/event generator.
It works by combining logic on how to calculate a prediction with data about that prediction.
This is done everytime a "Calculate" button is clicked. Below you will see a brief explanation of this process.
This method was choosen to easily accommodate the thousands of astrological calculation possibilities.
CREATION OF AN EVENT/PREDICTION
STEP 1
Hard coded event data like name is stored in XML file.
A copy of the event name is stored as Enum to link
Calculator Methods with data from XML.
These static methods are the logic to check
if an event occured. No astro calculation done at this stage.
This is the linking process of the logic and data.
-------+
|
+-----------------+ |
| Event Data (xml)| |
+-----------------+ |
+ |
+------------------+ |
|Event Names (Enum)| +-----> Event Data (Instance)
+------------------+ |
+ |
+------------------+ |
|Calculator Methods| |
+------------------+ |
|
------+
STEP 2
From the above step, list of Event Data is generated.
Is occuring logic of each Event Data is called with time slices,
generated from a start time & end time (inputed at runtime).
An Event is created if IsOccuring is true.
This's a merger of Time and EventData to create an
Event at a specific time. This Event is then used
throughout the progam.
Event Data + Time Range
List List
|
|
|
v
Event List
+--------+ +------------------------+ +------------------+
| User | <------+ | Website | -------------> | API |
| | +------> | - Blazor WebAssembly | <------------- | -Azure Functions |
+--------+ GUI | - Azure Static WebApp | XML | |
| | | |
+------------------------+ +------------------+
all 3 independent, only linked in VS for easy access
don't commit local referenced .csproj to Git as it'll be used by CI/CD
These are randomly ordered notes on why a feature was implemented in a certain way.
Will prove usefull when debugging & upgrading code.
Shows only clean & nice html index for bots from best known SEs
for direct access Blazor page via static storage without 404 error
since no page acctually exists at page url, blazor takes url and runs the page as app
using rule engine this is possible
rules also make sure not to redirect file & api access only page access
- not begins with "/api/"
- has a path
- Sec-Fetch-Mode = navigate
- Sec-Fetch-Dest = document
web : vedastro.org -> domain registra -> azure DNS -> azure cdn -> web blob storage
api stable : api.vedastro.org -> domain registra -> azure DNS -> azure cdn -> stable api server (render)
api beta : beta.api.vedastro.org -> domain registra -> azure DNS -> azure cdn -> beta api server (azure)
domain cert managed by lets encyrpt acme bot azure func
via Azure CDN Rules Engine, this allows the use of api.vedastro.org/...
& api.vedastro.org/nlp/...
Since not documented by BV. Raman, code here is created through experimentation by
repeating relationship between Dasa planet & Bhukti planet.
Not all data regarding an event is hardwired. Generating gochara, antaram, sukshma and others is more effcient if description was created by Astronomical calculator
At the moment EventDataList.xml is the source of truth, meaning if an event exists in xml file, then it must exist in code.
The default timezone generated for all svg charts will be based on client timezone.
Timezone does not matter when full life charts are made, but will matter alot when
short term muhurtha charts are generated. Since most users are not living where they were born,
it is only logical to default it client browser's timezone.
This timezone must be visible/changeable to users who need to use otherwise.
Built on reference to, Hindu Predictive Astrology pg. 254
Asthavarga bindus are different from shadbala and it is to be implemented soon.
Asthavarga bindus are not yet account for, asthavarga good or bad nature of the planet.
It is assumed that Shadbala system can compensate for it.
This passage on page 255 needs to be clarified
"It must be noted that when passing through the first 10
degrees of a sign, Mars and the Sun produce results."
It's intepreted that Vendha is an obstruction and not a reversal of the Gochara results
So as for now the design is that if a vedha is present than the result is simply nullified.
In Horoscope predictions methods have "time" & "person" arguments available,
obvioulsy "time" is not needed, but for sake of semantic similarity
with Muhurtha methods this is maintained.
Option 1 : generate a high res image (svg/html) and zoom horitontally into it
- very fast
- image gets blurry
Option 2 : Regenerate whole component in Blazor
- very slow
- hard to implement with touch screen
Option 3 : Generate multiple preset zooms, than place them on top of each other,
and only make visible what is needed via selector
- complicated, needs documentation
- easy touch screen implimentation
- very fast
Thus Option 3 was choosen.