Build Your Own Astrology Website: Free Bookable Template
A free MIT template for astrologers, tarot readers and numerologists. Real birth charts, tarot, human design, booking and a blog. You own the code.
TL;DR
- You can build your own astrology website instead of renting one. Fork a free MIT template, edit a single file, publish in about an hour, and never touch code.
- It ships free birth chart, three card tarot, daily horoscope, compatibility score, life path number and human design bodygraph readings, plus booking, prices, testimonials, an FAQ and a blog.
- The readings are real calculations verified against NASA JPL Horizons, not paragraphs a language model made up. This is the one thing a rented page builder cannot give you, and it is what makes a stranger stay and come back.
- No database, no CMS, no monthly website fee. The site works before you add anything. Add a RoxyAPI key to switch the readings on.
- Get it at Spiritual Practitioner Website Template.
Most astrologers, tarot readers and human design practitioners never decide to rent their website. It just happens. You need a page, somebody suggests a hosted page builder, and eleven months later you are paying for it every month, you cannot change the parts that matter, and the free birth chart you wanted is a plugin nobody sells. If you have searched for how to build your own astrology website with birth charts and bookings, the honest answer in 2026 is that you no longer need a developer or a subscription to do it. You need a template you own, a booking link and a key. This guide covers what owning it changes, what free readings do for your practice that a page builder cannot, and the five browser steps that take a fork to a live, bookable site.
Why should a practitioner own the website instead of renting one?
Because ownership decides what you are allowed to become. A rented site is a licence to display pages on terms set by somebody else: they set the price next year, they decide which accounts get suspended, they decide what your page may say, and they decide which features exist at all. A template you own is a real codebase under an MIT licence. Fork it, rebrand it, extend it, sell what you build on it.
That difference is invisible on day one and decisive in year two. The practitioner who owns the code can add a members area, a course, a shop, a client portal, or turn the whole thing into a product other readers pay for. The practitioner who rents can file a feature request.
| Rented page builder | Template you own | |
|---|---|---|
| Who holds the code | The platform | You, MIT licensed |
| Monthly website fee | Yes, and it can rise | None for the site itself |
| Real birth chart, tarot or bodygraph | Not possible | Built in |
| Extend it into a product | Only what the platform sells | Anything you, a developer or an AI assistant can build |
| Can your account be switched off | Yes, by them | No |
| Can you sell what you build | No | Yes |
Ready to build this? The Spiritual Practitioner Website Template is free and MIT licensed, and the readings inside it run on the Roxy Astrology API. See pricing.
What can a page builder never do? Give a stranger a real reading
Compute. A page builder can show a photo, a price list and a booking button, and it can show a paragraph you typed. It cannot take a birth date, time and city from a visitor and return their actual natal wheel. That is the difference between a brochure and a reason to come back, and it is the growth engine most practitioner sites are missing.
A free reading is the exchange that turns an anonymous visitor into somebody who stays, sends your link to a friend, and books. This template ships seven of them, all running under your name, none asking for a signup or an email.
| The free reading | What the visitor does with it |
|---|---|
| Birth chart | Enters birth date, time and city, gets the full natal wheel: planets, houses, aspects |
| Three card tarot | Asks a real question, pulls past, present and direction, with a reading for each card |
| Daily horoscope | Picks a sign, gets a fresh reading. A reason to return tomorrow |
| Compatibility score | Compares two charts, gets a score and the breakdown behind it. The most shared page on most practitioner sites |
| Life path number | One date in, the number and its meaning out |
| Human design chart | Type, strategy and authority, then the full bodygraph |
| Card of the day | One tarot card on the home page, drawn fresh every morning |
Every result ends by inviting the visitor to book a session with you, while their chart is still on the screen.
How accurate are the readings on a free template?
They are the same calculations that back production astrology products, not decoration. Every planetary position the template renders is computed by Roxy Ephemeris and verified against NASA JPL Horizons, the reference the astronomy world uses. Nothing is generated by a language model, so no chart on your site can be quietly invented.
This matters more for you than for your visitor. A casual visitor cannot tell a correct chart from a broken one. A colleague can, in about thirty seconds, and so can the serious client who would have been your best booking. A site that puts a wrong ascendant under your name costs you the exact audience you most want. Verified calculation is the floor, not a feature.
How do you get a bookable site live in about an hour?
Five steps, all in your browser, no code. You can stop after step two and still have a real website at a real address. The readings and the booking calendar switch on later.
- Fork it. Open the template on GitHub and click Fork. GitHub makes a copy of every file, and that copy belongs to you. The fork is your website.
- Deploy it. Click the Vercel deploy button, connect the GitHub account, and skip the key prompt for now. About a minute later the site is live at an address you can share.
- Make it yours. Everything you change lives in one file,
src/config/site.config.ts. Edit it in the browser: your name, your title, your tagline, your services and prices, your testimonials, your FAQ, your social links. Change the words between the quote marks, click Commit, and the live site updates itself. Then replacepublic/portrait.jpgwith your photo and pick one of four colour palettes by changing one word:rosewater,eucalyptus,kilnormoonlit. The whole site follows, in light and dark mode. - Turn on the readings. Get a key at RoxyAPI pricing, paste it into Vercel as an environment variable named
ROXYAPI_KEY, and redeploy. One key covers all seven readings. Until you add it, the site still works perfectly: the readings simply say they are not connected yet. - Take bookings and messages. Create a free Cal.com or Calendly event, paste the link into the config, and your booking page shows a real calendar. Create a free Web3Forms key, paste it in, and contact messages land in your inbox. The site itself never stores anything.
Blog posts are plain files in content/blog/. Add a file, write, commit, and the post appears with its index entry, sitemap entry and social card generated for it. Three example posts ship with the template.
The Vercel free Hobby plan is for personal, non-commercial use. If you are selling readings through the site, move to their paid plan or host it anywhere else that runs Next.js. That is a rule set by Vercel, not by this template or by RoxyAPI.
What does it actually cost to run?
The website is free and the code is yours. What you pay for is the calculation behind the readings, plus a hosting plan if you are selling. None of it is a website subscription, and none of it can be raised on you by a platform that owns your pages.
| What | Cost |
|---|---|
| The template itself | Free, MIT licensed, yours to rebrand and sell |
| GitHub | Free |
| Hosting | Free on a personal plan, paid plan required if you sell through the site |
| Booking, Cal.com or Calendly | Free plan |
| Contact form, Web3Forms | Free plan |
| Domain name | Optional, bought anywhere |
| The free readings | One RoxyAPI key. One reading equals one request |
One key covers every domain in the template, and every other domain RoxyAPI ships, with no per product fee and no per token cost. The daily card on the home page is cached, so it costs a handful of requests a day no matter how much traffic you get.
How are the readings wired, for a developer or an AI assistant?
Through server side calls to RoxyAPI, one endpoint per reading, with the key never reaching the browser. Any city input resolves first through location search, so a visitor never types coordinates or guesses a timezone. This is the whole contract, and it is the part you or an assistant can extend.
curl -s "https://roxyapi.com/api/v2/location/search?q=Lisbon&limit=1" \
-H "X-API-Key: YOUR_API_KEY"
{
"total": 38,
"limit": 1,
"offset": 0,
"cities": [
{
"city": "Lisbon",
"province": "Lisbon",
"country": "Portugal",
"iso2": "PT",
"latitude": 38.71667,
"longitude": -9.13333,
"timezone": "Europe/Lisbon",
"utcOffset": 1,
"population": 517802
}
]
}
Take latitude, longitude and timezone from cities[0] and feed them straight into the chart call. Passing the IANA name rather than a fixed offset is what keeps a chart correct across a daylight saving boundary in the year somebody was born.
curl -X POST https://roxyapi.com/api/v2/astrology/natal-chart \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date": "1990-07-15",
"time": "14:30:00",
"latitude": 38.71667,
"longitude": -9.13333,
"timezone": "Europe/Lisbon"
}'
Captured from that live call, trimmed:
{
"planets": [
{
"name": "Sun",
"sign": "Cancer",
"degree": 22.81,
"house": 9,
"isRetrograde": false
}
],
"ascendant": { "sign": "Libra", "degree": 29.39 },
"midheaven": { "sign": "Leo", "degree": 4.18 },
"summary": {
"dominantElement": "Water",
"dominantModality": "Cardinal",
"elementDistribution": { "Fire": 3, "Earth": 4, "Air": 2, "Water": 5 }
}
}
Every reading page maps to one documented endpoint. Full schemas in the API reference.
| Reading page | Endpoint |
|---|---|
| Birth chart | POST /astrology/natal-chart |
| Daily horoscope | GET /astrology/horoscope/{sign}/daily |
| Compatibility | POST /astrology/compatibility-score |
| Three card tarot | POST /tarot/spreads/three-card |
| Life path | POST /numerology/life-path |
| Human design | POST /human-design/type, then POST /human-design/bodygraph |
| Card of the day | POST /tarot/daily |
The template calls these through the typed SDK and renders them with drop in components, so a reading is a form, one call and one component. Adding an eighth reading is the same three lines against any of the other insight domains.
FAQ
Do I need to know how to code to build my own astrology website?
No. The five steps above happen entirely in a browser, and the only file you edit is a plain list of your own details: your name, your prices, your testimonials, your FAQ. The practitioner website template is designed so a standard fork needs zero code changes, and any developer or AI assistant can take it further later.
Should I use a hosted page builder like Squarespace or Wix for a tarot or astrology business?
Only if you are happy renting. The monthly fee, the feature set and the account itself stay under the control of somebody else, and no page builder can compute a birth chart, a tarot spread or a human design bodygraph for a visitor. If free readings are how strangers find you, own the code instead. The RoxyAPI practitioner template is MIT licensed, ships those readings, and has no website subscription attached to it.
Can I add a free birth chart calculator to a website I already have?
Yes. If you do not want to move, keep your site and call the Roxy Astrology API from it. There is a WordPress plugin, drop in UI components at /ui, and typed SDKs, so the chart itself is not the hard part. The template is for practitioners who would rather own the whole site.
Is the template really free, and can I sell what I build with it?
Yes to both. It is MIT licensed, which means you can fork it, rebrand it, charge for it, and build a business on it with no permission and no revenue share. The website costs nothing to run beyond hosting. The free readings need a RoxyAPI key, and one key covers every reading in the template. More templates to fork: /starters.
Do my visitors need to sign up to get a free reading?
No. No signup, no email wall, nothing stored. Birth details are sent to the readings API at the moment the visitor asks for a chart and kept by nobody, because the site has no database to keep them in. That is the point: the visitor gets something real, and then they see your booking button.
What happens if I do not add an API key?
The whole site works: every page, the booking calendar, the blog, the contact form, your prices. Only the free readings say they are not connected yet, and they come alive the moment you add the key and redeploy. You can publish first and switch the readings on later.
Can I remove a reading I do not offer, like human design?
Yes. Set it to false in the config file and it disappears completely: from the page, from the navigation, from the footer, and from what Google sees. The same switch works the other way when you want to add one back.
Conclusion
A serious practice deserves a website nobody else can price up, switch off, or hold back. Fork the Spiritual Practitioner Website Template, publish it in an hour, and give your visitors a real birth chart under your name. The readings run on the Roxy Astrology API, verified against NASA JPL Horizons. See pricing, or look through everything the template ships with on the template page first.